Support classes for serializing and unserializing object graphs.
Important insights due to Arturo Bejar.