in reply to Subclassing strategies

It doesn't seem like a lot of overhead to me. You have one additional method call, a ref, and a bless. You'll have to pay allocation penalties (such as they are) for any token you create anyway, and you'll have method calls (the real performance killer) anyway as well.

If you have much more than a dozen additional ops, I'd be very surprised. (Though you could speed up the first, uncached method dispatch by automagically importing is_text() and return_text() into your subclass.)

I'd pay the price for convenience. It'd take a huge document for you to notice the cost, in my opinion. ©