interface A { } class B implements A {} class C { void bar(A> x){ B> y = (B>) x; } } //----------------------- interface A2 { } class B2 implements A2 {} class C2 { void bar(A2 x){ B2> y = (B2>) x; } } //----------------------- interface A3 { } class B3 implements A3 {} class C3 { void bar(A3> x){ A3> y = (A3>) x; } }