I erred at the start of 4th paragraph:

It read:
>>iBATIS errs out on #4 because it invokes BImpl.setA(), but gets back only the interface from BImpl.getA().

It should read:
>>iBATIS errs out on #4 because it invokes setName() from BImpl.getA(), but the method doesn't exist at this level.

Paul