1) I'd forgotten to hook up the classFor: method to the proxy creation methods, so it was never actually used...
2) Since copyFrom: is just a pseudo-forwardBecome:, we need to explicitly replace existing references to the value returned by selectOne: ...
I hope the repository cache is the only place it is stored during selectOne:, if there are more, additional fixup post copyFrom: in becomeForwardWithSameShape: is needed.
The attached version should fix the above two issues.
Cheers,
Henry