The current implementation of DeltaList just set to null transient objects but do not remove it from list.
This causes some problems when this list is traverse, because in other parts of the code there are no check for null values.
Unfortunately, this makes the current strategy to deal with deltas fail without any fix, so a new more simple strategy was implemented. The idea is call clearInitialState on all code that modify the list. Then, only use partial state saving on a list with non transient components (because its presence cause the list structurally changes later) or added/removed objects after the call to markInitialState.