anchor.diff:  
       // Skip over leading handlers that match.
       while (newStartIndex < newEndIndex && oldStartIndex < oldEndIndex) {
  -      EventHandler newHander = newHandlers[newStartIndex];
  +      EventHandler newHandler = newHandlers[newStartIndex];
         EventHandler oldHandler = oldHandlers[oldStartIndex];
  -      if (newHander.type != oldHandler.type
  -          || newHander.listener != oldHandler.listener)
  +      if (newHandler.type != oldHandler.type
  +          || newHandler.listener != oldHandler.listener)
           break;
         ++newStartIndex;
         ++oldStartIndex;
  
positive.code: 
      _dirty = false;
  
      // TODO(rafaelw): This prevents components from returning different node
      // types as their root node at different times. Consider relaxing.
      assert(oldRendered == null ||
             _rendered.runtimeType == oldRendered.runtimeType);
  
      if (_rendered._sync(oldRendered, host, insertBefore)) {
        _rendered = oldRendered; // retain stateful component
  
negative.code:     }
  
      for (int i = newStartIndex; i < newEndIndex; ++i) {
        EventHandler newHandler = newHandlers[i];
        root.addEventListener(newHandler.type, newHandler.listener);
      }
    }
  
  