anchor.diff:  
         // If debug info is enabled, the first statement is a call to [dbg], so
         // retrieve last statement to ensure it's the handler invocation.
  -      _simpleHandler = _extractFunction(returnExpr);
  +      _simpleHandler = extractFunction(returnExpr);
       } else {
  -      final stmts = <o.Statement>[];
  -      // Declare variables for locals used in this event listener.
  -      stmts.insertAll(0, _nameResolver.getLocalDeclarations());
  -      final methodStmts = _method.finish();
  -      stmts.addAll(maybeCachedCtxDeclarationStatement(statements: methodStmts));
  -
  -      stmts.addAll(methodStmts);
  -      _compileElement.view.methods.add(o.ClassMethod(
  +      _compileElement.view.createEventHandler(
           _methodName,
  -        [_eventParam],
  -        stmts,
  -        null,
  -        [o.StmtModifier.Private],
  -      ));
  +        _method.finish(),
  +        localDeclarations: _nameResolver.getLocalDeclarations(),
  +      );
       }
     }
   
  
positive.code:   }
    return null;
  }
  
  o.Expression _extractFunction(o.Expression returnExpr) {
    final callExpr = returnExpr as o.InvokeMethodExpr;
    return o.ReadPropExpr(callExpr.receiver, callExpr.name);
  }
  
negative.code:       numArgs = 1;
      }
  
      return wrapHandler(handlerExpr, numArgs);
    }
  
    bool _isTearOff(BoundEventAst hostEvent) =>
  