Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Oriented Software