import org.aspectj.testing.Tester;

public class AroundAndCalls {
    public static void main(String[] args) {
	Tester.checkEqual(new CL().go(), "basic-advised");
    }
}

aspect MustAspect /*of eachobject(instanceof(CL))*/ {
    
    pointcut parseCalls(CP cp, String cmd):
        (args(cmd) && target(cp) && call(String CP.parse(String))) &&
        within(CL);
    
    String around(CP cp, String cmd): parseCalls(cp, cmd) {
        return proceed(cp, cmd + "-advised");
    }
}

class CL {
    String go() {
	return new CP().parse("basic");
    }
}

class CP {
    String parse(String cmd) {
	return cmd;
    }
}