anchor.diff:      }
     }
   }
  +
  +/**
  + * This class encapsulates logic for creating a single [IsolateRunner].
  + */
  +class _SingleIsolateRunnerProvider {
  +  bool _isSpawning = false;
  +  IsolateRunner _runner;
  +
  +  /**
  +   * Complete with the only [IsolateRunner] instance.
  +   */
  +  Future<IsolateRunner> get() async {
  +    if (_runner != null) {
  +      return _runner;
  +    }
  +    if (_isSpawning) {
  +      Completer<IsolateRunner> completer = new Completer<IsolateRunner>();
  +      new Timer.periodic(new Duration(milliseconds: 10), (Timer timer) {
  +        if (_runner != null) {
  +          completer.complete(_runner);
  +          timer.cancel();
  +        }
  +      });
  +      return completer.future;
  +    }
  +    _isSpawning = true;
  +    _runner = await IsolateRunner.spawn();
  +    return _runner;
  +  }
  +}
  
positive.code:    */
    final String _stateLocation;
  
    static Future<IsolateRunner> pathsToTimesIsolate = IsolateRunner.spawn();
  
    @override
    final AbsolutePathContext absolutePathContext =
  
negative.code:   @override
    Future<List<int>> getModificationTimes(List<Source> sources) async {
      List<String> paths = sources.map((source) => source.fullName).toList();
      IsolateRunner runner = await pathsToTimesIsolateProvider.get();
      return runner.run(_pathsToTimes, paths);
    }
  
  