anchor.diff:    }
   }
   
  +/**
  + * This class holds a value, that can be changed.  It is used when
  + * closures need a shared value, that they can all change and read.
  + */
  +class MutableValue<T> {
  +  MutableValue(T this.value);
  +  T value;
  +}
  +
   class BatchRunnerProcess {
     String _executable;
     List<String> _batchArguments;
  
positive.code:     };
    }
  
    void _exitHandler(exitCode) {
      if (_timer != null) _timer.cancel();
      _process.close();
      _startProcess(() {
        _reportResult(">>> TEST CRASH");
      });
    }
  
    void _timeoutHandler(ignore) {
      _process.onExit = (exitCode) {
        _process.close();
        _startProcess(() {
          _reportResult(">>> TEST TIMEOUT");
        });
      };
      _process.kill();
    }
  
  
negative.code:         }
          line = stream.readLine();
        }
        if (_status != null) {
          _timer.cancel();
          _stdoutDone();
        }
      };
    }
  
    Function _readStderr(StringInputStream stream, List<String> buffer) {
      var ignoreStreams = _ignoreStreams;  // Capture this mutable object.
      return () {
        if (ignoreStreams.value) {
          while (stream.readLine() != null) {
  	  // Do nothing.
          }
  	return;
        }
        // Otherwise, process output and call _reportResult() when done.
        var line = stream.readLine();
        while (line != null) {
          if (line.startsWith('>>> EOF STDERR')) {
  