I'm curious why this is necessary. We've just encountered the new item whose tagID matches the old one, so we should never later on encounter another item in the new tree with the same tagID--so it shouldn't matter whether the old item is still in the oldNodeMap.