anchor.diff:      if (href != null && href != '') return;
   
       // TODO(sigmund): warn also if href can't be resolved.
  -    _logger.warning('link rel="$rel" missing href.', node.sourceSpan);
  +    _logger.warning('link rel="$rel" missing href.', span: node.sourceSpan);
     }
   
     /** Produce warnings if using `<element>` instead of `<polymer-element>`. */
     void _validateElementElement(Element node) {
       _logger.warning('<element> elements are not supported, use'
  -        ' <polymer-element> instead', node.sourceSpan);
  +        ' <polymer-element> instead', span: node.sourceSpan);
     }
   
     /**
  
positive.code:           ' JavaScript event handler. Use the form '
            'on-event-name="handlerName" if you want a Dart handler '
            'that will automatically update the UI based on model changes.',
            node.attributeSpans[name]);
        return;
      }
  
      if (!_inPolymerElement) {
        _logger.warning('Inline event handlers are only supported inside '
            'declarations of <polymer-element>.', node.attributeSpans[name]);
      }
  
      var eventName = name.substring('on-'.length);
  
negative.code:       _logger.warning('Invalid event name "$name". After the "on-" the event '
            'name should not use dashes. For example use "on-$newEvent" or '
            '"on-${newEvent.toLowerCase()}" (both forms are equivalent in HTML).',
            span: node.attributeSpans[name]);
      }
  
      if (value.contains('.') || value.contains('(')) {
        _logger.warning('Invalid event handler body "$value". Declare a method '
            'in your custom element "void handlerName(event, detail, target)" '
            'and use the form $name="handlerName".',
            span: node.attributeSpans[name]);
      }
    }
  }
  