public Predicate convert(ScalarOperator operator) {
        if (operator == null) {
            return null;
        }
        return operator.accept(this, null);
    }
@Test
    public void testIn() {
        List<ScalarOperator> inOp = Lists.newArrayList();
        inOp.add(F0);
        inOp.add(ConstantOperator.createInt(11));
        inOp.add(ConstantOperator.createInt(22));
        inOp.add(ConstantOperator.createInt(333));
        InPredicateOperator op = new InPredicateOperator(false, inOp);
        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 CompoundPredicate);
        CompoundPredicate child1 = (CompoundPredicate) compoundPredicate.children().get(0);

        Assert.assertEquals(2, child1.children().size());
        LeafPredicate child11 = (LeafPredicate) child1.children().get(0);
        Assert.assertTrue(child11.function() instanceof  Equal);
        Assert.assertEquals(1, child11.literals().size());
        Assert.assertEquals(11, child11.literals().get(0));

        LeafPredicate child12 = (LeafPredicate) child1.children().get(1);
        Assert.assertTrue(child12.function() instanceof  Equal);
        Assert.assertEquals(1, child12.literals().size());
        Assert.assertEquals(22, child12.literals().get(0));

        Assert.assertTrue(compoundPredicate.children().get(1) instanceof LeafPredicate);
        LeafPredicate child2 = (LeafPredicate) compoundPredicate.children().get(1);
        Assert.assertTrue(child2.function() instanceof Equal);
        Assert.assertEquals(1, child2.literals().size());
        Assert.assertEquals(333, child2.literals().get(0));
    }