I think the core problem to getting this working on methods is that the `dispatch_on_types` call can happen an extra frame in.  I'll think about how to flatten things.