public static BinaryOperationExpression bind(final BinaryOperationExpression segment, final SegmentType parentSegmentType, final SQLStatementBinderContext binderContext,
                                                 final Map<String, TableSegmentBinderContext> tableBinderContexts, final Map<String, TableSegmentBinderContext> outerTableBinderContexts) {
        ExpressionSegment boundLeft = ExpressionSegmentBinder.bind(segment.getLeft(), parentSegmentType, binderContext, tableBinderContexts, outerTableBinderContexts);
        ExpressionSegment boundRight = ExpressionSegmentBinder.bind(segment.getRight(), parentSegmentType, binderContext, tableBinderContexts, outerTableBinderContexts);
        return new BinaryOperationExpression(segment.getStartIndex(), segment.getStopIndex(), boundLeft, boundRight, segment.getOperator(), segment.getText());
    }
@Test
    void assertBinaryOperationExpression() {
        BinaryOperationExpression binaryOperationExpression = new BinaryOperationExpression(0, 0,
                new LiteralExpressionSegment(0, 0, "test"),
                new LiteralExpressionSegment(0, 0, "test"), "=", "test");
        SQLStatementBinderContext binderContext = mock(SQLStatementBinderContext.class);
        BinaryOperationExpression actual = BinaryOperationExpressionBinder.bind(binaryOperationExpression, SegmentType.PROJECTION,
                binderContext, Collections.emptyMap(), Collections.emptyMap());
        assertThat(actual.getLeft().getText(), is("test"));
        assertThat(actual.getRight().getText(), is("test"));
        assertThat(actual.getOperator(), is("="));
        assertThat(actual.getText(), is("test"));
    }