protected function uniteImplementationsRemoveLoop(Item $current, Item $implementationOf) { $parent = $current->getParent(); if ($parent && $implementationOf->isDescendant($parent)) { while ($parent !== $implementationOf) { $parent->removeFromParent(); $parent = $parent->getParent(); } } }