We are trying to unify MRO generators regardless of the call-one vs call-all semantics of the eventual dispatch. And we know that the desired order for construction and destruction are opposite to each other, so they can't be exactly the same dispatcher, though they might use the same MRO in opposite orders. We're just trying to generalize, and in particular keep the done-vs-try-again distinction orthogonal to MRO determination. And as long as the syntax
allows us to plug in a different one without an additional level of indirection, we've made no commitments to which ones run fast and which ones run slow.
In other words, yes, it's insane. Crazy like a fox, if you will... :-)