anchor.diff:    }
   
     final parameters = options.rest;
  -  if (parameters.length != 2) {
  -    print("error: Expected two parameters (results before and results after)");
  +  if (parameters.length != 2 && parameters.length != 3) {
  +    print("error: Expected two or three parameters "
  +        "(results before, results after, and (optionally) approved results)");
       exitCode = 2;
       return;
     }
  
positive.code: class Event {
    final Result before;
    final Result after;
  
    Event(this.before, this.after);
  
    bool get isNew => before == null;
    bool get isNewPassing => before == null && after.matches;
    bool get isNewFailing => before == null && !after.matches;
    bool get changed => !unchanged;
    bool get unchanged => before != null && before.outcome == after.outcome;
    bool get remainedPassing => before.matches && after.matches;
    bool get remainedFailing => !before.matches && !after.matches;
    bool get flaked => after.flaked;
  
negative.code:       negatable: false);
    parser.addFlag("passing",
        abbr: 'p', negatable: false, help: "Show passing tests.");
    parser.addFlag("unapproved",
        abbr: 'U', negatable: false, help: "Show unapproved tests.");
    parser.addFlag("unchanged",
        abbr: 'u',
        negatable: false,
  