interface MyBase { void foo(); }; interface MyMarker extends MyBase { void bar(); } abstract aspect Base { pointcut somePC() : execution(* A.*(..)); declare warning : somePC() : "a match"; } abstract aspect Middle extends Base {} aspect Sub extends Middle {} class C1 implements MyBase { public void foo() {} } class C2 implements MyMarker { public void foo() {} // CW L 25 public void bar() {} // CW L 27 }