public virtual object Clone() { BuilderDirectory dir = new BuilderDirectory(m_strName, m_Parent, m_Removable); foreach (IBuilder builder in SubList) { dir.SubList.Add(builder.Clone() as BuilderDirectory); } foreach (IBuilder builder in LayerBuilders) { dir.LayerBuilders.Add(builder.Clone() as LayerBuilder); } return dir; }