That is, they update an internally held Collection and set it as the internal Collection for the Immutable Collection serving as the result, but also keep a record of how to undo this change on a copy of the update, so as to reconstruct the original Collection. Since it's usually the case that applications use updates rather than their sources, negative deltas are generally more efficient than other schemes. Also, because updates don't point to their sources, when a source becomes unreferenced, it and all of its edit records can be garbage collected. The price you pay for these nice aspects is that reconstruction of old versions is not always all that fast or cheap. The logic of reconstruction is to work our way to the UpdatableCollection serving as the source of the edits, and then apply each undo operation all the way back up to where we are.
Subclasses specialize on the exact edit operation to do at each step.
For long edit chains, it would require too many simultaneous locks. The java runtime could even run out of them. The recursion could get very deep, which is not a good idea in java because of how it uses the stack. Putting next-links from each node to the one representing the edit which is to follow. This way we can iterate rather than use recursion.