There were two issues: 1. The OrderedNode *After overload created the wrong iterator 2. Despite being named After, they were actually inclusive Kept ReplaceAllUsesWithRange with the current inclusive behaviour and adjusted the argument name to match