I\'ve found numerous solutions here at SO and elsewere that deal with deep clone of object via serialization/deserialization (into memory and back).
It requires that
Json serialization and deserialization should work, it doesn't require the classes to have serialize annotation.
public static T DeepCopy(this T source) { return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(source)); }