Used to implement update and commit. Takes care of object references and cycles.
Update is usually event-driven; here are only tools to correctly create the objects layout (see
read_from_stream and update_from_stream).
Commit is, on the other hand, a method template with a few deferred methods (see write_to_stream).
Vocabulary:
layout: the description of the contents of an object (its layout). This object is referenced
by a reference (see below).
reference: a reference to an object. Note that the layout of the object MUST have been defined before
any reference links to it. A special 'Void' ref indicates a Void object.
embedded: a user-defined expanded object (i.e. not one of the basic objects)
basic: a special expanded object, with a simple value, specially treated by the compiler and by this
class. Basic types are INTEGER and co., READ and co., CHARACTER and BOOLEAN.
array: a NATIVE_ARRAY of objects. The type is, in that particular case, the type of the items.