import java.util.*; abstract aspect GenericAspect<A> { interface SimpleI<N extends Number> {} declare parents: A implements SimpleI<Integer>; public void SimpleI<N>.m1() {}; public List<N> SimpleI<N>.m2() {return null;}; public void SimpleI<N>.m3(List<N> ln) {}; public void SimpleI<N>.m4(N n) {}; } aspect GenericAspectG extends GenericAspect<Base> { public static void main(String []argv) { Base b = new Base(); b.m1(); List<Integer> ln = b.m2(); b.m3(new ArrayList<Integer>()); b.m4(new Integer(5)); } } class Base {}