The current implementation of SoilPersistentDictionary only works when the dictionary is a root object. This is not a good solution. A persistent dictionary should always work even in non-root mode. We know have a way to call soilMaterialized: on all objects so the persistent dictionary can know its transaction easily so the change is feasible.
But the semantics change a lot because the persistent dictionary marks itself dirty on change. In order not to create a huge whole in API usage this change is attached to the object state tracking milestone because if that is in place the persistent dictionary would be marked dirty by the object state tracking
The current implementation of SoilPersistentDictionary only works when the dictionary is a root object. This is not a good solution. A persistent dictionary should always work even in non-root mode. We know have a way to call soilMaterialized: on all objects so the persistent dictionary can know its transaction easily so the change is feasible.
But the semantics change a lot because the persistent dictionary marks itself dirty on change. In order not to create a huge whole in API usage this change is attached to the object state tracking milestone because if that is in place the persistent dictionary would be marked dirty by the object state tracking