Also, is `reverse_each` lazy when followed by a `.detect`?

It would be more canonical and flexible (allowing any Ruby logic rather than just class matching) to make handlers an array of objects which respond to `.handles?` and using the first handler that returns true to that. However, this may also be slower, so I understand you prefer a direct class-based mapping for performance reasons.