class A<a> { } class B<a> extends A<a> { f(x) { a; b; if (x) { return a; } else { return b; } } } class C<a> extends B<A<a>> {}