protected InExpression UpdateIn(InExpression @in, Expression expression, SelectExpression select, IEnumerable <Expression> values)
 {
     if (expression != @in.Expression || select != @in.Select || values != @in.Values)
     {
         if (select != null)
         {
             return(new InExpression(expression, select));
         }
         else
         {
             return(new InExpression(expression, values));
         }
     }
     return(@in);
 }
 protected virtual bool CompareIn(InExpression a, InExpression b)
 {
     return(this.Compare(a.Expression, b.Expression) &&
            this.Compare(a.Select, b.Select) &&
            this.CompareExpressionList(a.Values, b.Values));
 }