I understand the reasoning for having the default copy() method on a data class be a shallow copy.
But it would be really stellar to have it also generate a deepCopy() method.
There would have to be some restrictions, such as all children must either be primitives, or data classes them selves (or at least implement cloneable), since every member, and every member of every member, would have to also have a deep copy method.
But man, when you need a deep copy, you need a deep copy, and implementing it your self is always terrible and error prone.