public virtual object Clone()
        {
            SQLiteExpression when = null;

            if (_when != null)
            {
                when = (SQLiteExpression)_when.Clone();
            }
            SQLiteExpression then = null;

            if (_then != null)
            {
                then = (SQLiteExpression)_then.Clone();
            }

            SQLiteCaseItem res = new SQLiteCaseItem();

            res._when = when;
            res._then = then;
            return(res);
        }
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            SQLiteCaseItem dst = obj as SQLiteCaseItem;

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

            if (!RefCompare.CompareMany(_when, dst._when, _then, dst._then))
            {
                return(false);
            }

            return(base.Equals(obj));
        }