anchor.diff:      return processManager.start(executable, arguments, environment: environment);
     }
   
  -  void _pipeStandardStreamsToConsole(Process process) {
  +  void _pipeStandardStreamsToConsole(
  +    Process process, {
  +    void startTimeoutTimer(),
  +  }) {
       for (Stream<List<int>> stream in
           <Stream<List<int>>>[process.stderr, process.stdout]) {
         stream.transform(UTF8.decoder)
           .transform(const LineSplitter())
           .listen((String line) {
  -          if (line.startsWith('error: Unable to read Dart source \'package:test/'))
  +          if (line == _kStartTimeoutTimerMessage && startTimeoutTimer != null)
  +            startTimeoutTimer();
  +          else if (line.startsWith('error: Unable to read Dart source \'package:test/'))
               printError('\n\nFailed to load test harness. Are you missing a dependency on flutter_test?\n');
             else if (line != null)
               printStatus('Shell: $line');
  
positive.code: import '../globals.dart';
  import 'coverage_collector.dart';
  
  const Duration _kTestStartupTimeout = const Duration(seconds: 5);
  final InternetAddress _kHost = InternetAddress.LOOPBACK_IP_V4;
  
  void installHook({ String shellPath }) {
  
negative.code:       // The local test harness could get bored of us.
  
        _InitialResult initialResult = await Future.any(<Future<_InitialResult>>[
          process.exitCode.then<_InitialResult>((int exitCode) => _InitialResult.crashed),
          timeout.future.then<_InitialResult>((Null _) => _InitialResult.timedOut),
          new Future<_InitialResult>.delayed(_kTestProcessTimeout, () => _InitialResult.timedOut),
          webSocket.future.then<_InitialResult>((WebSocket webSocket) => _InitialResult.connected),
        ]);
  
        switch (initialResult) {
  