public static OptExpression bind(Pattern pattern, GroupExpression groupExpression) {
        Binder binder = new Binder(pattern, groupExpression);
        return binder.next();
    }
@Test
    public void testBinder3() {
        OptExpression expr = OptExpression.create(new MockOperator(OperatorType.LOGICAL_OLAP_SCAN),
                new OptExpression(new MockOperator(OperatorType.LOGICAL_JOIN)),
                new OptExpression(new MockOperator(OperatorType.LOGICAL_OLAP_SCAN)));

        Pattern pattern = Pattern.create(OperatorType.PATTERN_LEAF)
                .addChildren(Pattern.create(OperatorType.LOGICAL_JOIN))
                .addChildren(Pattern.create(OperatorType.PATTERN_LEAF));

        Memo memo = new Memo();
        OptExpression result = Binder.bind(pattern, memo.init(expr));

        assertEquals(OperatorType.LOGICAL_OLAP_SCAN, result.getOp().getOpType());
        assertEquals(OperatorType.LOGICAL_JOIN, result.inputAt(0).getOp().getOpType());
        assertEquals(OperatorType.LOGICAL_OLAP_SCAN, result.inputAt(1).getOp().getOpType());
    }