When a new serialization stream is created, there is a set of predefined object types. This set differs with the revision of the serialization system, but later versions will always contain all of the predefined types of earlier versions. There may be different branches of versioning which have disjoint sets of predefined types. For example, there may be a version sequence designed to be used when reading in parse trees that has all of the parse tree object types predefined. Another version sequence could have a set of object types which are commonly sent across a network communications connection predefined.
All of the primitive types are always predefined. These are listed here along with links to the descriptions of their special encoding formats.
Note: there are two predefined primitive types which do not decode into a specific object type. BACK_REFERENCE encodes a reference to an object whose serialization begins earlier in the stream. NEW_TYPE adds a type onto the list of types available for this serialization stream (after all of the predefined types).