Returns a shallow copy of the receiver (the instance variables are not copied). The shallow copy receives the message postCopy and the result of postCopy is passed back.
Returns a deep copy of the receiver (the instance variables are copies of the receiver’s instance variables)
Performs any changes required to do on a copied object. This is the place where one could, for example, put code to replace objects with copies of the objects