My understanding is that objects whose singleton classes have included / prepended classes should be dumpable & loadable, but if the singleton class itself has proper instance methods it can't be dumped.
In the example I gave, the first TypeError is ok, since o's singleton class has a :foo method.
Prepending a module should not make it suddenly dumpable.
The check for this is in w_extended is incorrect. If I'm not mistaken, it assumes that the singleton class is first in the ancestry chain, which is no longer necessarily the case.