Mastering AspectJ: Aspect-Oriented Programming in Java