public static ICloneCollection <IVegetable> CloneObjects <T>(this ICloneCollection <T> source) where T : ICloneable { var copy = (ICloneCollection <IVegetable>)source.Clone(); var tt = copy.ToArray(); copy.InitializeClone(tt); return(copy); }