pointcut matching for constructor calls: call(List<Integer>.new()) ? call(List<Integer>.new(Integer i)) ?? call(<T> List<T>.new()) call(<T> List<T>.new(T)) execution likewise ? for methods and fields in parameterized types: call(<T> foo(T)) etc. ? There is only ONE class remember. get(<T> T foo*) does get(Object obj) match new Foo<Object>() with Foo<T> { T obj } ???