copy
Creates and returns a copy of the current object.
This method should produce a new instance that is functionally equivalent to the current object but independent in terms of state modifications. The copy should be deep enough to prevent shared mutable state between the original and the copy.
Return
A new instance of type SOURCE that represents a copy of this object. The returned object should be of the same type as the implementing class.