public static T Clone <T>(this ICloneable <T> item) where T : ICloneable <T>, new() { var newItem = new T(); item.CopyTo(ref newItem); return(newItem); }