import java.util.*; abstract aspect GenericAspect { interface SimpleI {} declare parents: A implements SimpleI; public N SimpleI.m0(N n) { System.err.println(n);return n;} public List SimpleI.m1(List ln) { System.err.println(ln);return ln;} public N SimpleI.f; public List SimpleI.lf; } aspect GenericAspectL extends GenericAspect { public static void main(String []argv) { Base b = new Base(); List ls = new ArrayList(); String s = b.m0("hello"); List ls2 = b.m1(ls); b.f="hello"; b.lf=ls; } } class Base {}