anchor.diff:      }
   
       if (diff[key].hasRemoved) {
  -      io.writeln('$owner no longer has these ${pluralize(key)}:\n');
  +      io.writeln('$name no longer has these ${pluralize(key)}:\n');
         diff[key].forEachRemoved((String idx, Object el) {
           el = formatter(el, link: false);
           io.writeln('* $el');
  
positive.code: 
      // TODO: also Errors and Typedefs?
      io.bufferH2(
          'class ${mdLinkToDartlang(diff.metadata['qualifiedName'], diff.metadata['name'])}');
      reportClass();
  
      // After reporting, prune and print anything remaining.
      diff.prune();
      String qn = diff.metadata['qualifiedName'];
      diff.metadata.clear();
      String ds = diff.toString();
      if (ds.isNotEmpty) {
        print('${qn} HAS UNRESOLVED NODES:');
        print(ds);
      }
    }
  
    void reportClass() {
      if (diff.containsKey('annotations')) {
        _reportList(diff.metadata['name'], 'annotations', diff,
            formatter: annotationFormatter);
      }
  
      if (diff.hasChanged) {
        diff.forEachChanged((String key, List oldNew) {
          io.writeln("${diff.metadata['name']}'s `${key}` changed:\n");
          io.writeWasNow((oldNew as List<String>)[0], (oldNew as List<String>)[1],
              blockquote: key == 'comment', link: ['superclass'].contains(key));
          io.writeHr();
        });
        diff.changed.clear();
      }
  
      if (diff.containsKey('subclass')) {
        _reportList(diff.metadata['name'], 'subclass', diff,
            formatter: classFormatter);
      }
  
      if (diff.containsKey('implements')) {
        DiffNode implements = diff['implements'];
        if (implements.hasAdded) {
          String added = implements.added.values.map(mdLinkToDartlang).join(', ');
          io.writeln("${diff.metadata['name']} now implements ${added}.");
          erase(implements.added);
        }
        if (implements.hasRemoved) {
          String removed =
              implements.removed.values.map(mdLinkToDartlang).join(', ');
          io.writeln("${diff.metadata['name']} no longer implements ${removed}.");
          erase(implements.removed);
        }
        io.writeHr();
      }
  
      // Iterate over the method categories.
      diff.forEachOf('methods', _reportEachMethodCategory);
  
      if (hideInherited)
        erase(diff.node, 'inheritedMethods');
      else
  
negative.code:     }
  
      if (diff[key].hasChanged) {
        io.writeln('$name has changed ${pluralize(key)}:\n');
        diff[key].forEachChanged((String idx, List oldNew) {
          var theOld = oldNew[0];
          var theNew = oldNew[1];
  