anchor.diff:  
     void _pipeStandardStreamsToConsole(
       Process process, {
  -    void startTimeoutTimer(),
       Future<void> reportObservatoryUri(Uri uri),
     }) {
   
  
positive.code: import 'test_compiler.dart';
  import 'test_config.dart';
  import 'watcher.dart';
  
  /// The timeout we give the test process to connect to the test harness
  /// once the process has entered its main method.
  ///
  /// We time out test execution because we expect some tests to hang and we want
  /// to know which test hung, rather than have the entire test harness just do
  /// nothing for a few hours until the user (or CI environment) gets bored.
  const Duration _kTestStartupTimeout = Duration(minutes: 5);
  
  /// The timeout we give the test process to start executing Dart code. When the
  /// CPU is under severe load, this can take a while, but it's not indicative of
  /// any problem with Flutter, so we give it a large timeout.
  ///
  /// See comment under [_kTestStartupTimeout] regarding timeouts.
  const Duration _kTestProcessTimeout = Duration(minutes: 5);
  
  /// Message logged by the test process to signal that its main method has begun
  /// execution.
  ///
  /// The test harness responds by starting the [_kTestStartupTimeout] countdown.
  /// The CPU may be throttled, which can cause a long delay in between when the
  /// process is spawned and when dart code execution begins; we don't want to
  /// hold that against the test.
  const String _kStartTimeoutTimerMessage = 'sky_shell test process has entered main method';
  
  /// The address at which our WebSocket server resides and at which the sky_shell
  /// processes will host the Observatory server.
  
negative.code:           watcher?.handleStartedProcess(
                ProcessEvent(ourTestCount, process, processObservatoryUri));
          },
        );
  
        // At this point, three things can happen next:
  