As near as I can tell, it is not possible to write a method which takes an instance of class A and modifies it such that it is now an instance of subclass A'. This is quite distressing. I can write a class B that HAS-A instance of A, and delegates to it, but I cannot write a class A' that IS-A instance of A, where the instance of A' actually IS, in fact, the instance of A I started with. I can write a class B with a constructor that takes an instance of A and copies all the public information out of it and tries to mimic the A it received, but that's still not going to work for objects that somebody else's API gives me. And of course if I were the author of class A I could make its internals much more exposed to facilitate this, but I'm not, and if I were the author of the API that's giving me an A I could change the method or write a new one that gives me an A', but I'm not, so I can't.
I hardly ever touched such dynamic features in Perl, but I knew they were there when I needed them. For some strange reason I've wound up doing or attempting far more dynamic stuff like this with Java than I ever did with Perl.
Of course, being able to do this is not necessarily a good idea, but if I were in Perl I'd write a nice constructor method to encapsulate taking an object of the superclass and reblessing it into the subclass, and it'd be mostly clean other than the evil magic inside that constructor. Java just forbids such witchcraft altogether.
BTW, I learned about mixins from prompting here, within the last 30 days, and already I miss those, too, even though I've never had them.