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

            SQLiteCreateTriggerStatement dst = obj as SQLiteCreateTriggerStatement;

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

            if (this._isTemp != dst._isTemp ||
                this._ifNotExists != dst._ifNotExists ||
                this._triggerTime != dst._triggerTime ||
                this._foreachClause != dst._foreachClause)
            {
                return(false);
            }

            if (!RefCompare.CompareMany(_triggerEventClause, dst._triggerEventClause,
                                        _table, dst._table, _whenExpr, dst._whenExpr))
            {
                return(false);
            }
            if (!RefCompare.CompareList <SQLiteStatement>(_slist, dst._slist))
            {
                return(false);
            }

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

            if (_triggerEventClause != null)
            {
                triggerEventClause = (SQLiteTriggerEventClause)_triggerEventClause.Clone();
            }
            SQLiteObjectName table = null;

            if (_table != null)
            {
                table = (SQLiteObjectName)_table.Clone();
            }
            SQLiteExpression whenExpr = null;

            if (_whenExpr != null)
            {
                whenExpr = (SQLiteExpression)_whenExpr.Clone();
            }
            List <SQLiteStatement> slist = null;

            if (_slist != null)
            {
                slist = new List <SQLiteStatement>();
                foreach (SQLiteStatement s in _slist)
                {
                    slist.Add((SQLiteStatement)s.Clone());
                }
            }
            SQLiteObjectName name = null;

            if (this.ObjectName != null)
            {
                name = (SQLiteObjectName)this.ObjectName.Clone();
            }

            SQLiteCreateTriggerStatement res = new SQLiteCreateTriggerStatement(name);

            res._foreachClause      = _foreachClause;
            res._ifNotExists        = _ifNotExists;
            res._isTemp             = _isTemp;
            res._slist              = slist;
            res._table              = table;
            res._triggerEventClause = triggerEventClause;
            res._triggerTime        = _triggerTime;
            res._whenExpr           = whenExpr;
            return(res);
        }