public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            SQLiteMultiSelectStatement dst = obj as SQLiteMultiSelectStatement;

            if (dst == null)
            {
                return(false);
            }

            if (!RefCompare.CompareMany(_first, dst._first, _next, dst._next))
            {
                return(false);
            }

            if (_op != dst._op)
            {
                return(false);
            }

            return(base.Equals(obj));
        }
        public override object Clone()
        {
            SQLiteSelectStatement first = null;

            if (_first != null)
            {
                first = (SQLiteSelectStatement)_first.Clone();
            }
            SQLiteSelectStatement next = null;

            if (_next != null)
            {
                next = (SQLiteSelectStatement)_next.Clone();
            }

            SQLiteMultiSelectStatement res = new SQLiteMultiSelectStatement();

            res._first = first;
            res._op    = _op;
            res._next  = next;
            return(res);
        }