public QueryBuilders.QueryBuilder convert(Expr conjunct) {
        return visit(conjunct);
    }
@Test
    public void testTranslateCompoundPredicate() {
        SlotRef col1SlotRef = mockSlotRef("col1", Type.INT);
        IntLiteral intLiteral1 = new IntLiteral(100);
        SlotRef col2SlotRef = mockSlotRef("col2", Type.INT);

        IntLiteral intLiteral2 = new IntLiteral(200);
        BinaryPredicate bp1 = new BinaryPredicate(BinaryType.EQ, col1SlotRef, intLiteral1);
        BinaryPredicate bp2 = new BinaryPredicate(BinaryType.GT, col2SlotRef, intLiteral2);
        CompoundPredicate andPredicate =
                new CompoundPredicate(CompoundPredicate.Operator.AND, bp1, bp2);
        Assert.assertEquals("{\"bool\":{\"must\":[{\"term\":{\"col1\":100}},{\"range\":{\"col2\":{\"gt\":200}}}]}}",
                queryConverter.convert(andPredicate).toString());

        CompoundPredicate orPredicate =
                new CompoundPredicate(CompoundPredicate.Operator.OR, bp1, bp2);
        Assert.assertEquals("{\"bool\":{\"should\":[{\"term\":{\"col1\":100}},{\"range\":{\"col2\":{\"gt\":200}}}]}}",
                queryConverter.convert(orPredicate).toString());

        CompoundPredicate notPredicate = new CompoundPredicate(CompoundPredicate.Operator.NOT, bp2, null);
        Assert.assertEquals("{\"bool\":{\"must_not\":{\"range\":{\"col2\":{\"gt\":200}}}}}",
                queryConverter.convert(notPredicate).toString());
    }