public override CodeGroup Copy () { ApplicationDefaultCodeGroup copy = new ApplicationDefaultCodeGroup (MembershipCondition); foreach (CodeGroup child in Children) { copy.AddChild (child.Copy ()); // deep copy } return copy; }