protected void CopyBase(BaseMapObject copy, UniqueNumberGenerator numberGenerator)
 {
     copy.IsSelected = IsSelected;
     copy.Data       = Data.Copy(numberGenerator);
     foreach (var child in Hierarchy)
     {
         var c = (IMapObject)child.Copy(numberGenerator);
         c.Hierarchy.Parent = copy;
     }
     copy.DescendantsChanged();
 }
 protected void CloneBase(BaseMapObject copy)
 {
     copy.IsSelected = IsSelected;
     copy.Data       = Data.Clone();
     foreach (var child in Hierarchy)
     {
         var c = (IMapObject)child.Clone();
         c.Hierarchy.Parent = copy;
     }
     copy.DescendantsChanged();
 }