internal override object Clone(SqlNodeCloneContext context)
        {
            if (context.NodeMapping.ContainsKey(this))
            {
                return(context.NodeMapping[this]);
            }

            SqlDelete clone = new SqlDelete();

            if (Delete != null)
            {
                clone.Delete = (SqlTableRef)Delete.Clone(context);
            }
            if (from != null)
            {
                clone.From = (SqlQueryRef)from.Clone(context);
            }
            if (!where.IsNullReference())
            {
                clone.Where = (SqlExpression) where.Clone(context);
            }

            if (Hints.Count > 0)
            {
                foreach (SqlHint hint in Hints)
                {
                    clone.Hints.Add((SqlHint)hint.Clone(context));
                }
            }

            context.NodeMapping[this] = clone;
            return(clone);
        }