import java.util.*; class Base { } public class GenericMethodITD15 { public static void main(String[] argv) { List as = new ArrayList(); new Base().crazy(as); // ok. A implements Foo and C is a superclass of A } } interface Foo { public void m(T t); } class C {} class B extends C {} class A extends B implements Foo { public void m(C a) {} } aspect X { > void Base.crazy(List lr) {} }