import org.aspectj.testing.Tester; public class DeclareError { public static void main(String[] args) { new C().bad(); } } class C { public void m() { new C().bad(); } public void bad() { } } class D { public void m() { new C().bad(); } } aspect A { declare error: call(void C.bad()) && !within(C): "can only call bad from C"; }