public virtual object Clone() { TreeNode nod = tree != null?tree.CreateNode() : new TreeNode(); foreach (DictionaryEntry e in ViewState) { nod.ViewState [(string)e.Key] = ((StateItem)e.Value).Value; } foreach (TreeNode c in ChildNodes) { nod.ChildNodes.Add((TreeNode)c.Clone()); } return(nod); }