Solution (source code)

= Solution

\b[Permitted; returns `"AB"`.] The receiver's <static type> is `A`, which offers `show(A)`. The argument also has <static type> `A`, so that signature is selected. All three variables refer to the same object of <runtime type> `C`; the most-derived implementation of `show(A)` is inherited from `B`. Its `super.show(o)` calls `A.show(A)`, producing `"A"`, and it appends `"B"`. `C` overrides `show(B)`, not this selected signature.