abstract class MyTest { interface A {} interface B {} abstract <_B, _P extends A<_B>> _P foo(B<_B> data); public void m(B b) { final A a = foo(b); } }