I think you are making this too complicated. Just invoke the method directly
b = .B~new
::CLASS B PUBLIC
Doing this I get:
Error 97.1: Object "a Message" does not understand message "METHOD1"
But I also realise that my sample above is not reflecting the code sequence correctly, it should be:
b = .B~show
::CLASS B PUBLIC SUBCLASS USERDIALOG
::METHOD show CLASS
tv = self~new
Object 'b' is a .Message object and I can use for example "if b~completed then..." without any problems, but b~method1 doesn't work. I can't see any major logic difference between the two samples, but the above is more accurate than the first.