public aspect GetAndSetPointcutMatching { // rule 1) you can't use generic or parameterized type patterns in the declaring type position pointcut tryGetGeneric() : get( * Generic.*); // CE L 4 pointcut trySetGeneric() : set(* Generic.*); // CE L5 pointcut tryGetParameterized() : get(* ISore.*); // CE L6 pointcut trySetParameterized() : set(* ISore.*); // CE L7 pointcut trySneakyGet() : get(* (Object || ISore).*); // CE L8 } class Generic { T foo = null; T getFoo() { return foo; } } interface ISore { void iSee(E anE); } class UglyBuilding implements ISore { public void iSee(String s) {} }