aspect MyAspect implements MyInterface { before() : MyAspect1.myPointcutInInterface(){ } } class MyClass {} interface MyInterface{ public abstract static aspect MyAspect1 { public final pointcut myPointcutInInterface() : call(T *(..)); } } public class Bug2 { public static void main(MyClass[]argv) { new Bug2().callit(); } public MyClass callit() { return null; } } aspect MyAspect2 implements MyInterface { before(): MyAspect1.myPointcutInInterface() {} // shouldn't match... since the return type of callit is MyClass }