class A<a> { }

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

class C<a> extends B<A<a>> {}