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:     return Strings.join(arguments, ' ').concat('\n');
    }
  
    void _testCompleted() {
      var test = _currentTest;
      _currentTest = null;
      test.completed();
    }
  
    int _reportResult(String output) {
      _stdoutDrained = true;
      // output = '>>> TEST {PASS, FAIL, OK, CRASH, FAIL, TIMEOUT}'
      var outcome = output.split(" ")[2];
      var exitCode = 0;
      if (outcome == "CRASH") exitCode = -10;
      if (outcome == "FAIL" || outcome == "TIMEOUT") exitCode = 1;
      new TestOutput.fromCase(_currentTest, exitCode, (outcome == "TIMEOUT"),
                              _testStdout, _testStderr,
                              new Date.now().difference(_startTime));
      // Move on when both stdout and stderr has been drained. If the test
      // crashed, we restarted the process and therefore do not attempt to
      // drain stderr.
      if (_stderrDrained || (_currentTest.output.hasCrashed)) _testCompleted();
    }
  
    void _stderrDone() {
      _stderrDrained = true;
      // Move on when both stdout and stderr has been drained.
      if (_stdoutDrained) _testCompleted();
    }
  
    Function _readStdout(StringInputStream stream, List<String> buffer) {
      return () {
        var status;
        var line = stream.readLine();
        while (line != null) {
          if (line.startsWith('>>> TEST')) {
            status = line;
          } else if (line.startsWith('>>> BATCH START')) {
            // ignore
          } else if (line.startsWith('>>> ')) {
  
negative.code:   bool get active() => _currentTest != null;
  
    void startTest(TestCase testCase) {
      Expect.isNull(_currentTest);
      _currentTest = testCase;
      if (_process === null) {
        // Start process if not yet started.
  