anchor.diff:      } catch(ex, stack) {
         //AfterThrowing begin
         ApplicationContext._aspectsAfterThrowing.keys.where((aspect)  =>
  -          new GetValueOfAnnotation<AfterThrowing>().fromDeclaration(aspect).isAfterThrowing(im, invocation, ex)
  +          new GetValueOfAnnotation<AfterThrowing>().fromDeclaration(aspect).isAfterThrowing(component, invocation, ex)
         ).forEach((mm) {
  -          retVal = ApplicationContext._aspectsAfterThrowing[mm].invoke(mm.simpleName, [ex]).reflectee;
  +          retVal = ApplicationContext._aspectsAfterThrowing[mm].invoke(mm.simpleName, [retVal, ex]).reflectee;
         });
         //AfterThrowing end
       } finally {
         //AfterFinally begin
         ApplicationContext._aspectsAfterFinally.keys.where((aspect) =>
  -        new GetValueOfAnnotation<AfterFinally>().fromDeclaration(aspect).pointCut(im, invocation)
  +        new GetValueOfAnnotation<AfterFinally>().fromDeclaration(aspect).pointCut(component, invocation)
         ).forEach((mm) {
           retVal = ApplicationContext._aspectsAfterFinally[mm].invoke(mm.simpleName, [retVal]).reflectee;
         });
  
positive.code: part of drails_di;
  
  class AopProxy {
    noSuchMethod(Invocation invocation) {
      var component = ApplicationContext._componentOfProxy[reflect(this).type.reflectedType];
  
negative.code:     
      //Befor aspect begin
      ApplicationContext._aspectsBefore.keys.where((aspect) =>
          new GetValueOfAnnotation<Before>().fromDeclaration(aspect).isBefore(component, invocation)
      ).forEach((mm) {
        ApplicationContext._aspectsBefore[mm].invoke(mm.simpleName, []);
      });
  