The object is initially passive, and is stored in the object store as an instance of the class
OutputObjectState.
When required by an application, the object is automatically activated by reading it from the store
using a read_committed operation and is then converted from an
InputObjectState instance into a fully-fledged object by the
restore_state operation of the object.
When the application has finished with the object, it is deactivated by converting it back into an
OutputObjectState instance using the save_state
operation, and is then stored back into the object store as a shadow copy using
write_uncommitted. This shadow copy can be committed, overwriting the previous
version, using the commit_state operation. The existence of shadow copies is
normally hidden from the programmer by the transaction system. Object deactivation normally only occurs
when the top-level transaction within which the object was activated commits