public override ICloneableElement Clone(Dictionary <ICloneableElement, ICloneableElement> objectTree, Predicate <ICloneableElement> doClone)
        {
            var clone = new SqlSelectStatement();

            if (SelectQuery != null)
            {
                clone.SelectQuery = (SelectQuery)SelectQuery.Clone(objectTree, doClone);
            }

            if (With != null)
            {
                clone.With = (SqlWithClause)With.Clone(objectTree, doClone);
            }

            objectTree.Add(this, clone);

            return(clone);
        }