anchor.diff:    String _declarationName(DeclarationMirror declaration) =>
         MirrorSystem.getName(declaration.qualifiedName);
   
  -  // Reads annotations on declarations and adds them to `_initQueue` if they are
  -  // initializers.
  +  /// Reads annotations on a [DeclarationMirror] and adds them to [_initQueue]
  +  /// if they are [Initializer]s.
     void _readAnnotations(DeclarationMirror declaration, Queue<Function> queue) {
       var annotations =
           declaration.metadata.where((m) => _filterMetadata(declaration, m));
       for (var meta in annotations) {
  +      if (!_annotationsFound.containsKey(declaration)) {
  +        _annotationsFound[declaration] = new Set<InstanceMirror>();
  +      }
         _annotationsFound[declaration].add(meta);
   
         // Initialize super classes first, if they are in the same library,
  
positive.code:       return false;
      }
      if (customFilter != null && !customFilter(meta.reflectee)) return false;
      if (!_annotationsFound.containsKey(declaration)) {
        _annotationsFound[declaration] = new Set<InstanceMirror>();
      }
      if (_annotationsFound[declaration].contains(meta)) return false;
      return true;
    }
  
negative.code:         if (declaration.superclass.owner == declaration.owner) {
            _readAnnotations(declaration.superclass, queue);
          } else {
            // Make sure to check the canonical superclass declaration, the one
            // we get here is not always that. Specifically, this occurs if all of
            // the following conditions are met:
            //
            //   1. The current library is never loaded via a `package:` dart
            //      import anywhere in the program.
            //   2. The current library loads the superclass via a relative file
            //      import.
            //   3. The super class is imported via a `package:` import somewhere
            //      else in the program.
            var canonicalSuperDeclaration =
                _canonicalClassDeclaration(declaration.superclass);
            var superMetas = canonicalSuperDeclaration.metadata
                .where((m) => _filterMetadata(canonicalSuperDeclaration, m))
                .toList();
            if (superMetas.isNotEmpty) {
              throw new UnsupportedError(
                  'We have detected a cycle in your import graph when running '
                  'initializers on ${declaration.qualifiedName}. This means the '
                  'super class ${canonicalSuperDeclaration.qualifiedName} has a '
                  'dependency on this library (possibly transitive).');
            }
          }
  