Techniques are disclosed for concurrently maintaining serialized objects
that were created from more than one version of a class definition.
According to preferred embodiments, a component maps and enforces
multiple valid stream-unique version identifiers ("SUIDs") for a
collection of class definitions (such as the classes of a software
product that is undergoing change from one version to another). This
component programmatically detects when an object's SUID value does not
match the code attempting to deserialize the object, and then
programmatically determines whether the object is compatible with the
code even though the SUID values do not match. Preferably, this
determination is made by consulting a stored mapping, in which the SUIDs
of compatible versions have been recorded.