public QueryBuilders.QueryBuilder convert(Expr conjunct) {
        return visit(conjunct);
    }
@Test
    public void testTranslateRangePredicate() {
        SlotRef valueSlotRef = mockSlotRef("value", Type.INT);
        IntLiteral intLiteral = new IntLiteral(1000);
        Expr leExpr = new BinaryPredicate(BinaryType.LE, valueSlotRef, intLiteral);
        Expr ltExpr = new BinaryPredicate(BinaryType.LT, valueSlotRef, intLiteral);
        Expr geExpr = new BinaryPredicate(BinaryType.GE, valueSlotRef, intLiteral);
        Expr gtExpr = new BinaryPredicate(BinaryType.GT, valueSlotRef, intLiteral);

        Expr eqExpr = new BinaryPredicate(BinaryType.EQ, valueSlotRef, intLiteral);
        Expr neExpr = new BinaryPredicate(BinaryType.NE, valueSlotRef, intLiteral);
        Assert.assertEquals("{\"range\":{\"value\":{\"lt\":1000}}}",
                queryConverter.convert(ltExpr).toString());
        Assert.assertEquals("{\"range\":{\"value\":{\"lte\":1000}}}",
                queryConverter.convert(leExpr).toString());
        Assert.assertEquals("{\"range\":{\"value\":{\"gt\":1000}}}",
                queryConverter.convert(gtExpr).toString());
        Assert.assertEquals("{\"range\":{\"value\":{\"gte\":1000}}}",
                queryConverter.convert(geExpr).toString());
        Assert.assertEquals("{\"term\":{\"value\":1000}}", queryConverter.convert(eqExpr).toString());
        Assert.assertEquals("{\"bool\":{\"must_not\":{\"term\":{\"value\":1000}}}}",
                queryConverter.convert(neExpr).toString());
    }