AspectJ Cookbook: Aspect Oriented Solutions to Real-World Problems