public Predicate convert(ScalarOperator operator) {
        if (operator == null) {
            return null;
        }
        return operator.accept(this, null);
    }
@Test
    public void testOr() {
        BinaryPredicateOperator op1 = new BinaryPredicateOperator(
                BinaryType.GE, F0, ConstantOperator.createInt(44));
        BinaryPredicateOperator op2 = new BinaryPredicateOperator(
                BinaryType.LE, F0, ConstantOperator.createInt(22));
        ScalarOperator op = new CompoundPredicateOperator(CompoundPredicateOperator.CompoundType.OR, op1, op2);
        Predicate result = CONVERTER.convert(op);
        Assert.assertTrue(result instanceof CompoundPredicate);
        CompoundPredicate compoundPredicate = (CompoundPredicate) result;
        Assert.assertTrue(compoundPredicate.function() instanceof Or);
        Assert.assertEquals(2, compoundPredicate.children().size());

        Assert.assertTrue(compoundPredicate.children().get(0) instanceof LeafPredicate);
        LeafPredicate p1 = (LeafPredicate) compoundPredicate.children().get(0);
        Assert.assertTrue(p1.function() instanceof GreaterOrEqual);
        Assert.assertEquals(44, p1.literals().get(0));

        Assert.assertTrue(compoundPredicate.children().get(1) instanceof LeafPredicate);
        LeafPredicate p2 = (LeafPredicate) compoundPredicate.children().get(1);
        Assert.assertTrue(p2.function() instanceof LessOrEqual);
        Assert.assertEquals(22, p2.literals().get(0));
    }