anchor.diff:      outputDirectory.delete(recursive: true);
     }
   }
  +
  +Future<void> main(List<String> arguments) async {
  +  var parser = ArgParser();
  +  parser.addFlag("verbose", abbr: "v", help: "print additional information");
  +  parser.addFlag("write", abbr: "w", help: "write output to input file");
  +  parser.addOption("enable-experiment",
  +      help: "Enable one or more experimental features", allowMultiple: true);
  +
  +  var results = parser.parse(arguments);
  +  if (results.rest.isEmpty) {
  +    print("Usage: convert_multi_test.dart [-v] [-w] <input files>");
  +    print(parser.getUsage());
  +    exitCode = 1;
  +    return;
  +  }
  +  var verbose = results["verbose"] as bool;
  +  var filePaths =
  +      results.rest.map((path) => Uri.base.resolve(path).toFilePath());
  +  var writeToFile = results["write"] as bool;
  +  for (var testFilePath in filePaths) {
  +    await convertFile(testFilePath, writeToFile, verbose,
  +        (results["enable-experiment"] as List).cast<String>());
  +  }
  +}
  
positive.code:       errors.add(await getErrors(options, test.path.toNativePath()));
      }
      if (errors[1].isNotEmpty) {
        throw "internal error: errors in '/none' test";
      }
      // Check that the multi-test generates the same errors as all sub-tests
      // together - otherwise converting the test would be unsound.
  
negative.code:     // Get the reported errors for the multi-test and all generated sub-tests
      // from the analyser and the common front-end.
      var options = test.sharedOptions;
      if (experiments.isNotEmpty) {
        options.add("--enable-experiment=${experiments.join(',')}");
      }
      var errors = <List<StaticError>>[];
      for (var test in tests) {
        if (verbose) {
  