anchor.diff:        abbr: "n",
         help: "Show changed results but don't approve.",
         negatable: false);
  +  parser.addOption("preapprove",
  +      abbr: "p", help: "Preapprove the new failures in a gerrit CL.");
     parser.addFlag("verbose",
         abbr: "v", help: "Describe asynchronous operations.", negatable: false);
     parser.addFlag("yes",
         abbr: "y", help: "Approve the results.", negatable: false);
   
     final options = parser.parse(args);
  -  if ((options["bot"].isEmpty && !options["list"]) || options["help"]) {
  +  if ((options["preapprove"] == null &&
  +          options["bot"].isEmpty &&
  +          !options["list"]) ||
  +      options["help"]) {
       print("""
   Usage: approve_results.dart [OPTION]...
   List tests whose results are different from the previously approved results, and
  
positive.code:       final result = results[key];
        final approvedResult = approvedResults[key];
        final flakiness = flaky[key];
        final name = result["name"];
        final test = new Test(bot, name, result, approvedResult, flakiness);
        tests.add(test);
      }
      if (options["verbose"]) {
  
negative.code:       print("Note: Approving the failures will turn the "
            "$botPlural green on the next commit.");
      }
      if (options["preapprove"] != null) {
        print("Warning: Preapproval is currently not sticky and somebody else "
            "approving before your CL has landed will undo your preapproval.");
      }
      while (true) {
        stdout.write("Do you want to approve? (yes/no) [yes] ");
        final line = stdin.readLineSync();
  