class A{ void foo(A>> b){ bar(b); } , T extends A> void bar(A a){} } class C { class B {} abstract class A>> { void bar(A>> a){ foo(a); } > T foo(A a){ return null; } } }