anchor.diff:        });
         io.writeln("\n---\n");
       }
  -    if (erase) { d[key].removed.clear(); }
  +    erase(d[key].removed);
     }
   
     String comment(String c) {
       if (c.isEmpty) { return ""; }
       return c.split("\n").map((String x) => "/// $x\n").join("");
  +  }
  +
  +  void erase(Map m) {
  +    if (shouldErase) { m.clear(); }
     }
   
     void reportEachClassThing(String classCategory, DiffNode d) {
  
positive.code:       io.writeln("New $category$parenthetical [$k](#):\n");
        io.writeCodeblockHr(methodSignature(v as Map));
      });
      if (erase) { d.added.clear(); }
      
      d.forEachRemoved((k, v) {
        //print("New ${singularize(methodCategory)} '$k': ${pretty(v)}");
  
negative.code:       io.writeWasNow((oldNew as List<String>)[0], (oldNew as List<String>)[1], blockquote: key=="comment");
        io.writeln("\n---\n");
      });
      erase(attributes.changed);
    }
    
    void reportEachMethodAttributeAttribute(String category,
  