Returns a deep copy, retaining the uuid if and only if retainUuid is true.
true
Fields annotated with Transient are shallow-copied.
utility function for subclasses that want to implement deepCopy