anchor.diff:  
   void batchMain(List<String> batchArguments) {
     int exitCode;
  -
     exitFunc = (errorCode) {
       // Since we only throw another part of the compiler might intercept our
       // exception and try to exit with a different code.
  
positive.code:     throw _EXIT_SIGNAL;
    };
  
    runJob() {
      new Future.sync(() {
        exitCode = 0;
        String line = stdin.readLineSync();
        if (line == null) exit(0);
        List<String> args = <String>[];
        args.addAll(batchArguments);
        args.addAll(splitLine(line, windows: Platform.isWindows));
        return internalMain(args);
      })
      .catchError((exception, trace) {
        if (!identical(exception, _EXIT_SIGNAL)) {
          exitCode = 253;
        }
      })
      .whenComplete(() {
        // The testing framework waits for a status line on stdout and stderr
        // before moving to the next test.
        if (exitCode == 0){
          print(">>> TEST OK");
        } else if (exitCode == 253) {
  
negative.code: 
  import 'dart:async'
      show Future, EventSink;
  import 'dart:convert' show UTF8, LineSplitter;
  import 'dart:io'
      show exit, File, FileMode, Platform, RandomAccessFile, FileSystemException,
           stdin, stderr;
  