public SearchArgument.Builder @in(string column, PredicateLeaf.Type type, params object[] literal)
            {
                ExpressionTree parent = currentTree.Peek();

                if (column == null || literal == null)
                {
                    parent.getChildren().Add(new ExpressionTree(TruthValue.YES_NO_NULL));
                }
                else
                {
                    if (literal.Length == 0)
                    {
                        throw new ArgumentException("Can't create in expression with "
                                                    + "no arguments");
                    }
                    List <object> argList = new List <object>();
                    argList.AddRange(literal.ToList());

                    PredicateLeaf leaf =
                        new PredicateLeafImpl(PredicateLeaf.Operator.IN,
                                              type, column, null, argList);
                    parent.getChildren().Add(new ExpressionTree(addLeaf(leaf)));
                }
                return(this);
            }
            public SearchArgument.Builder isNull(string column, PredicateLeaf.Type type)
            {
                ExpressionTree parent = currentTree.Peek();

                if (column == null)
                {
                    parent.getChildren().Add(new ExpressionTree(TruthValue.YES_NO_NULL));
                }
                else
                {
                    PredicateLeaf leaf =
                        new PredicateLeafImpl(PredicateLeaf.Operator.IS_NULL,
                                              type, column, null, null);
                    parent.getChildren().Add(new ExpressionTree(addLeaf(leaf)));
                }
                return(this);
            }
            public SearchArgument.Builder nullSafeEquals(string column, PredicateLeaf.Type type, object literal)
            {
                ExpressionTree parent = currentTree.Peek();

                if (column == null || literal == null)
                {
                    parent.getChildren().Add(new ExpressionTree(TruthValue.YES_NO_NULL));
                }
                else
                {
                    PredicateLeaf leaf =
                        new PredicateLeafImpl(PredicateLeaf.Operator.NULL_SAFE_EQUALS,
                                              type, column, literal, null);
                    parent.getChildren().Add(new ExpressionTree(addLeaf(leaf)));
                }
                return(this);
            }
            public SearchArgument.Builder between(string column, PredicateLeaf.Type type, object lower, object upper)
            {
                ExpressionTree parent = currentTree.Peek();

                if (column == null || lower == null || upper == null)
                {
                    parent.getChildren().Add(new ExpressionTree(TruthValue.YES_NO_NULL));
                }
                else
                {
                    List <object> argList = new List <object>();
                    argList.Add(lower);
                    argList.Add(upper);
                    PredicateLeaf leaf =
                        new PredicateLeafImpl(PredicateLeaf.Operator.BETWEEN,
                                              type, column, null, argList);
                    parent.getChildren().Add(new ExpressionTree(addLeaf(leaf)));
                }
                return(this);
            }
 public override bool Equals(object other)
 {
     if (other == null || other.GetType() != GetType())
     {
         return(false);
     }
     else if (other == this)
     {
         return(true);
     }
     else
     {
         PredicateLeafImpl o = (PredicateLeafImpl)other;
         return(@operator == o.@operator &&
                type == o.type &&
                columnName.Equals(o.columnName) &&
                isEqual(literal, o.literal) &&
                isEqual(literalList, o.literalList));
     }
 }
 public SearchArgument.Builder nullSafeEquals(string column, PredicateLeaf.Type type, object literal)
 {
     ExpressionTree parent = currentTree.Peek();
     if (column == null || literal == null)
     {
         parent.getChildren().Add(new ExpressionTree(TruthValue.YES_NO_NULL));
     }
     else
     {
         PredicateLeaf leaf =
             new PredicateLeafImpl(PredicateLeaf.Operator.NULL_SAFE_EQUALS,
                 type, column, literal, null);
         parent.getChildren().Add(new ExpressionTree(addLeaf(leaf)));
     }
     return this;
 }
 public SearchArgument.Builder isNull(string column, PredicateLeaf.Type type)
 {
     ExpressionTree parent = currentTree.Peek();
     if (column == null)
     {
         parent.getChildren().Add(new ExpressionTree(TruthValue.YES_NO_NULL));
     }
     else
     {
         PredicateLeaf leaf =
             new PredicateLeafImpl(PredicateLeaf.Operator.IS_NULL,
                 type, column, null, null);
         parent.getChildren().Add(new ExpressionTree(addLeaf(leaf)));
     }
     return this;
 }
 public SearchArgument.Builder between(string column, PredicateLeaf.Type type, object lower, object upper)
 {
     ExpressionTree parent = currentTree.Peek();
     if (column == null || lower == null || upper == null)
     {
         parent.getChildren().Add(new ExpressionTree(TruthValue.YES_NO_NULL));
     }
     else
     {
         List<object> argList = new List<object>();
         argList.Add(lower);
         argList.Add(upper);
         PredicateLeaf leaf =
             new PredicateLeafImpl(PredicateLeaf.Operator.BETWEEN,
                 type, column, null, argList);
         parent.getChildren().Add(new ExpressionTree(addLeaf(leaf)));
     }
     return this;
 }
            public SearchArgument.Builder @in(string column, PredicateLeaf.Type type, params object[] literal)
            {
                ExpressionTree parent = currentTree.Peek();
                if (column == null || literal == null)
                {
                    parent.getChildren().Add(new ExpressionTree(TruthValue.YES_NO_NULL));
                }
                else
                {
                    if (literal.Length == 0)
                    {
                        throw new ArgumentException("Can't create in expression with "
                            + "no arguments");
                    }
                    List<object> argList = new List<object>();
                    argList.AddRange(literal.ToList());

                    PredicateLeaf leaf =
                        new PredicateLeafImpl(PredicateLeaf.Operator.IN,
                            type, column, null, argList);
                    parent.getChildren().Add(new ExpressionTree(addLeaf(leaf)));
                }
                return this;
            }