See Original text in context
method wrap(Routine: )
Wraps (i.e. in-place modifies) the routine. That means a call to this routine first calls
&wrapper, which then can (but doesn't have to) call the original routine with the
nextwith dispatchers. The return value from the routine is also the return value from the wrapper.
wrap returns an instance of a private class called
Routine::WrapHandle, which you can pass to unwrap to restore the original routine.