Done. I've split out this behaviour change into a separate commit for better traceability, and added unit tests around it as well (well... fixed existing). There is a performance price to pay, but the gain is still more than the loss for this change, so I'm still satisfied :).