anchor.diff:  /// build to complete.
   ///
   /// To ensure a clean build, set [ensureCleanBuild] to `true`.
  -///
  -/// This expects the first build to complete successfully, but you can add extra
  -/// expects that happen before that using [extraExpects]. All of these will be
  -/// invoked and awaited before awaiting the next successful build.
  -Future<void> startServer(
  -        {bool? ensureCleanBuild,
  -        List<Function>? extraExpects,
  -        List<String>? buildArgs}) =>
  +Future<void> startServer({bool? ensureCleanBuild, List<String>? buildArgs}) =>
       _startServer(
  -        'dart',
  -        [
  -          '--packages=.packages',
  -          p.join('..', 'build_runner', 'bin', 'build_runner.dart'),
  -          'serve',
  -          '--verbose',
  -          if (buildArgs != null) ...buildArgs,
  -        ],
  -        ensureCleanBuild: ensureCleanBuild,
  -        extraExpects: extraExpects);
  +      'dart',
  +      [
  +        '--packages=.packages',
  +        p.join('..', 'build_runner', 'bin', 'build_runner.dart'),
  +        'serve',
  +        '--verbose',
  +        if (buildArgs != null) ...buildArgs,
  +      ],
  +      ensureCleanBuild: ensureCleanBuild,
  +    );
   
   Future<ProcessResult> _runBuild(String command, List<String> args,
       {bool? ensureCleanBuild}) async {
  
positive.code:   stdOutLines.listen((line) => printOnFailure('StdOut: $line'));
    stdErrLines.listen((line) => printOnFailure('StdErr: $line'));
  
    extraExpects.add(() => nextSuccessfulBuild);
    await Future.wait(extraExpects.map((cb) async => await cb()));
  }
  
  /// Kills the current build script.
  
negative.code: }
  
  Future<void> _startServer(String command, List<String> buildArgs,
      {bool? ensureCleanBuild}) async {
    ensureCleanBuild ??= false;
  
    // Make sure this is a clean build
    if (ensureCleanBuild && await _toolDir.exists()) {
  