<div dir="ltr">Perhaps a better more neutral term is leaky abstraction.<div><br></div><div>The MBB iterator provides a documented abstraction. Look it up. Use it. Done. Do not worry about how it works. Then along comes a problem which isn't within that abstraction's abilities. So people come up with a solution/workaround/xxxx which then becomes an accepted pattern and they use that. This works.<div><br></div><div>The trouble is when other people who just read the documentation expect an abstraction and its methods to just work. And they can't figure out why. We don't really want to understand the implementation and search for patterns, albeit widespread. It should be in the abstraction. It should be in the documentation.</div></div><div><br></div><div>Now of course, I'm going to use this approach because it is faster than restarting the loop. However, if it's so widespread and it does indeed work, why not add it to the abstraction? Existing code will continue to work but then this will be easier the next time for newbies to figure out in the future.</div></div>