public aspect InitializationPointcutMatching { // rule 1) you can't use generic or parameterized type patterns in the declaring type position pointcut tryInitGeneric() : initialization(Generic.new(..)); // CE L 4 pointcut tryPreInitGeneric() : preinitialization(Generic.new(..)); // CE L5 pointcut tryInitParameterized() : initialization(Generic.new(..)); // CE L6 pointcut tryPreInitParameterized() : preinitialization(Generic.new(..)); // CE L7 pointcut trySneakyInit() : initialization((Object || Generic).new(..)); // CE L8 pointcut badThrows() : initialization(Generic.new(..) throws Ex*); // CE L9 } class Generic { T foo = null; T getFoo() { return foo; } }