anchor.diff:    Uri libraryRoot = cwd;
     Uri out = cwd.resolve('out.js');
     List<String> options = new List<String>();
  +  bool explicitOut = false;
   
     passThrough(String argument) => options.add(argument);
   
  
positive.code:   parseCommandLine(handlers, argv);
  
    if (arguments.isEmpty()) {
      helpAndFail('Error: no file to compile.');
    }
    if (arguments.length > 1) {
      var extra = arguments.getRange(1, arguments.length - 1);
      helpAndFail('Error: extra arguments: ${Strings.join(extra, " ")}');
    }
  
    Map<String, SourceFile> sourceFiles = <SourceFile>{};
  
negative.code:   // directly. In effect, we don't support truly asynchronous API.
    String code = api.compile(uri, libraryRoot, provider, handler, options).value;
    if (code === null) {
      fail('Error: Compilation failed.');
    }
    writeString(out, code);
    int jsBytesWritten = code.length;
    info('compiled $dartBytesRead bytes Dart -> $jsBytesWritten bytes JS '
         + 'in ${relativize(cwd, out)}');
    if (!explicitOut) {
      String input = uriPathToNative(arguments[0]);
      String output = relativize(cwd, out);
      print('Dart file $input compiled to JavaScript: $output');
    }
  }
  
  class AbortLeg {
  