public static WhereSegment bind(final WhereSegment segment, final SQLStatementBinderContext binderContext,
                                    final Map<String, TableSegmentBinderContext> tableBinderContexts, final Map<String, TableSegmentBinderContext> outerTableBinderContexts) {
        return new WhereSegment(segment.getStartIndex(), segment.getStopIndex(),
                ExpressionSegmentBinder.bind(segment.getExpr(), SegmentType.PREDICATE, binderContext, tableBinderContexts, outerTableBinderContexts));
    }
@Test
    void assertBind() {
        SQLStatementBinderContext sqlStatementBinderContext = mock(SQLStatementBinderContext.class);
        WhereSegment expectedWhereSegment = new WhereSegment(1, 2, mock(ExpressionSegment.class));
        Map<String, TableSegmentBinderContext> tableBinderContexts = new HashMap<>();
        Map<String, TableSegmentBinderContext> outerTableBinderContexts = new HashMap<>();
        WhereSegment actualWhereSegment = WhereSegmentBinder.bind(expectedWhereSegment, sqlStatementBinderContext, tableBinderContexts, outerTableBinderContexts);
        assertThat(actualWhereSegment.getStopIndex(), is(expectedWhereSegment.getStopIndex()));
        assertThat(actualWhereSegment.getStartIndex(), is(expectedWhereSegment.getStartIndex()));
        assertThat(actualWhereSegment.getExpr(), is(expectedWhereSegment.getExpr()));
    }