import org.aspectj.compiler.base.ast.*;

public class CallsVRec {
    public static void main(String[] args) {
        new CallsVRec().realMain(args);
    }
    public void realMain(String[] args) {
        org.aspectj.testing.Tester.check(true, "Compiled!");
    }
    
    public CallsVRec() {
    }
}




aspect Wins {

	pointcut showError(ASTObject ast, String msg):
            target(ast)
            && call(void ASTObject.showError(String))
            && args(msg);

	void around(ASTObject ast, String msg): showError(ast, msg) {
		System.out.println("hi");
		proceed(ast, msg);
	}
}

aspect Loses {
	
	pointcut showError(ASTObject ast, String msg):
            target(ast)
            && call/*s*/(void ASTObject.showError(String))
            && args(msg);
	
	void around(ASTObject ast, String msg): showError(ast, msg) {
		System.out.println("hi");
		proceed(ast, msg);
	}
}