It's not clear what the reason for these changes are.  It looks like it's a refactoring that just made it more confusing.  Before, the method logic was very clear; now it's been extracted into a separate method, then reified into a method object, then passed to `class_exec` as an arg, then yielded to the `class_exec` as a block arg, and finally invoked as a callable.

Huh?