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