anchor.diff:  
     List<T> _visitTypesForComponent<T>(
       Iterable<DartObject> directives,
  -    AnnotationMatcher annotationMatcher,
       ElementVisitor<T> visitor(), {
       ElementAnnotationImpl annotation,
       ClassElement element,
  
positive.code:     final directive = element.accept(new _ComponentVisitor(_library));
      if (directive != null) {
        if (directive.isComponent) {
          var pipes = _visitPipes(element);
          components.add(new NormalizedComponentWithViewDirectives(
              directive, _visitDirectives(element), pipes));
        } else {
          directives.add(directive);
        }
  
negative.code:       _visitTypes(
          element,
          _directivesProperty,
          () => new _ComponentVisitor(_library),
        );
  
    List<T> _visitTypes<T>(
      ClassElement element,
      String field,
      ElementVisitor<T> visitor(),
    ) {
      return element.metadata
          .where(safeMatcher(isComponent))
          .expand((annotation) => _visitTypesForComponent(
                coerceList(annotation.computeConstantValue(), field),
                visitor,
                // Only pass the annotation for directives: [ ... ], not other
                // elements. They also can cause problems if not resolved but it
  