anchor.diff:        continue;
       }
       for (final hostEvent in directiveAst.hostEvents) {
  -      final listener = CompileEventListener.getOrCreate(
  +      final listener = CompileEventListener._getOrCreate(
           compileElement,
           hostEvent.name,
           eventListeners,
         );
         listener._addAction(
           hostEvent,
  -        directiveAst.directive,
           compileElement.directiveInstances[i],
           analyzedClass,
         );
  
positive.code:   /// add a new one if it doesn't exist yet.
    /// TODO: try using Map, this code is quadratic and assumes typical event
    /// lists are very small.
    static CompileEventListener getOrCreate(CompileElement compileElement,
        String eventName, List<CompileEventListener> targetEventListeners) {
      for (var existingListener in targetEventListeners) {
        if (existingListener.eventName == eventName) return existingListener;
  
negative.code: ) {
    final eventListeners = <CompileEventListener>[];
    for (final hostEvent in hostEvents) {
      final listener = CompileEventListener._getOrCreate(
        compileElement,
        hostEvent.name,
        eventListeners,
      );
      listener._addAction(hostEvent, null, analyzedClass);
    }
    for (var i = 0, len = dirs.length; i < len; i++) {
      final directiveAst = dirs[i];
  