I've implemented the dispatch and underlying types for issue 40, and I've tested the dispatch, but I haven't tested the types. I'm kind of feeling like I don't have the wherewithal to come up with sensible test cases for classmethods and staticmethods right now, so I might need to call things here and take that break I mentioned.
Once I worked out exactly what the responsibilities were of the different classes that got coordinated, putting together the new wrappers was pretty simple, though I did need to change things a few times because I'd made some arbitrary choices that didn't make sense, on reflection. (For example, the wrappers originally ignored the instance argument entirely, but if that's passed, then it must be the case that whatever is returned should not have a when method.)
There are good odds that I'm missing something important that'll come to light in testing, but I can't look for that right now. I need to focus on relaxing and dealing with some stress I have in my life right now.