Deal with the elaborate rip-apart-a-metaclass case as well.
merge trunk