1. Make an aspect PrintFirstArgs that is activated when a method in class Test is called that has at least one parameter. The aspect should print the first parameter's value on the command line. What happens if you direct your advice in the aspect towards any class instead of limiting it to Test? 2. Using the CallerCallee aspect, count how many method calls in the code is such that the caller object and the callee object are the same. For each such call, print the counter's current value to the standard output. 3. Make an aspect ExceptionLog that logs into a file each exception that the program throws. The caller object and the exception instance should be printed into the file on each throw.