class A<a> { }

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

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