Method to initialise the SCO for use, and allowing the SCO to be loaded from the datastore (when we have a backing store).
This can be utilised to perform any eager loading of information from the datastore.
Method to initialise the SCO for use, where replacing an old value with a new value such as when calling a setter field
passing in a new value. Note that oldValue is marked as Object since for cases where the member type is Collection the
newValue could be, for example, ArrayList, and the oldValue of type Collection (representing null).
Mutable second-class Objects are required to provide a public clone method in order to allow for copying persistable objects.
In contrast to Object.clone(), this method must not throw a CloneNotSupportedException.
The writeReplace method is called when ObjectOutputStream is preparing to write the object to the stream.
The ObjectOutputStream checks whether the class defines the writeReplace method. If the method is defined,
the writeReplace method is called to allow the object to designate its replacement in the stream. The object
returned should be either of the same type as the object passed in or an object that when read and resolved
will result in an object of a type that is compatible with all references to the object.