internal static void HandleNodeReplaced <K, T>(this IAListTreeObserver <K, T> self, AListNode <K, T> oldNode, AListNode <K, T> newLeft, AListNode <K, T> newRight) { if (newRight == null) { // cloned, not split Debug.Assert(oldNode.IsFrozen && !newLeft.IsFrozen); Debug.Assert(oldNode.LocalCount == newLeft.LocalCount); } self.RemoveAll(oldNode); self.AddAll(newLeft); if (newRight != null) { self.AddAll(newRight); } }