I ran into this NPE issue caused by the circular relationshp between a ManagedObject and ManagedProperty. In order to fix it the serialization format needs to change to not use the ObjectStreamField api. The reason is that a ManagedProperty must be deserialized sufficiently in terms of its identity before it tries to read its containing ManagedObject reference. The ObjectInputStream.readFields api does not allow one to read the fields in a particular order, so we will have to take control of the reading/writing of the fields. To support better evolution I'll add a version to the serial output as well.