Revert https://github.com/flutter/cocoon/pull/3665 and https://github… (#3686)

These are causing the dashboard service to fail updating. Reverting these for now.
diff --git a/app_dart/bin/gae_server.dart b/app_dart/bin/gae_server.dart
index 29ff48d..378f1f2 100644
--- a/app_dart/bin/gae_server.dart
+++ b/app_dart/bin/gae_server.dart
@@ -7,11 +7,7 @@
 import 'package:appengine/appengine.dart';
 import 'package:cocoon_service/cocoon_service.dart';
 import 'package:cocoon_service/server.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
 import 'package:cocoon_service/src/service/commit_service.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
 import 'package:gcloud/db.dart';
 
 Future<void> main() async {
@@ -22,28 +18,15 @@
     final Config config = Config(dbService, cache);
     final AuthenticationProvider authProvider = AuthenticationProvider(config: config);
     final AuthenticationProvider swarmingAuthProvider = SwarmingAuthenticationProvider(config: config);
-
     final BuildBucketClient buildBucketClient = BuildBucketClient(
       accessTokenService: AccessTokenService.defaultProvider(config),
     );
 
-    final BuildBucketV2Client buildBucketV2Client = BuildBucketV2Client(
-      accessTokenService: AccessTokenService.defaultProvider(config),
-    );
-
     /// LUCI service class to communicate with buildBucket service.
     final LuciBuildService luciBuildService = LuciBuildService(
       config: config,
       cache: cache,
       buildBucketClient: buildBucketClient,
-      buildBucketV2Client: buildBucketV2Client,
-      pubsub: const PubSub(),
-    );
-
-    final LuciBuildServiceV2 luciBuildServiceV2 = LuciBuildServiceV2(
-      config: config,
-      cache: cache,
-      buildBucketV2Client: buildBucketV2Client,
       pubsub: const PubSub(),
     );
 
@@ -52,10 +35,6 @@
       config,
     );
 
-    final GithubChecksServiceV2 githubChecksServiceV2 = GithubChecksServiceV2(
-      config,
-    );
-
     // Gerrit service class to communicate with GoB.
     final GerritService gerritService = GerritService(config: config);
 
@@ -67,13 +46,6 @@
       luciBuildService: luciBuildService,
     );
 
-    final SchedulerV2 schedulerV2 = SchedulerV2(
-      cache: cache,
-      config: config,
-      githubChecksService: githubChecksServiceV2,
-      luciBuildService: luciBuildServiceV2,
-    );
-
     final BranchService branchService = BranchService(
       config: config,
       gerritService: gerritService,
@@ -87,14 +59,10 @@
       authProvider: authProvider,
       branchService: branchService,
       buildBucketClient: buildBucketClient,
-      buildBucketV2Client: buildBucketV2Client,
       gerritService: gerritService,
       scheduler: scheduler,
-      schedulerV2: schedulerV2,
       luciBuildService: luciBuildService,
-      luciBuildServiceV2: luciBuildServiceV2,
       githubChecksService: githubChecksService,
-      githubChecksServiceV2: githubChecksServiceV2,
       commitService: commitService,
       swarmingAuthProvider: swarmingAuthProvider,
     );
diff --git a/app_dart/bin/local_server.dart b/app_dart/bin/local_server.dart
index db9cff1..0bd8bc1 100644
--- a/app_dart/bin/local_server.dart
+++ b/app_dart/bin/local_server.dart
@@ -8,12 +8,8 @@
 import 'package:cocoon_service/cocoon_service.dart';
 import 'package:cocoon_service/server.dart';
 import 'package:cocoon_service/src/model/appengine/cocoon_config.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
 import 'package:cocoon_service/src/service/commit_service.dart';
 import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
 import 'package:gcloud/db.dart';
 
 import '../test/src/datastore/fake_datastore.dart';
@@ -29,28 +25,15 @@
   final Config config = Config(dbService, cache);
   final AuthenticationProvider authProvider = AuthenticationProvider(config: config);
   final AuthenticationProvider swarmingAuthProvider = SwarmingAuthenticationProvider(config: config);
-
   final BuildBucketClient buildBucketClient = BuildBucketClient(
     accessTokenService: AccessTokenService.defaultProvider(config),
   );
 
-  final BuildBucketV2Client buildBucketV2Client = BuildBucketV2Client(
-    accessTokenService: AccessTokenService.defaultProvider(config),
-  );
-
   /// LUCI service class to communicate with buildBucket service.
   final LuciBuildService luciBuildService = LuciBuildService(
     config: config,
     cache: cache,
     buildBucketClient: buildBucketClient,
-    buildBucketV2Client: buildBucketV2Client,
-    pubsub: const PubSub(),
-  );
-
-  final LuciBuildServiceV2 luciBuildServiceV2 = LuciBuildServiceV2(
-    config: config,
-    cache: cache,
-    buildBucketV2Client: buildBucketV2Client,
     pubsub: const PubSub(),
   );
 
@@ -59,10 +42,6 @@
     config,
   );
 
-  final GithubChecksServiceV2 githubChecksServiceV2 = GithubChecksServiceV2(
-    config,
-  );
-
   // Gerrit service class to communicate with GoB.
   final GerritService gerritService = GerritService(config: config);
 
@@ -74,13 +53,6 @@
     luciBuildService: luciBuildService,
   );
 
-  final SchedulerV2 schedulerV2 = SchedulerV2(
-    cache: cache,
-    config: config,
-    githubChecksService: githubChecksServiceV2,
-    luciBuildService: luciBuildServiceV2,
-  );
-
   final BranchService branchService = BranchService(
     config: config,
     gerritService: gerritService,
@@ -94,14 +66,10 @@
     authProvider: authProvider,
     branchService: branchService,
     buildBucketClient: buildBucketClient,
-    buildBucketV2Client: buildBucketV2Client,
     gerritService: gerritService,
     scheduler: scheduler,
-    schedulerV2: schedulerV2,
     luciBuildService: luciBuildService,
-    luciBuildServiceV2: luciBuildServiceV2,
     githubChecksService: githubChecksService,
-    githubChecksServiceV2: githubChecksServiceV2,
     commitService: commitService,
     swarmingAuthProvider: swarmingAuthProvider,
   );
diff --git a/app_dart/lib/server.dart b/app_dart/lib/server.dart
index fa5495f..540a3e4 100644
--- a/app_dart/lib/server.dart
+++ b/app_dart/lib/server.dart
@@ -6,18 +6,7 @@
 import 'dart:math';
 
 import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/request_handlers/postsubmit_luci_subscription_v2.dart';
-import 'package:cocoon_service/src/request_handlers/presubmit_luci_subscription_v2.dart';
-import 'package:cocoon_service/src/request_handlers/reset_prod_task_v2.dart';
-import 'package:cocoon_service/src/request_handlers/reset_try_task_v2.dart';
-import 'package:cocoon_service/src/request_handlers/scheduler/batch_backfiller_v2.dart';
-import 'package:cocoon_service/src/request_handlers/scheduler/scheduler_request_subscription.dart';
-import 'package:cocoon_service/src/request_handlers/vacuum_github_commits_v2.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
 import 'package:cocoon_service/src/service/commit_service.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
 
 typedef Server = Future<void> Function(HttpRequest);
 
@@ -29,15 +18,11 @@
   required AuthenticationProvider swarmingAuthProvider,
   required BranchService branchService,
   required BuildBucketClient buildBucketClient,
-  required BuildBucketV2Client buildBucketV2Client,
   required LuciBuildService luciBuildService,
-  required LuciBuildServiceV2 luciBuildServiceV2,
   required GithubChecksService githubChecksService,
-  required GithubChecksServiceV2 githubChecksServiceV2,
   required CommitService commitService,
   required GerritService gerritService,
   required Scheduler scheduler,
-  required SchedulerV2 schedulerV2,
 }) {
   final Map<String, RequestHandler<dynamic>> handlers = <String, RequestHandler<dynamic>>{
     '/api/check_flaky_builders': CheckFlakyBuilders(
@@ -52,7 +37,7 @@
     '/api/dart-internal-subscription': DartInternalSubscription(
       cache: cache,
       config: config,
-      buildBucketV2Client: buildBucketV2Client,
+      buildBucketClient: buildBucketClient,
     ),
     '/api/file_flaky_issue_and_pr': FileFlakyIssueAndPR(
       config: config,
@@ -80,36 +65,24 @@
       config: config,
       cache: cache,
       gerritService: gerritService,
+      githubChecksService: githubChecksService,
       scheduler: scheduler,
-      schedulerV2: schedulerV2,
       commitService: commitService,
     ),
     '/api/presubmit-luci-subscription': PresubmitLuciSubscription(
       cache: cache,
       config: config,
+      buildBucketClient: buildBucketClient,
       luciBuildService: luciBuildService,
       githubChecksService: githubChecksService,
       scheduler: scheduler,
     ),
-    '/api/v2/presubmit-luci-subscription': PresubmitLuciSubscriptionV2(
-      cache: cache,
-      config: config,
-      luciBuildService: luciBuildServiceV2,
-      githubChecksService: githubChecksServiceV2,
-      scheduler: schedulerV2,
-    ),
     '/api/postsubmit-luci-subscription': PostsubmitLuciSubscription(
       cache: cache,
       config: config,
       scheduler: scheduler,
       githubChecksService: githubChecksService,
     ),
-    '/api/v2/postsubmit-luci-subscription': PostsubmitLuciSubscriptionV2(
-      cache: cache,
-      config: config,
-      scheduler: schedulerV2,
-      githubChecksService: githubChecksServiceV2,
-    ),
     '/api/push-build-status-to-github': PushBuildStatusToGithub(
       config: config,
       authenticationProvider: authProvider,
@@ -118,47 +91,26 @@
       config: config,
       authenticationProvider: authProvider,
     ),
-    // I do not believe these recieve a build message.
     '/api/reset-prod-task': ResetProdTask(
       config: config,
       authenticationProvider: authProvider,
       luciBuildService: luciBuildService,
       scheduler: scheduler,
     ),
-    '/api/v2/reset-prod-task': ResetProdTaskV2(
-      config: config,
-      authenticationProvider: authProvider,
-      luciBuildService: luciBuildServiceV2,
-      scheduler: schedulerV2,
-    ),
     '/api/reset-try-task': ResetTryTask(
       config: config,
       authenticationProvider: authProvider,
       scheduler: scheduler,
     ),
-    '/api/v2/reset-try-task': ResetTryTaskV2(
-      config: config,
-      authenticationProvider: authProvider,
-      scheduler: schedulerV2,
-    ),
     '/api/scheduler/batch-backfiller': BatchBackfiller(
       config: config,
       scheduler: scheduler,
     ),
-    '/api/v2/scheduler/batch-backfiller': BatchBackfillerV2(
-      config: config,
-      scheduler: schedulerV2,
-    ),
     '/api/scheduler/batch-request-subscription': SchedulerRequestSubscription(
       cache: cache,
       config: config,
       buildBucketClient: buildBucketClient,
     ),
-    '/api/v2/scheduler/batch-request-subscription': SchedulerRequestSubscriptionV2(
-      cache: cache,
-      config: config,
-      buildBucketClient: buildBucketV2Client,
-    ),
     '/api/scheduler/vacuum-stale-tasks': VacuumStaleTasks(
       config: config,
     ),
@@ -192,11 +144,6 @@
       authenticationProvider: authProvider,
       scheduler: scheduler,
     ),
-    '/api/v2/vacuum-github-commits': VacuumGithubCommitsV2(
-      config: config,
-      authenticationProvider: authProvider,
-      scheduler: schedulerV2,
-    ),
 
     /// Returns status of the framework tree.
     ///
diff --git a/app_dart/lib/src/request_handlers/dart_internal_subscription.dart b/app_dart/lib/src/request_handlers/dart_internal_subscription.dart
index 35a12e5..4c12be2 100644
--- a/app_dart/lib/src/request_handlers/dart_internal_subscription.dart
+++ b/app_dart/lib/src/request_handlers/dart_internal_subscription.dart
@@ -2,18 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// import 'package:cocoon_service/src/model/luci/buildbucket.dart';
 import 'dart:convert';
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:fixnum/fixnum.dart';
+
+import 'package:cocoon_service/src/model/luci/buildbucket.dart';
 import 'package:googleapis/firestore/v1.dart';
 import 'package:meta/meta.dart';
 
 import '../../cocoon_service.dart';
 import '../model/appengine/task.dart';
 import '../model/firestore/task.dart' as firestore;
-import '../request_handling/subscription_handler_v2.dart';
-import '../service/build_bucket_v2_client.dart';
+import '../request_handling/subscription_handler.dart';
 import '../service/datastore.dart';
 import '../service/logging.dart';
 
@@ -26,18 +24,18 @@
 /// The PubSub subscription is set up here:
 /// https://console.cloud.google.com/cloudpubsub/subscription/detail/dart-internal-build-results-sub?project=flutter-dashboard
 @immutable
-class DartInternalSubscription extends SubscriptionHandlerV2 {
+class DartInternalSubscription extends SubscriptionHandler {
   /// Creates an endpoint for listening for dart-internal build results.
   /// The message should contain a single buildbucket id
   const DartInternalSubscription({
     required super.cache,
     required super.config,
     super.authProvider,
-    required this.buildBucketV2Client,
+    required this.buildBucketClient,
     @visibleForTesting this.datastoreProvider = DatastoreService.defaultProvider,
   }) : super(subscriptionName: 'dart-internal-build-results-sub');
 
-  final BuildBucketV2Client buildBucketV2Client;
+  final BuildBucketClient buildBucketClient;
   final DatastoreServiceProvider datastoreProvider;
 
   @override
@@ -49,19 +47,17 @@
       return Body.empty;
     }
 
-    // This looks to be like we are simply getting the build and not the top level
-    // buildsPubSub message.
-    final Map<String, dynamic> jsonBuildMap = json.decode(message.data!);
+    final dynamic buildData = json.decode(message.data!);
+    log.info('Build data json: $buildData');
 
-    if (jsonBuildMap['build'] == null) {
+    if (buildData['build'] == null) {
       log.info('no build information in message');
       return Body.empty;
     }
 
-    final String project = jsonBuildMap['build']['builder']['project'];
-    final String bucket = jsonBuildMap['build']['builder']['bucket'];
-    final String builder = jsonBuildMap['build']['builder']['builder'];
-    final Int64 buildId = Int64.parseInt(jsonBuildMap['build']['id']);
+    final String project = buildData['build']['builder']['project'];
+    final String bucket = buildData['build']['builder']['bucket'];
+    final String builder = buildData['build']['builder']['builder'];
 
     // This should already be covered by the pubsub filter, but adding an additional check
     // to ensure we don't process builds that aren't from dart-internal/flutter.
@@ -80,31 +76,28 @@
       return Body.empty;
     }
 
-    log.info('Creating build request object with build id $buildId');
-
-    final bbv2.GetBuildRequest getBuildRequest = bbv2.GetBuildRequest(
-      id: buildId,
+    final String buildbucketId = buildData['build']['id'];
+    log.info('Creating build request object with build id $buildbucketId');
+    final GetBuildRequest request = GetBuildRequest(
+      id: buildbucketId,
     );
 
     log.info(
-      'Calling buildbucket api to get build data for build $buildId',
+      'Calling buildbucket api to get build data for build $buildbucketId',
     );
-
-    final bbv2.Build existingBuild = await buildBucketV2Client.getBuild(getBuildRequest);
-
-    log.info('Got back existing builder with name: ${existingBuild.builder.builder}');
+    final Build build = await buildBucketClient.getBuild(request);
 
     log.info('Checking for existing task in datastore');
-    final Task? existingTask = await datastore.getTaskFromBuildbucketV2Build(existingBuild);
+    final Task? existingTask = await datastore.getTaskFromBuildbucketBuild(build);
 
     late Task taskToInsert;
     if (existingTask != null) {
-      log.info('Updating Task from existing Build');
-      existingTask.updateFromBuildbucketV2Build(existingBuild);
+      log.info('Updating Task from existing Task');
+      existingTask.updateFromBuildbucketBuild(build);
       taskToInsert = existingTask;
     } else {
       log.info('Creating Task from Buildbucket result');
-      taskToInsert = await Task.fromBuildbucketV2Build(existingBuild, datastore);
+      taskToInsert = await Task.fromBuildbucketBuild(build, datastore);
     }
 
     log.info('Inserting Task into the datastore: ${taskToInsert.toString()}');
diff --git a/app_dart/lib/src/request_handlers/github/webhook_subscription.dart b/app_dart/lib/src/request_handlers/github/webhook_subscription.dart
index 24704e7..1b94f14 100644
--- a/app_dart/lib/src/request_handlers/github/webhook_subscription.dart
+++ b/app_dart/lib/src/request_handlers/github/webhook_subscription.dart
@@ -5,8 +5,6 @@
 import 'dart:convert';
 
 import 'package:cocoon_service/src/service/commit_service.dart';
-import 'package:cocoon_service/src/service/scheduler.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
 import 'package:github/github.dart';
 import 'package:github/hooks.dart';
 import 'package:meta/meta.dart';
@@ -20,7 +18,9 @@
 import '../../service/config.dart';
 import '../../service/datastore.dart';
 import '../../service/gerrit_service.dart';
+import '../../service/github_checks_service.dart';
 import '../../service/logging.dart';
+import '../../service/scheduler.dart';
 
 // Filenames which are not actually tests.
 const List<String> kNotActuallyATest = <String>[
@@ -68,17 +68,14 @@
     required super.cache,
     required super.config,
     required this.scheduler,
-    required this.schedulerV2,
     required this.gerritService,
     required this.commitService,
+    this.githubChecksService,
     this.datastoreProvider = DatastoreService.defaultProvider,
     super.authProvider,
-    // Gets the initial github events from this sub after the webhook uploads them.
   }) : super(subscriptionName: 'github-webhooks-sub');
 
   /// Cocoon scheduler to trigger tasks against changes from GitHub.
-  final SchedulerV2 schedulerV2;
-
   final Scheduler scheduler;
 
   /// To verify whether a commit was mirrored to GoB.
@@ -87,6 +84,9 @@
   /// Used to handle push events and create commits based on those events.
   final CommitService commitService;
 
+  /// To provide build status updates to GitHub pull requests.
+  final GithubChecksService? githubChecksService;
+
   final DatastoreServiceProvider datastoreProvider;
 
   @override
@@ -107,7 +107,7 @@
       case 'check_run':
         final Map<String, dynamic> event = jsonDecode(webhook.payload) as Map<String, dynamic>;
         final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(event);
-        if (await schedulerV2.processCheckRun(checkRunEvent) == false) {
+        if (await scheduler.processCheckRun(checkRunEvent) == false) {
           throw InternalServerError('Failed to process check_run event. checkRunEvent: $checkRunEvent');
         }
         break;
@@ -164,7 +164,7 @@
         // If it was closed without merging, cancel any outstanding tryjobs.
         // We'll leave unfinished jobs if it was merged since we care about those
         // results.
-        await schedulerV2.cancelPreSubmitTargets(
+        await scheduler.cancelPreSubmitTargets(
           pullRequest: pr,
           reason: (!pr.merged!) ? 'Pull request closed' : 'Pull request merged',
         );
@@ -173,7 +173,7 @@
           log.fine('Pull request ${pr.number} was closed and merged.');
           if (await _commitExistsInGob(pr)) {
             log.fine('Merged commit was found on GoB mirror. Scheduling postsubmit tasks...');
-            return schedulerV2.addPullRequest(pr);
+            return scheduler.addPullRequest(pr);
           }
           throw InternalServerError(
             '${pr.mergeCommitSha!} was not found on GoB. Failing so this event can be retried...',
@@ -246,7 +246,7 @@
       return;
     }
 
-    await schedulerV2.triggerPresubmitTargets(pullRequest: pr);
+    await scheduler.triggerPresubmitTargets(pullRequest: pr);
   }
 
   /// Release tooling generates cherrypick pull requests that should be granted an approval.
diff --git a/app_dart/lib/src/request_handlers/postsubmit_luci_subscription_v2.dart b/app_dart/lib/src/request_handlers/postsubmit_luci_subscription_v2.dart
deleted file mode 100644
index 866187d..0000000
--- a/app_dart/lib/src/request_handlers/postsubmit_luci_subscription_v2.dart
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/ci_yaml.dart';
-import 'package:cocoon_service/src/model/luci/user_data.dart';
-import 'package:gcloud/db.dart';
-import 'package:googleapis/firestore/v1.dart' hide Status;
-import 'package:meta/meta.dart';
-
-import '../model/appengine/commit.dart';
-import '../model/appengine/task.dart';
-import '../model/firestore/task.dart' as firestore;
-import '../request_handling/body.dart';
-import '../request_handling/exceptions.dart';
-import '../request_handling/subscription_handler_v2.dart';
-import '../service/datastore.dart';
-import '../service/firestore.dart';
-import '../service/logging.dart';
-import '../service/github_checks_service_v2.dart';
-import '../service/scheduler_v2.dart';
-
-/// An endpoint for listening to build updates for postsubmit builds.
-///
-/// The PubSub subscription is set up here:
-/// https://cloud.google.com/cloudpubsub/subscription/detail/build-bucket-postsubmit-sub?project=flutter-dashboard&tab=overview
-///
-/// This endpoint is responsible for updating Datastore with the result of builds from LUCI.
-@immutable
-class PostsubmitLuciSubscriptionV2 extends SubscriptionHandlerV2 {
-  /// Creates an endpoint for listening to LUCI status updates.
-  const PostsubmitLuciSubscriptionV2({
-    required super.cache,
-    required super.config,
-    super.authProvider,
-    @visibleForTesting this.datastoreProvider = DatastoreService.defaultProvider,
-    required this.scheduler,
-    required this.githubChecksService,
-  }) : super(subscriptionName: 'build-bucket-postsubmit-sub');
-
-  final DatastoreServiceProvider datastoreProvider;
-  final SchedulerV2 scheduler;
-  final GithubChecksServiceV2 githubChecksService;
-
-  @override
-  Future<Body> post() async {
-    if (message.data == null) {
-      log.info('no data in message');
-      return Body.empty;
-    }
-
-    final DatastoreService datastore = datastoreProvider(config.db);
-    final FirestoreService firestoreService = await config.createFirestoreService();
-
-    final bbv2.PubSubCallBack pubSubCallBack = bbv2.PubSubCallBack();
-    pubSubCallBack.mergeFromProto3Json(jsonDecode(message.data!) as Map<String, dynamic>);
-    final bbv2.BuildsV2PubSub buildsV2PubSub = pubSubCallBack.buildPubsub;
-
-    Map<String, dynamic> userDataMap = <String, dynamic>{};
-    try {
-      userDataMap = json.decode(String.fromCharCodes(pubSubCallBack.userData));
-      log.info('User data was not base64 encoded.');
-    } on FormatException {
-      userDataMap = UserData.decodeUserDataBytes(pubSubCallBack.userData);
-      log.info('Decoding base64 encoded user data.');
-    }
-
-    // collect userData
-    if (userDataMap.isEmpty) {
-      log.info('User data is empty');
-      return Body.empty;
-    }
-
-    log.fine('userData=$userDataMap');
-
-    if (!buildsV2PubSub.hasBuild()) {
-      log.warning('No build was found in message.');
-      return Body.empty;
-    }
-
-    final bbv2.Build build = buildsV2PubSub.build;
-    // Note that result is no longer present in the output.
-    log.fine('Updating buildId=${build.id} for result=${build.status}');
-
-    log.info('build ${build.toProto3Json()}');
-
-    final String? rawTaskKey = userDataMap['task_key'] as String?;
-    final String? rawCommitKey = userDataMap['commit_key'] as String?;
-    final String? taskDocumentName = userDataMap['firestore_task_document_name'] as String?;
-    if (taskDocumentName == null) {
-      throw const BadRequestException('userData does not contain firestore_task_document_name');
-    }
-
-    final Key<String> commitKey = Key<String>(Key<dynamic>.emptyKey(Partition(null)), Commit, rawCommitKey);
-    Task? task;
-    firestore.Task? firestoreTask;
-    log.info('Looking up task document $kDatabase/documents/${firestore.kTaskCollectionId}/$taskDocumentName...');
-    final int taskId = int.parse(rawTaskKey!);
-    final Key<int> taskKey = Key<int>(commitKey, Task, taskId);
-    task = await datastore.lookupByValue<Task>(taskKey);
-    firestoreTask = await firestore.Task.fromFirestore(
-      firestoreService: firestoreService,
-      documentName: '$kDatabase/documents/${firestore.kTaskCollectionId}/$taskDocumentName',
-    );
-    log.info('Found $firestoreTask');
-
-    if (_shouldUpdateTask(build, firestoreTask)) {
-      final String oldTaskStatus = firestoreTask.status;
-      firestoreTask.updateFromBuildV2(build);
-
-      log.info('Updated firestore task $firestoreTask');
-
-      task.updateFromBuildbucketV2Build(build);
-      await datastore.insert(<Task>[task]);
-      final List<Write> writes = documentsToWrites([firestoreTask], exists: true);
-      await firestoreService.batchWriteDocuments(BatchWriteRequest(writes: writes), kDatabase);
-      log.fine('Updated datastore from $oldTaskStatus to ${firestoreTask.status}');
-    } else {
-      log.fine('skip processing for build with status scheduled or task with status finished.');
-    }
-
-    final Commit commit = await datastore.lookupByValue<Commit>(commitKey);
-    final CiYaml ciYaml = await scheduler.getCiYaml(commit);
-    final List<Target> postsubmitTargets = ciYaml.postsubmitTargets;
-    if (!postsubmitTargets.any((element) => element.value.name == firestoreTask!.taskName)) {
-      log.warning('Target ${firestoreTask.taskName} has been deleted from TOT. Skip updating.');
-      return Body.empty;
-    }
-    final Target target =
-        postsubmitTargets.singleWhere((Target target) => target.value.name == firestoreTask!.taskName);
-    if (firestoreTask.status == firestore.Task.statusFailed ||
-        firestoreTask.status == firestore.Task.statusInfraFailure ||
-        firestoreTask.status == firestore.Task.statusCancelled) {
-      log.fine('Trying to auto-retry...');
-      final bool retried = await scheduler.luciBuildService.checkRerunBuilder(
-        commit: commit,
-        target: target,
-        task: task,
-        datastore: datastore,
-        taskDocument: firestoreTask,
-        firestoreService: firestoreService,
-      );
-      log.info('Retried: $retried');
-    }
-
-    // Only update GitHub checks if target is not bringup
-    if (target.value.bringup == false && config.postsubmitSupportedRepos.contains(target.slug)) {
-      log.info('Updating check status for ${target.getTestName}');
-      await githubChecksService.updateCheckStatus(
-        build: build,
-        userDataMap: userDataMap,
-        luciBuildService: scheduler.luciBuildService,
-        slug: commit.slug,
-      );
-    }
-
-    return Body.empty;
-  }
-
-  // No need to update task in datastore if
-  // 1) the build is `scheduled`. Task is marked as `In Progress`
-  //    whenever scheduled, either from scheduler/backfiller/rerun. We need to update
-  //    task in datastore only for
-  //    a) `started`: update info like builder number.
-  //    b) `completed`: update info like status.
-  // 2) the task is already completed.
-  //    The task may have been marked as completed from test framework via update-task-status API.
-  bool _shouldUpdateTask(bbv2.Build build, firestore.Task task) {
-    return build.status != bbv2.Status.SCHEDULED && !firestore.Task.finishedStatusValues.contains(task.status);
-  }
-}
diff --git a/app_dart/lib/src/request_handlers/presubmit_luci_subscription.dart b/app_dart/lib/src/request_handlers/presubmit_luci_subscription.dart
index ecdba75..8049eb2 100644
--- a/app_dart/lib/src/request_handlers/presubmit_luci_subscription.dart
+++ b/app_dart/lib/src/request_handlers/presubmit_luci_subscription.dart
@@ -12,6 +12,7 @@
 import '../request_handling/authentication.dart';
 import '../request_handling/body.dart';
 import '../request_handling/subscription_handler.dart';
+import '../service/buildbucket.dart';
 import '../service/config.dart';
 import '../service/github_checks_service.dart';
 import '../service/logging.dart';
@@ -36,12 +37,14 @@
   const PresubmitLuciSubscription({
     required super.cache,
     required super.config,
+    required this.buildBucketClient,
     required this.scheduler,
     required this.luciBuildService,
     required this.githubChecksService,
     AuthenticationProvider? authProvider,
   }) : super(subscriptionName: 'github-updater');
 
+  final BuildBucketClient buildBucketClient;
   final LuciBuildService luciBuildService;
   final GithubChecksService githubChecksService;
   final Scheduler scheduler;
@@ -93,6 +96,13 @@
     return Body.empty;
   }
 
+  /// Gets target's allowed reschedule attempt.
+  ///
+  /// Each target can define their own allowed max number of reschedule attemp, and it
+  /// is defined as a property `presubmit_max_attempts`.
+  ///
+  /// If not property is defined, the target doesn't allow a reschedule after failures.
+  /// Typically the property will be used for targets that are likely flaky.
   Future<int> _getMaxAttempt(
     BuildPushMessage buildPushMessage,
     RepositorySlug slug,
diff --git a/app_dart/lib/src/request_handlers/presubmit_luci_subscription_v2.dart b/app_dart/lib/src/request_handlers/presubmit_luci_subscription_v2.dart
deleted file mode 100644
index 5964a01..0000000
--- a/app_dart/lib/src/request_handlers/presubmit_luci_subscription_v2.dart
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/src/model/luci/user_data.dart';
-import 'package:cocoon_service/src/request_handling/subscription_handler_v2.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:github/github.dart';
-import 'package:meta/meta.dart';
-
-import '../model/appengine/commit.dart';
-import '../model/ci_yaml/ci_yaml.dart';
-import '../model/ci_yaml/target.dart';
-import '../request_handling/authentication.dart';
-import '../request_handling/body.dart';
-import '../service/config.dart';
-import '../service/logging.dart';
-
-/// An endpoint for listening to LUCI status updates for scheduled builds.
-///
-/// [ScheduleBuildRequest.notify] property is set to tell LUCI to use this
-/// PubSub topic. LUCI then publishes updates about build status to that topic,
-/// which we listen to on the github-updater subscription. When new messages
-/// arrive, they are posted to this web service.
-///
-/// The PubSub subscription is set up here:
-/// https://console.cloud.google.com/cloudpubsub/subscription/detail/build-bucket-presubmit-sub?project=flutter-dashboard
-///
-/// This endpoint is responsible for updating GitHub with the status of
-/// completed builds from LUCI.
-@immutable
-class PresubmitLuciSubscriptionV2 extends SubscriptionHandlerV2 {
-  /// Creates an endpoint for listening to LUCI status updates.
-  const PresubmitLuciSubscriptionV2({
-    required super.cache,
-    required super.config,
-    required this.scheduler,
-    required this.luciBuildService,
-    required this.githubChecksService,
-    AuthenticationProvider? authProvider,
-  }) : super(subscriptionName: 'build-bucket-presubmit-sub');
-
-  final LuciBuildServiceV2 luciBuildService;
-  final GithubChecksServiceV2 githubChecksService;
-  final SchedulerV2 scheduler;
-
-  @override
-  Future<Body> post() async {
-    if (message.data == null) {
-      log.info('no data in message');
-      return Body.empty;
-    }
-
-    final bbv2.PubSubCallBack pubSubCallBack = bbv2.PubSubCallBack();
-    pubSubCallBack.mergeFromProto3Json(jsonDecode(message.data!) as Map<String, dynamic>);
-
-    final bbv2.BuildsV2PubSub buildsV2PubSub = pubSubCallBack.buildPubsub;
-
-    if (!buildsV2PubSub.hasBuild()) {
-      log.info('no build information in message');
-      return Body.empty;
-    }
-
-    final bbv2.Build build = buildsV2PubSub.build;
-
-    final String builderName = build.builder.builder;
-
-    final List<bbv2.StringPair> tags = build.tags;
-
-    log.fine('Available tags: ${tags.toString()}');
-
-    // Skip status update if we can not get the sha tag.
-    if (tags.where((element) => element.key == 'buildset').isEmpty) {
-      log.warning('Buildset tag not included, skipping Status Updates');
-      return Body.empty;
-    }
-
-    log.fine('Setting status (${build.status.toString()}) for $builderName');
-
-    if (!pubSubCallBack.hasUserData()) {
-      log.info('No user data was found in this request');
-      return Body.empty;
-    }
-
-    Map<String, dynamic> userDataMap = <String, dynamic>{};
-    try {
-      userDataMap = json.decode(String.fromCharCodes(pubSubCallBack.userData));
-      log.info('User data was not base64 encoded.');
-    } on FormatException {
-      userDataMap = UserData.decodeUserDataBytes(pubSubCallBack.userData);
-      log.info('Decoding base64 encoded user data.');
-    }
-
-    if (userDataMap.containsKey('repo_owner') && userDataMap.containsKey('repo_name')) {
-      final RepositorySlug slug =
-          RepositorySlug(userDataMap['repo_owner'] as String, userDataMap['repo_name'] as String);
-
-      bool rescheduled = false;
-      if (githubChecksService.taskFailed(build.status)) {
-        final int currentAttempt = githubChecksService.currentAttempt(tags);
-        final int maxAttempt = await _getMaxAttemptV2(
-          userDataMap,
-          slug,
-          builderName,
-        );
-        if (currentAttempt < maxAttempt) {
-          rescheduled = true;
-          log.fine('Rerunning failed task: $builderName');
-          await luciBuildService.rescheduleBuild(
-            builderName: builderName,
-            build: build,
-            rescheduleAttempt: currentAttempt + 1,
-            userDataMap: userDataMap,
-          );
-        }
-      }
-      await githubChecksService.updateCheckStatus(
-        build: build,
-        userDataMap: userDataMap,
-        luciBuildService: luciBuildService,
-        slug: slug,
-        rescheduled: rescheduled,
-      );
-    } else {
-      log.info('This repo does not support checks API');
-    }
-    return Body.empty;
-  }
-
-  Future<int> _getMaxAttemptV2(
-    Map<String, dynamic> userData,
-    RepositorySlug slug,
-    String builderName,
-  ) async {
-    final Commit commit = Commit(
-      branch: userData['commit_branch'] as String,
-      repository: slug.fullName,
-      sha: userData['commit_sha'] as String,
-    );
-    late CiYaml ciYaml;
-    if (commit.branch == Config.defaultBranch(commit.slug)) {
-      ciYaml = await scheduler.getCiYaml(commit, validate: true);
-    } else {
-      ciYaml = await scheduler.getCiYaml(commit);
-    }
-
-    // Do not block on the target not found.
-    if (!ciYaml.presubmitTargets.any((element) => element.value.name == builderName)) {
-      // do not reschedule
-      log.warning('Did not find builder with name: $builderName in ciYaml for ${commit.sha}');
-      final List<String> availableBuilderList = ciYaml.presubmitTargets.map((Target e) => e.value.name).toList();
-      log.warning('ciYaml presubmit targets found: $availableBuilderList');
-      return 1;
-    }
-
-    final Target target = ciYaml.presubmitTargets.where((element) => element.value.name == builderName).single;
-    final Map<String, Object> properties = target.getProperties();
-    if (!properties.containsKey('presubmit_max_attempts')) {
-      return 1;
-    }
-    return properties['presubmit_max_attempts'] as int;
-  }
-}
diff --git a/app_dart/lib/src/request_handlers/reset_prod_task.dart b/app_dart/lib/src/request_handlers/reset_prod_task.dart
index f6bae84..402a372 100644
--- a/app_dart/lib/src/request_handlers/reset_prod_task.dart
+++ b/app_dart/lib/src/request_handlers/reset_prod_task.dart
@@ -4,7 +4,6 @@
 
 import 'dart:async';
 
-import 'package:cocoon_service/cocoon_service.dart';
 import 'package:gcloud/db.dart';
 import 'package:github/github.dart';
 import 'package:meta/meta.dart';
@@ -17,8 +16,13 @@
 import '../model/ci_yaml/target.dart';
 import '../model/google/token_info.dart';
 import '../request_handling/api_request_handler.dart';
+import '../request_handling/body.dart';
 import '../request_handling/exceptions.dart';
+import '../service/config.dart';
 import '../service/datastore.dart';
+import '../service/firestore.dart';
+import '../service/luci_build_service.dart';
+import '../service/scheduler.dart';
 import '../service/logging.dart';
 
 /// Reruns a postsubmit LUCI build.
@@ -84,7 +88,7 @@
         gitBranch: branch!,
         sha: sha!,
       );
-      final List<Task> tasks = await datastore.db.query<Task>(ancestorKey: commitKey).run().toList();
+      final tasks = await datastore.db.query<Task>(ancestorKey: commitKey).run().toList();
       final List<Future<void>> futures = <Future<void>>[];
       for (final Task task in tasks) {
         if (!Task.taskFailStatusSet.contains(task.status)) continue;
@@ -157,16 +161,12 @@
       final int currentAttempt = task.attempts!;
       taskDocumentName = '$kDatabase/documents/${firestore.kTaskCollectionId}/${sha}_${taskName}_$currentAttempt';
     }
-    taskDocument = await firestore.Task.fromFirestore(
-      firestoreService: firestoreService,
-      documentName: taskDocumentName,
-    );
-
+    taskDocument =
+        await firestore.Task.fromFirestore(firestoreService: firestoreService, documentName: taskDocumentName);
     final Map<String, List<String>> tags = <String, List<String>>{
       'triggered_by': <String>[email],
       'trigger_type': <String>['manual_retry'],
     };
-
     final bool isRerunning = await luciBuildService.checkRerunBuilder(
       commit: commit,
       task: task,
diff --git a/app_dart/lib/src/request_handlers/reset_prod_task_v2.dart b/app_dart/lib/src/request_handlers/reset_prod_task_v2.dart
deleted file mode 100644
index ce25a1a..0000000
--- a/app_dart/lib/src/request_handlers/reset_prod_task_v2.dart
+++ /dev/null
@@ -1,226 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart';
-import 'package:meta/meta.dart';
-
-import '../model/appengine/commit.dart';
-import '../model/appengine/key_helper.dart';
-import '../model/appengine/task.dart';
-import '../model/firestore/task.dart' as firestore;
-import '../model/ci_yaml/ci_yaml.dart';
-import '../model/ci_yaml/target.dart';
-import '../model/google/token_info.dart';
-import '../request_handling/api_request_handler.dart';
-import '../request_handling/body.dart';
-import '../request_handling/exceptions.dart';
-import '../service/config.dart';
-import '../service/datastore.dart';
-import '../service/firestore.dart';
-
-/// Reruns a postsubmit LUCI build.
-///
-/// Expects either [taskKeyParam] or a set of params that give enough detail to lookup a task in datastore.
-@immutable
-class ResetProdTaskV2 extends ApiRequestHandler<Body> {
-  const ResetProdTaskV2({
-    required super.config,
-    required super.authenticationProvider,
-    required this.luciBuildService,
-    required this.scheduler,
-    @visibleForTesting DatastoreServiceProvider? datastoreProvider,
-  }) : datastoreProvider = datastoreProvider ?? DatastoreService.defaultProvider;
-
-  final DatastoreServiceProvider datastoreProvider;
-  final LuciBuildServiceV2 luciBuildService;
-  final SchedulerV2 scheduler;
-
-  static const String branchParam = 'Branch';
-  static const String taskKeyParam = 'Key';
-  static const String ownerParam = 'Owner';
-  static const String repoParam = 'Repo';
-  static const String commitShaParam = 'Commit';
-  static const String taskDocumentNameParam = 'taskDocumentName';
-
-  /// Name of the task to be retried.
-  ///
-  /// If "all" is given, all failed tasks will be retried. This enables
-  /// oncalls to quickly recover a commit without the tedium of the UI.
-  static const String taskParam = 'Task';
-
-  @override
-  Future<Body> post() async {
-    final DatastoreService datastore = datastoreProvider(config.db);
-    final FirestoreService firestoreService = await config.createFirestoreService();
-    final String? encodedKey = requestData![taskKeyParam] as String?;
-    String? branch = requestData![branchParam] as String?;
-    final String owner = requestData![ownerParam] as String? ?? 'flutter';
-    final String? repo = requestData![repoParam] as String?;
-    final String? sha = requestData![commitShaParam] as String?;
-    final TokenInfo token = await tokenInfo(request!);
-    final String? taskName = requestData![taskParam] as String?;
-    // When Frontend is switched to Firstore, the task document name will be passed over.
-    final String? taskDocumentName = requestData![taskDocumentNameParam] as String?;
-
-    RepositorySlug? slug;
-    if (encodedKey != null && encodedKey.isNotEmpty) {
-      // Check params required for dashboard.
-      checkRequiredParameters(<String>[taskKeyParam]);
-    } else {
-      // Checks params required when this API is called with curl.
-      checkRequiredParameters(<String>[commitShaParam, taskParam, repoParam]);
-      slug = RepositorySlug(owner, repo!);
-      branch ??= Config.defaultBranch(slug);
-    }
-
-    if (taskName == 'all') {
-      final Key<String> commitKey = Commit.createKey(
-        db: datastore.db,
-        slug: slug!,
-        gitBranch: branch!,
-        sha: sha!,
-      );
-      final List<Task> tasks = await datastore.db.query<Task>(ancestorKey: commitKey).run().toList();
-      final List<Future<void>> futures = <Future<void>>[];
-      for (final Task task in tasks) {
-        if (!Task.taskFailStatusSet.contains(task.status)) continue;
-        futures.add(
-          rerun(
-            datastore: datastore,
-            firestoreService: firestoreService,
-            branch: branch,
-            sha: sha,
-            taskName: task.name,
-            slug: slug,
-            email: token.email!,
-          ),
-        );
-      }
-      await Future.wait(futures);
-    } else {
-      await rerun(
-        datastore: datastore,
-        firestoreService: firestoreService,
-        encodedKey: encodedKey,
-        branch: branch,
-        sha: sha,
-        taskName: taskName,
-        taskDocumentName: taskDocumentName,
-        slug: slug,
-        email: token.email!,
-        ignoreChecks: true,
-      );
-    }
-
-    return Body.empty;
-  }
-
-  Future<void> rerun({
-    required DatastoreService datastore,
-    required FirestoreService firestoreService,
-    String? encodedKey,
-    String? branch,
-    String? sha,
-    String? taskName,
-    RepositorySlug? slug,
-    String? taskDocumentName,
-    required String email,
-    bool ignoreChecks = false,
-  }) async {
-    // Prepares Datastore task.
-    final Task task = await _getTaskFromNamedParams(
-      datastore: datastore,
-      encodedKey: encodedKey,
-      branch: branch,
-      name: taskName,
-      sha: sha,
-      slug: slug,
-    );
-    final Commit commit = await _getCommitFromTask(datastore, task);
-    sha ??= commit.id!.split('/').last;
-    taskName ??= task.name;
-
-    final CiYaml ciYaml = await scheduler.getCiYaml(commit);
-    final Target target = ciYaml.postsubmitTargets.singleWhere((Target target) => target.value.name == task.name);
-
-    // Prepares Firestore task.
-    firestore.Task? taskDocument;
-    if (taskDocumentName == null) {
-      final int currentAttempt = task.attempts!;
-      taskDocumentName = '$kDatabase/documents/${firestore.kTaskCollectionId}/${sha}_${taskName}_$currentAttempt';
-    }
-    taskDocument = await firestore.Task.fromFirestore(
-      firestoreService: firestoreService,
-      documentName: taskDocumentName,
-    );
-
-    final List<bbv2.StringPair> tags = <bbv2.StringPair>[
-      bbv2.StringPair(
-        key: 'triggered_by',
-        value: email,
-      ),
-      bbv2.StringPair(
-        key: 'trigger_type',
-        value: 'manual_retry',
-      ),
-    ];
-
-    final bool isRerunning = await luciBuildService.checkRerunBuilder(
-      commit: commit,
-      task: task,
-      target: target,
-      datastore: datastore,
-      tags: tags,
-      ignoreChecks: ignoreChecks,
-      firestoreService: firestoreService,
-      taskDocument: taskDocument,
-    );
-
-    // For human retries from the dashboard, notify if a task failed to rerun.
-    if (ignoreChecks && isRerunning == false) {
-      throw InternalServerError('Failed to rerun $taskName');
-    }
-  }
-
-  /// Retrieve [Task] from [DatastoreService] from either an encoded key or commit + task name info.
-  ///
-  /// If [encodedKey] is passed, [KeyHelper] will decode it directly and return the associated entity.
-  ///
-  /// Otherwise, [name], [branch], [sha], and [slug] must be passed to find the [Task].
-  Future<Task> _getTaskFromNamedParams({
-    required DatastoreService datastore,
-    String? encodedKey,
-    String? branch,
-    String? name,
-    String? sha,
-    RepositorySlug? slug,
-  }) async {
-    if (encodedKey != null && encodedKey.isNotEmpty) {
-      final Key<int> key = config.keyHelper.decode(encodedKey) as Key<int>;
-      return datastore.lookupByValue<Task>(key);
-    }
-    final Key<String> commitKey = Commit.createKey(
-      db: datastore.db,
-      slug: slug!,
-      gitBranch: branch!,
-      sha: sha!,
-    );
-    return Task.fromDatastore(
-      datastore: datastore,
-      commitKey: commitKey,
-      name: name!,
-    );
-  }
-
-  /// Returns the [Commit] associated with [Task].
-  Future<Commit> _getCommitFromTask(DatastoreService datastore, Task task) async {
-    return (await datastore.lookupByKey<Commit>(<Key<dynamic>>[task.parentKey!])).single!;
-  }
-}
diff --git a/app_dart/lib/src/request_handlers/reset_try_task_v2.dart b/app_dart/lib/src/request_handlers/reset_try_task_v2.dart
deleted file mode 100644
index 3278b18..0000000
--- a/app_dart/lib/src/request_handlers/reset_try_task_v2.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:github/github.dart';
-import 'package:meta/meta.dart';
-
-import '../../cocoon_service.dart';
-import '../request_handling/api_request_handler.dart';
-import '../request_handling/exceptions.dart';
-
-/// Runs all the applicable tasks for a given PR and commit hash. This will be
-/// used to unblock rollers when creating a new commit is not possible.
-@immutable
-class ResetTryTaskV2 extends ApiRequestHandler<Body> {
-  const ResetTryTaskV2({
-    required super.config,
-    required super.authenticationProvider,
-    required this.scheduler,
-  });
-
-  final SchedulerV2 scheduler;
-
-  static const String kOwnerParam = 'owner';
-  static const String kRepoParam = 'repo';
-  static const String kPullRequestNumberParam = 'pr';
-  static const String kBuilderParam = 'builders';
-
-  @override
-  Future<Body> get() async {
-    checkRequiredQueryParameters(<String>[kRepoParam, kPullRequestNumberParam]);
-    final String owner = request!.uri.queryParameters[kOwnerParam] ?? 'flutter';
-    final String repo = request!.uri.queryParameters[kRepoParam]!;
-    final String pr = request!.uri.queryParameters[kPullRequestNumberParam]!;
-    final String builders = request!.uri.queryParameters[kBuilderParam] ?? '';
-    final List<String> builderList = getBuilderList(builders);
-
-    final int? prNumber = int.tryParse(pr);
-    if (prNumber == null) {
-      throw const BadRequestException('$kPullRequestNumberParam must be a number');
-    }
-    final RepositorySlug slug = RepositorySlug(owner, repo);
-    final GitHub github = await config.createGitHubClient(slug: slug);
-    final PullRequest pullRequest = await github.pullRequests.get(slug, prNumber);
-    await scheduler.triggerPresubmitTargets(pullRequest: pullRequest, builderTriggerList: builderList);
-    return Body.empty;
-  }
-
-  /// Parses [builders] to a String list.
-  ///
-  /// The [builders] parameter is expecting comma joined string, e.g. 'builder1, builder2'.
-  /// Returns an empty list if no [builders] is specified.
-  List<String> getBuilderList(String builders) {
-    if (builders.isEmpty) {
-      return <String>[];
-    }
-    return builders.split(',').map((String builder) => builder.trim()).toList();
-  }
-}
diff --git a/app_dart/lib/src/request_handlers/scheduler/batch_backfiller_v2.dart b/app_dart/lib/src/request_handlers/scheduler/batch_backfiller_v2.dart
deleted file mode 100644
index 8a9710c..0000000
--- a/app_dart/lib/src/request_handlers/scheduler/batch_backfiller_v2.dart
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:cocoon_service/src/service/scheduler/policy.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart';
-import 'package:googleapis/firestore/v1.dart';
-import 'package:meta/meta.dart';
-import 'package:retry/retry.dart';
-
-import '../../model/ci_yaml/ci_yaml.dart';
-import '../../model/ci_yaml/target.dart';
-import '../../request_handling/exceptions.dart';
-import '../../service/logging.dart';
-
-/// Cron request handler for scheduling targets when capacity becomes available.
-///
-/// Targets that have a [BatchPolicy] need to have backfilling enabled to ensure that ToT is always being tested.
-@immutable
-class BatchBackfillerV2 extends RequestHandler {
-  /// Creates a subscription for sending BuildBucket requests.
-  const BatchBackfillerV2({
-    required super.config,
-    required this.scheduler,
-    @visibleForTesting this.datastoreProvider = DatastoreService.defaultProvider,
-  });
-
-  final DatastoreServiceProvider datastoreProvider;
-  final SchedulerV2 scheduler;
-
-  @override
-  Future<Body> get() async {
-    final List<Future<void>> futures = <Future<void>>[];
-
-    for (RepositorySlug slug in config.supportedRepos) {
-      futures.add(backfillRepository(slug));
-    }
-
-    // Process all repos asynchronously
-    await Future.wait<void>(futures);
-
-    return Body.empty;
-  }
-
-  Future<void> backfillRepository(RepositorySlug slug) async {
-    final DatastoreService datastore = datastoreProvider(config.db);
-    final List<FullTask> tasks =
-        await (datastore.queryRecentTasks(slug: slug, commitLimit: config.backfillerCommitLimit)).toList();
-
-    // Construct Task columns to scan for backfilling
-    final Map<String, List<FullTask>> taskMap = <String, List<FullTask>>{};
-    for (FullTask fullTask in tasks) {
-      if (taskMap.containsKey(fullTask.task.name)) {
-        taskMap[fullTask.task.name]!.add(fullTask);
-      } else {
-        taskMap[fullTask.task.name!] = <FullTask>[fullTask];
-      }
-    }
-
-    // Check if should be scheduled (there is no yellow runs). Run the most recent gray.
-    List<Tuple<Target, FullTask, int>> backfill = <Tuple<Target, FullTask, int>>[];
-    for (List<FullTask> taskColumn in taskMap.values) {
-      final FullTask task = taskColumn.first;
-      final CiYaml ciYaml = await scheduler.getCiYaml(task.commit);
-      final List<Target> ciYamlTargets = ciYaml.backfillTargets;
-      // Skips scheduling if the task is not in TOT commit anymore.
-      final bool taskInToT = ciYamlTargets.map((Target target) => target.value.name).toList().contains(task.task.name);
-      if (!taskInToT) {
-        continue;
-      }
-      final Target target = ciYamlTargets.singleWhere((target) => target.value.name == task.task.name);
-      if (target.schedulerPolicy is! BatchPolicy) {
-        continue;
-      }
-      final FullTask? backfillTask = _backfillTask(target, taskColumn);
-      final int? priority = backfillPriority(taskColumn.map((e) => e.task).toList());
-      if (priority != null && backfillTask != null) {
-        backfill.add(Tuple<Target, FullTask, int>(target, backfillTask, priority));
-      }
-    }
-
-    // Get the number of targets to be backfilled in each cycle.
-    backfill = getFilteredBackfill(backfill);
-
-    log.fine('Backfilling ${backfill.length} builds');
-    log.fine(backfill.map<String>((Tuple<Target, FullTask, int> tuple) => tuple.first.value.name));
-
-    // Update tasks status as in progress to avoid duplicate scheduling.
-    final List<Task> backfillTasks = backfill.map((Tuple<Target, FullTask, int> tuple) => tuple.second.task).toList();
-    try {
-      await datastore.withTransaction<void>((Transaction transaction) async {
-        transaction.queueMutations(inserts: backfillTasks);
-        await transaction.commit();
-        log.fine(
-          'Updated ${backfillTasks.length} tasks: ${backfillTasks.map((e) => e.name).toList()} when backfilling.',
-        );
-      });
-      // TODO(keyonghan): remove try catch logic after validated to work.
-      try {
-        await updateTaskDocuments(backfillTasks);
-      } catch (error) {
-        log.warning('Failed to update batch backfilled task documents in Firestore: $error');
-      }
-
-      // Schedule all builds asynchronously.
-      // Schedule after db updates to avoid duplicate scheduling when db update fails.
-      await _scheduleWithRetries(backfill);
-    } catch (error) {
-      log.severe('Failed to update tasks when backfilling: $error');
-    }
-  }
-
-  /// Updates task documents in Firestore.
-  Future<void> updateTaskDocuments(List<Task> tasks) async {
-    if (tasks.isEmpty) {
-      return;
-    }
-    final List<firestore.Task> taskDocuments = tasks.map((e) => firestore.taskToDocument(e)).toList();
-    final List<Write> writes = documentsToWrites(taskDocuments, exists: true);
-    final FirestoreService firestoreService = await config.createFirestoreService();
-    await firestoreService.writeViaTransaction(writes);
-  }
-
-  /// Filters [config.backfillerTargetLimit] targets to backfill.
-  ///
-  /// High priority targets will be guranteed to get back filled first. If more targets
-  /// than [config.backfillerTargetLimit], pick the limited number of targets after a
-  /// shuffle. This is to make sure all targets are picked with the same chance.
-  List<Tuple<Target, FullTask, int>> getFilteredBackfill(List<Tuple<Target, FullTask, int>> backfill) {
-    if (backfill.length <= config.backfillerTargetLimit) {
-      return backfill;
-    }
-    final List<Tuple<Target, FullTask, int>> filteredBackfill = <Tuple<Target, FullTask, int>>[];
-    final List<Tuple<Target, FullTask, int>> highPriorityBackfill =
-        backfill.where((element) => element.third == LuciBuildService.kRerunPriority).toList();
-    final List<Tuple<Target, FullTask, int>> normalPriorityBackfill =
-        backfill.where((element) => element.third != LuciBuildService.kRerunPriority).toList();
-    if (highPriorityBackfill.length >= config.backfillerTargetLimit) {
-      highPriorityBackfill.shuffle();
-      filteredBackfill.addAll(highPriorityBackfill.sublist(0, config.backfillerTargetLimit));
-    } else {
-      filteredBackfill.addAll(highPriorityBackfill);
-      normalPriorityBackfill.shuffle();
-      filteredBackfill
-          .addAll(normalPriorityBackfill.sublist(0, config.backfillerTargetLimit - highPriorityBackfill.length));
-    }
-    return filteredBackfill;
-  }
-
-  /// Schedules tasks with retry when hitting pub/sub server errors.
-  Future<void> _scheduleWithRetries(List<Tuple<Target, FullTask, int>> backfill) async {
-    const RetryOptions retryOptions = Config.schedulerRetry;
-    try {
-      await retryOptions.retry(
-        () async {
-          final List<List<Tuple<Target, Task, int>>> tupleLists =
-              await Future.wait<List<Tuple<Target, Task, int>>>(backfillRequestList(backfill));
-          if (tupleLists.any((List<Tuple<Target, Task, int>> tupleList) => tupleList.isNotEmpty)) {
-            final int nonEmptyListLenght = tupleLists.where((element) => element.isNotEmpty).toList().length;
-            log.info('Backfill fails and retry backfilling $nonEmptyListLenght targets.');
-            backfill = _updateBackfill(backfill, tupleLists);
-            throw InternalServerError('Failed to backfill ${backfill.length} targets.');
-          }
-        },
-        retryIf: (Exception e) => e is InternalServerError,
-      );
-    } catch (error) {
-      log.severe('Failed to backfill ${backfill.length} targets due to error: $error');
-    }
-  }
-
-  /// Updates the [backfill] list with those that fail to get scheduled.
-  ///
-  /// [tupleLists] maintains the same tuple order as those in [backfill].
-  /// Each element from [backfill] is encapsulated as a list in [tupleLists] to prepare for
-  /// [scheduler.luciBuildService.schedulePostsubmitBuilds].
-  List<Tuple<Target, FullTask, int>> _updateBackfill(
-    List<Tuple<Target, FullTask, int>> backfill,
-    List<List<Tuple<Target, Task, int>>> tupleLists,
-  ) {
-    final List<Tuple<Target, FullTask, int>> updatedBackfill = <Tuple<Target, FullTask, int>>[];
-    for (int i = 0; i < tupleLists.length; i++) {
-      if (tupleLists[i].isNotEmpty) {
-        updatedBackfill.add(backfill[i]);
-      }
-    }
-    return updatedBackfill;
-  }
-
-  /// Creates a list of backfill requests.
-  List<Future<List<Tuple<Target, Task, int>>>> backfillRequestList(List<Tuple<Target, FullTask, int>> backfill) {
-    final List<Future<List<Tuple<Target, Task, int>>>> futures = <Future<List<Tuple<Target, Task, int>>>>[];
-    for (Tuple<Target, FullTask, int> tuple in backfill) {
-      // TODO(chillers): The backfill priority is always going to be low. If this is a ToT task, we should run it at the default priority.
-      final Tuple<Target, Task, int> toBeScheduled = Tuple(
-        tuple.first,
-        tuple.second.task,
-        tuple.third,
-      );
-      futures.add(
-        scheduler.luciBuildService.schedulePostsubmitBuilds(
-          commit: tuple.second.commit,
-          toBeScheduled: [toBeScheduled],
-        ),
-      );
-    }
-
-    return futures;
-  }
-
-  /// Returns priority for back filled targets.
-  ///
-  /// Skips scheduling newly created targets whose available entries are
-  /// less than `BatchPolicy.kBatchSize`.
-  ///
-  /// Uses a higher priority if there is an earlier failed build. Otherwise,
-  /// uses default `LuciBuildService.kBackfillPriority`
-  int? backfillPriority(List<Task> tasks) {
-    if (tasks.length < BatchPolicy.kBatchSize) {
-      return null;
-    }
-    if (shouldRerunPriority(tasks, BatchPolicy.kBatchSize)) {
-      return LuciBuildService.kRerunPriority;
-    }
-    return LuciBuildService.kBackfillPriority;
-  }
-
-  /// Returns the most recent [FullTask] to backfill.
-  ///
-  /// A [FullTask] is only returned iff:
-  ///   1. There are no running builds (yellow)
-  ///   2. There are tasks that haven't been run (gray)
-  ///
-  /// This is naive, and doesn't rely on knowing the actual Flutter infra capacity.
-  ///
-  /// Otherwise, returns null indicating nothing should be backfilled.
-  FullTask? _backfillTask(Target target, List<FullTask> tasks) {
-    final List<FullTask> relevantTasks = tasks.where((FullTask task) => task.task.name == target.value.name).toList();
-    if (relevantTasks.any((FullTask task) => task.task.status == Task.statusInProgress)) {
-      // Don't schedule more builds where there is already a running task
-      return null;
-    }
-
-    final List<FullTask> backfillTask =
-        relevantTasks.where((FullTask task) => task.task.status == Task.statusNew).toList();
-    if (backfillTask.isEmpty) {
-      return null;
-    }
-
-    // First item in the list is guranteed to be most recent.
-    // Mark task as in progress to ensure it isn't scheduled over
-    backfillTask.first.task.status = Task.statusInProgress;
-    return backfillTask.first;
-  }
-}
diff --git a/app_dart/lib/src/request_handlers/scheduler/scheduler_request_subscription.dart b/app_dart/lib/src/request_handlers/scheduler/scheduler_request_subscription.dart
deleted file mode 100644
index 44f505b..0000000
--- a/app_dart/lib/src/request_handlers/scheduler/scheduler_request_subscription.dart
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-
-import 'package:cocoon_service/src/request_handling/subscription_handler_v2.dart';
-import 'package:meta/meta.dart';
-import 'package:retry/retry.dart';
-
-import '../../../cocoon_service.dart';
-import '../../service/build_bucket_v2_client.dart';
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import '../../request_handling/exceptions.dart';
-import '../../service/logging.dart';
-
-/// Subscription for making requests to BuildBucket.
-///
-/// The PubSub subscription is set up here:
-/// https://console.cloud.google.com/cloudpubsub/subscription/detail/cocoon-scheduler-requests?project=flutter-dashboard
-///
-/// This endpoint allows Cocoon to defer BuildBucket requests off the main request loop. This is critical when new
-/// commits are pushed, and they can schedule 100+ builds at once.
-///
-/// This endpoint takes in a POST request with the JSON of a [bbv2.BatchRequest]. In practice, the
-/// [bbv2.BatchRequest] should contain a single request.
-@immutable
-class SchedulerRequestSubscriptionV2 extends SubscriptionHandlerV2 {
-  /// Creates a subscription for sending BuildBucket requests.
-  const SchedulerRequestSubscriptionV2({
-    required super.cache,
-    required super.config,
-    required this.buildBucketClient,
-    super.authProvider,
-    this.retryOptions = Config.schedulerRetry,
-  }) : super(subscriptionName: 'cocoon-scheduler-requests-sub');
-
-  final BuildBucketV2Client buildBucketClient;
-
-  final RetryOptions retryOptions;
-
-  @override
-  Future<Body> post() async {
-    if (message.data == null) {
-      log.info('no data in message');
-      throw const BadRequestException('no data in message');
-    }
-
-    // final String data = message.data!;
-    log.fine('attempting to read message ${message.data}');
-
-    final bbv2.BatchRequest batchRequest = bbv2.BatchRequest.create();
-
-    // Merge from json only works with the integer field names.
-    batchRequest.mergeFromProto3Json(jsonDecode(message.data!) as Map<String, dynamic>);
-
-    log.info('Read the following data: ${batchRequest.toProto3Json().toString()}');
-
-    /// Retry scheduling builds upto 3 times.
-    ///
-    /// Log error message when still failing after retry. Avoid endless rescheduling
-    /// by acking the pub/sub message without throwing an exception.
-    String? unscheduledBuilds;
-    try {
-      await retryOptions.retry(
-        () async {
-          final List<bbv2.BatchRequest_Request> requestsToRetry = await _sendBatchRequest(batchRequest);
-
-          // Make a copy of the requests that are passed in as if simply access the list
-          // we make changes for all instances.
-          final List<bbv2.BatchRequest_Request> requestListCopy = [];
-          requestListCopy.addAll(requestsToRetry);
-          batchRequest.requests.clear();
-          batchRequest.requests.addAll(requestListCopy);
-
-          unscheduledBuilds = requestsToRetry.map((e) => e.scheduleBuild.builder).toString();
-          if (requestsToRetry.isNotEmpty) {
-            throw InternalServerError('Failed to schedule builds: $unscheduledBuilds.');
-          }
-        },
-        retryIf: (Exception e) => e is InternalServerError,
-      );
-    } catch (e) {
-      log.warning('Failed to schedule builds on exception: $unscheduledBuilds.');
-      return Body.forString('Failed to schedule builds: $unscheduledBuilds.');
-    }
-
-    return Body.empty;
-  }
-
-  /// Returns [List<bbv2.BatchRequest_Request>] of requests that need to be retried.
-  Future<List<bbv2.BatchRequest_Request>> _sendBatchRequest(bbv2.BatchRequest request) async {
-    log.info('Sending batch request for ${request.toProto3Json().toString()}');
-
-    bbv2.BatchResponse response;
-    try {
-      response = await buildBucketClient.batch(request);
-    } catch (e) {
-      log.severe('Exception making batch Requests.');
-      rethrow;
-    }
-
-    log.info('Made ${request.requests.length} and received ${response.responses.length}');
-    log.info('Responses: ${response.responses}');
-
-    // By default, retry everything. Then remove requests with a verified response.
-    // THese are the requests in the batch request object. Just requests.
-    final List<bbv2.BatchRequest_Request> retry = request.requests;
-
-    for (bbv2.BatchResponse_Response batchResponseResponse in response.responses) {
-      if (batchResponseResponse.hasScheduleBuild()) {
-        retry.removeWhere((element) => batchResponseResponse.scheduleBuild.builder == element.scheduleBuild.builder);
-      } else {
-        log.warning('Response does not have schedule build: $batchResponseResponse');
-      }
-
-      if (batchResponseResponse.hasError() && batchResponseResponse.error.code != 0) {
-        log.info('Non-zero grpc code: $batchResponseResponse');
-      }
-    }
-
-    return retry;
-  }
-}
diff --git a/app_dart/lib/src/request_handlers/vacuum_github_commits_v2.dart b/app_dart/lib/src/request_handlers/vacuum_github_commits_v2.dart
deleted file mode 100644
index b283e6e..0000000
--- a/app_dart/lib/src/request_handlers/vacuum_github_commits_v2.dart
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart' as gh;
-import 'package:meta/meta.dart';
-import 'package:truncate/truncate.dart';
-
-import '../model/appengine/commit.dart';
-import '../request_handling/api_request_handler.dart';
-import '../request_handling/body.dart';
-import '../service/config.dart';
-import '../service/datastore.dart';
-import '../service/github_service.dart';
-import '../service/logging.dart';
-
-/// Query GitHub for commits from the past day and ensure they exist in datastore.
-@immutable
-class VacuumGithubCommitsV2 extends ApiRequestHandler<Body> {
-  const VacuumGithubCommitsV2({
-    required super.config,
-    required super.authenticationProvider,
-    required this.scheduler,
-    @visibleForTesting this.datastoreProvider = DatastoreService.defaultProvider,
-  });
-
-  final DatastoreServiceProvider datastoreProvider;
-
-  final SchedulerV2 scheduler;
-
-  static const String branchParam = 'branch';
-
-  @override
-  Future<Body> get() async {
-    final DatastoreService datastore = datastoreProvider(config.db);
-
-    for (gh.RepositorySlug slug in config.supportedRepos) {
-      final String branch = request!.uri.queryParameters[branchParam] ?? Config.defaultBranch(slug);
-      await _vacuumRepository(slug, datastore: datastore, branch: branch);
-    }
-
-    return Body.empty;
-  }
-
-  Future<void> _vacuumRepository(
-    gh.RepositorySlug slug, {
-    DatastoreService? datastore,
-    required String branch,
-  }) async {
-    final GithubService githubService = await config.createGithubService(slug);
-    final List<Commit> commits = await _vacuumBranch(
-      slug,
-      branch,
-      datastore: datastore,
-      githubService: githubService,
-    );
-    await scheduler.addCommits(commits);
-  }
-
-  Future<List<Commit>> _vacuumBranch(
-    gh.RepositorySlug slug,
-    String branch, {
-    DatastoreService? datastore,
-    required GithubService githubService,
-  }) async {
-    List<gh.RepositoryCommit> commits = <gh.RepositoryCommit>[];
-    // Sliding window of times to add commits from.
-    final DateTime queryAfter = DateTime.now().subtract(const Duration(days: 1));
-    final DateTime queryBefore = DateTime.now().subtract(const Duration(minutes: 3));
-    try {
-      log.fine('Listing commit for slug: $slug branch: $branch and msSinceEpoch: ${queryAfter.millisecondsSinceEpoch}');
-      commits = await githubService.listBranchedCommits(slug, branch, queryAfter.millisecondsSinceEpoch);
-      log.fine('Retrieved ${commits.length} commits from GitHub');
-      // Do not try to add recent commits as they may already be processed
-      // by cocoon, which can cause race conditions.
-      commits = commits
-          .where(
-            (gh.RepositoryCommit commit) =>
-                commit.commit!.committer!.date!.millisecondsSinceEpoch < queryBefore.millisecondsSinceEpoch,
-          )
-          .toList();
-    } on gh.GitHubError catch (error) {
-      log.severe('$error');
-    }
-
-    return _toDatastoreCommit(slug, commits, datastore, branch);
-  }
-
-  /// Convert [gh.RepositoryCommit] to Cocoon's [Commit] format.
-  Future<List<Commit>> _toDatastoreCommit(
-    gh.RepositorySlug slug,
-    List<gh.RepositoryCommit> commits,
-    DatastoreService? datastore,
-    String branch,
-  ) async {
-    final List<Commit> recentCommits = <Commit>[];
-    for (gh.RepositoryCommit commit in commits) {
-      final String id = '${slug.fullName}/$branch/${commit.sha}';
-      final Key<String> key = datastore!.db.emptyKey.append<String>(Commit, id: id);
-      recentCommits.add(
-        Commit(
-          key: key,
-          timestamp: commit.commit!.committer!.date!.millisecondsSinceEpoch,
-          repository: slug.fullName,
-          sha: commit.sha!,
-          author: commit.author!.login!,
-          authorAvatarUrl: commit.author!.avatarUrl!,
-          // The field has a size of 1500 we need to ensure the commit message
-          // is at most 1500 chars long.
-          message: truncate(commit.commit!.message!, 1490, omission: '...'),
-          branch: branch,
-        ),
-      );
-    }
-    return recentCommits;
-  }
-}
diff --git a/app_dart/lib/src/service/build_bucket_v2_client.dart b/app_dart/lib/src/service/build_bucket_v2_client.dart
index 71fe175..70527ee 100644
--- a/app_dart/lib/src/service/build_bucket_v2_client.dart
+++ b/app_dart/lib/src/service/build_bucket_v2_client.dart
@@ -70,6 +70,7 @@
 
     log.info('Making bbv2 request with path: $url and body: $request');
 
+    //TODO most likely have issues here:
     final http.Response response = await httpClient.post(
       url,
       body: request,
diff --git a/app_dart/lib/src/service/github_checks_service_v2.dart b/app_dart/lib/src/service/github_checks_service_v2.dart
deleted file mode 100644
index f0fffe7..0000000
--- a/app_dart/lib/src/service/github_checks_service_v2.dart
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:github/github.dart' as github;
-import 'package:github/hooks.dart';
-
-import '../foundation/github_checks_util.dart';
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'config.dart';
-import 'github_service.dart';
-import 'logging.dart';
-import 'luci_build_service_v2.dart';
-
-const String kGithubSummary = '''
-**[Understanding a LUCI build failure](https://github.com/flutter/flutter/wiki/Understanding-a-LUCI-build-failure)**
-
-''';
-
-final List<bbv2.Status> terminalStatuses = [
-  bbv2.Status.CANCELED,
-  bbv2.Status.FAILURE,
-  bbv2.Status.INFRA_FAILURE,
-  bbv2.Status.SUCCESS,
-];
-
-/// Controls triggering builds and updating their status in the Github UI.
-class GithubChecksServiceV2 {
-  GithubChecksServiceV2(
-    this.config, {
-    GithubChecksUtil? githubChecksUtil,
-  }) : githubChecksUtil = githubChecksUtil ?? const GithubChecksUtil();
-
-  Config config;
-  GithubChecksUtil githubChecksUtil;
-
-  static Set<github.CheckRunConclusion> failedStatesSet = <github.CheckRunConclusion>{
-    github.CheckRunConclusion.cancelled,
-    github.CheckRunConclusion.failure,
-  };
-
-  /// Takes a [CheckSuiteEvent] and trigger all the relevant builds if this is a
-  /// new commit or only failed builds if the event was generated by a click on
-  /// the re-run all button in the Github UI.
-  /// Relevant API docs:
-  ///   https://docs.github.com/en/rest/reference/checks#create-a-check-suite
-  ///   https://docs.github.com/en/rest/reference/checks#rerequest-a-check-suite
-  Future<void> handleCheckSuite(
-    github.PullRequest pullRequest,
-    CheckSuiteEvent checkSuiteEvent,
-    SchedulerV2 scheduler,
-  ) async {
-    switch (checkSuiteEvent.action) {
-      case 'requested':
-        // Trigger all try builders.
-        log.info('Check suite request for pull request ${pullRequest.number}, ${pullRequest.title}');
-        await scheduler.triggerPresubmitTargets(
-          pullRequest: pullRequest,
-        );
-        break;
-      case 'rerequested':
-        log.info('Check suite re-request for pull request ${pullRequest.number}, ${pullRequest.title}');
-        pullRequest.head = github.PullRequestHead(sha: checkSuiteEvent.checkSuite?.headSha);
-        return scheduler.retryPresubmitTargets(
-          pullRequest: pullRequest,
-          checkSuiteEvent: checkSuiteEvent,
-        );
-    }
-  }
-
-  /// Updates the Github build status using a [BuildPushMessage] sent by LUCI in
-  /// a pub/sub notification.
-  /// Relevant APIs:
-  ///   https://docs.github.com/en/rest/reference/checks#update-a-check-run
-  Future<bool> updateCheckStatus({
-    required bbv2.Build build,
-    required Map<String, dynamic> userDataMap,
-    required LuciBuildServiceV2 luciBuildService,
-    required github.RepositorySlug slug,
-    bool rescheduled = false,
-  }) async {
-    if (userDataMap.isEmpty) {
-      return false;
-    }
-
-    if (!userDataMap.containsKey('check_run_id') ||
-        !userDataMap.containsKey('repo_owner') ||
-        !userDataMap.containsKey('repo_name')) {
-      log.severe(
-        'UserData did not contain check_run_id,'
-        'repo_owner, or repo_name: $userDataMap',
-      );
-      return false;
-    }
-
-    github.CheckRunStatus status = statusForResult(build.status);
-    log.info('status for build ${build.id} is ${status.value}');
-
-    // Only `id` and `name` in the CheckRun are needed.
-    // Instead of making an API call to get the details of each check run, we
-    // generate the check run with only necessary info.
-    final github.CheckRun checkRun = github.CheckRun.fromJson({
-      'id': userDataMap['check_run_id'] as int?,
-      'status': status,
-      'check_suite': const {'id': null},
-      'started_at': build.startTime.toDateTime().toString(),
-      'conclusion': null,
-      'name': build.builder.builder,
-    });
-
-    github.CheckRunConclusion? conclusion =
-        (terminalStatuses.contains(build.status)) ? conclusionForResult(build.status) : null;
-    log.info('conclusion for build ${build.id} is ${(conclusion != null) ? conclusion.value : null}');
-
-    final String url = 'https://cr-buildbucket.appspot.com/build/${build.id}';
-    github.CheckRunOutput? output;
-    // If status has completed with failure then provide more details.
-    if (taskFailed(build.status)) {
-      log.info('failed presubmit task, ${build.id} has failed, status = ${build.status.toString()}');
-      if (rescheduled) {
-        status = github.CheckRunStatus.queued;
-        conclusion = null;
-        output = github.CheckRunOutput(
-          title: checkRun.name!,
-          summary: 'Note: this is an auto rerun. The timestamp above is based on the first attempt of this check run.',
-        );
-      } else {
-        // summaryMarkdown should be present
-        final bbv2.Build buildbucketBuild = await luciBuildService.getBuildById(
-          build.id,
-          buildMask: bbv2.BuildMask(
-            // Need to use allFields as there is a bug with fieldMask and summaryMarkdown.
-            allFields: true,
-          ),
-        );
-        output = github.CheckRunOutput(
-          title: checkRun.name!,
-          summary: getGithubSummary(buildbucketBuild.summaryMarkdown),
-        );
-        log.fine('Updating check run with output: [${output.toJson().toString()}]');
-      }
-    }
-    await githubChecksUtil.updateCheckRun(
-      config,
-      slug,
-      checkRun,
-      status: status,
-      conclusion: conclusion,
-      detailsUrl: url,
-      output: output,
-    );
-    return true;
-  }
-
-  /// Check if task has completed with failure.
-  bool taskFailed(bbv2.Status status) {
-    final github.CheckRunStatus checkRunStatus = statusForResult(status);
-    final github.CheckRunConclusion conclusion = conclusionForResult(status);
-    return (checkRunStatus == github.CheckRunStatus.completed) && failedStatesSet.contains(conclusion);
-  }
-
-  /// Returns current reschedule attempt.
-  ///
-  /// It returns 1 if this is the first run, and +1 with each reschedule.
-  int currentAttempt(final List<bbv2.StringPair> tags) {
-    final bbv2.StringPair attempt = tags.firstWhere(
-      (element) => element.key == 'current_attempt',
-      orElse: () => bbv2.StringPair().createEmptyInstance(),
-    );
-    if (!attempt.hasKey()) {
-      return 1;
-    } else {
-      return int.parse(attempt.value);
-    }
-  }
-
-  /// Appends triage wiki page to `summaryMarkdown` from LUCI build so that people can easily
-  /// reference from github check run page.
-  String getGithubSummary(String? summary) {
-    if (summary == null) {
-      return '${kGithubSummary}Empty summaryMarkdown';
-    }
-    // This is an imposed GitHub limit
-    const int checkSummaryLimit = 65535;
-    // This is to give buffer room incase GitHub lowers the amount.
-    const int checkSummaryBufferLimit = checkSummaryLimit - 10000 - kGithubSummary.length;
-    // Return the last [checkSummaryBufferLimit] characters as they are likely the most relevant.
-    if (summary.length > checkSummaryBufferLimit) {
-      final String truncatedSummary = summary.substring(summary.length - checkSummaryBufferLimit);
-      summary = '[TRUNCATED...] $truncatedSummary';
-    }
-    return '$kGithubSummary$summary';
-  }
-
-  /// Relevant APIs:
-  ///   https://developer.github.com/v3/checks/runs/#check-runs
-  github.CheckRunConclusion conclusionForResult(bbv2.Status status) {
-    if (status == bbv2.Status.CANCELED || status == bbv2.Status.FAILURE || status == bbv2.Status.INFRA_FAILURE) {
-      return github.CheckRunConclusion.failure;
-    } else if (status == bbv2.Status.SUCCESS) {
-      return github.CheckRunConclusion.success;
-    } else {
-      // Now that result is gone this is a non terminal step.
-      return github.CheckRunConclusion.empty;
-    }
-  }
-
-  /// Transforms a [push_message.Status] to a [github.CheckRunStatus].
-  /// Relevant APIs:
-  ///   https://developer.github.com/v3/checks/runs/#check-runs
-  // TODO temporary as this needs to be adjusted as a COMPLETED state is no longer
-  // a valid state from buildbucket v2.
-  github.CheckRunStatus statusForResult(bbv2.Status status) {
-    // ignore: exhaustive_cases
-    switch (status) {
-      case bbv2.Status.SUCCESS:
-      case bbv2.Status.FAILURE:
-      case bbv2.Status.CANCELED:
-      case bbv2.Status.INFRA_FAILURE:
-        return github.CheckRunStatus.completed;
-      case bbv2.Status.SCHEDULED:
-        return github.CheckRunStatus.queued;
-      case bbv2.Status.STARTED:
-        return github.CheckRunStatus.inProgress;
-      default:
-        throw StateError('unreachable');
-    }
-  }
-
-  /// Given a [headSha] and [checkSuiteId], finds the [PullRequest] that matches.
-  Future<github.PullRequest?> findMatchingPullRequest(
-    github.RepositorySlug slug,
-    String headSha,
-    int checkSuiteId,
-  ) async {
-    final GithubService githubService = await config.createDefaultGitHubService();
-
-    // There could be multiple PRs that have the same [headSha] commit.
-    final List<github.Issue> prIssues = await githubService.searchIssuesAndPRs(slug, '$headSha type:pr');
-
-    for (final prIssue in prIssues) {
-      final int prNumber = prIssue.number;
-
-      // Each PR can have multiple check suites.
-      final List<github.CheckSuite> checkSuites = await githubChecksUtil.listCheckSuitesForRef(
-        githubService.github,
-        slug,
-        ref: 'refs/pull/$prNumber/head',
-      );
-
-      // Use check suite ID equality to verify that we have iterated to the correct PR.
-      final bool doesPrIncludeMatchingCheckSuite = checkSuites.any((checkSuite) => checkSuite.id! == checkSuiteId);
-      if (doesPrIncludeMatchingCheckSuite) {
-        return githubService.getPullRequest(slug, prNumber);
-      }
-    }
-
-    return null;
-  }
-}
diff --git a/app_dart/lib/src/service/luci_build_service.dart b/app_dart/lib/src/service/luci_build_service.dart
index a96fe71..25f42e6 100644
--- a/app_dart/lib/src/service/luci_build_service.dart
+++ b/app_dart/lib/src/service/luci_build_service.dart
@@ -8,11 +8,10 @@
 import 'dart:typed_data';
 
 import 'package:cocoon_service/cocoon_service.dart';
-import 'package:fixnum/fixnum.dart';
 import 'package:github/github.dart' as github;
 import 'package:github/hooks.dart';
 import 'package:googleapis/firestore/v1.dart' hide Status;
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
+import 'package:googleapis/pubsub/v1.dart';
 
 import '../foundation/github_checks_util.dart';
 import '../model/appengine/commit.dart';
@@ -21,11 +20,10 @@
 import '../model/firestore/task.dart' as firestore;
 import '../model/ci_yaml/target.dart';
 import '../model/github/checks.dart' as cocoon_checks;
-import '../model/luci/push_message.dart' as push_message;
 import '../model/luci/buildbucket.dart';
+import '../model/luci/push_message.dart' as push_message;
 import '../service/datastore.dart';
 import '../service/logging.dart';
-import 'build_bucket_v2_client.dart';
 import 'exceptions.dart';
 import 'github_service.dart';
 
@@ -37,7 +35,6 @@
     required this.config,
     required this.cache,
     required this.buildBucketClient,
-    required this.buildBucketV2Client,
     GithubChecksUtil? githubChecksUtil,
     GerritService? gerritService,
     this.pubsub = const PubSub(),
@@ -45,7 +42,6 @@
         gerritService = gerritService ?? GerritService(config: config);
 
   BuildBucketClient buildBucketClient;
-  BuildBucketV2Client buildBucketV2Client;
   final CacheService cache;
   Config config;
   GithubChecksUtil githubChecksUtil;
@@ -53,11 +49,7 @@
 
   final PubSub pubsub;
 
-  static const Set<Status> failStatusSet = <Status>{
-    Status.canceled,
-    Status.failure,
-    Status.infraFailure,
-  };
+  static const Set<Status> failStatusSet = <Status>{Status.canceled, Status.failure, Status.infraFailure};
 
   static const int kBackfillPriority = 35;
   static const int kDefaultPriority = 30;
@@ -72,7 +64,6 @@
   /// Name of the subcache to store luci build related values in redis.
   static const String subCacheName = 'luci';
 
-  // the Request objects here are the BatchRequest object in bbv2.
   /// Shards [rows] into several sublists of size [maxEntityGroups].
   Future<List<List<Request>>> shard(List<Request> requests, int max) async {
     final List<List<Request>> shards = <List<Request>>[];
@@ -82,10 +73,7 @@
     return shards;
   }
 
-  /// Fetches an Iterable of try BuildBucket [Build]s.
-  ///
-  /// Returns a list of BuildBucket [Build]s for a given Github [slug], [sha],
-  /// and [builderName].
+  /// Returns an Iterable of try BuildBucket build for a given Github [slug], [sha], [builderName].
   Future<Iterable<Build>> getTryBuilds(
     github.RepositorySlug slug,
     String sha,
@@ -98,31 +86,7 @@
     return getBuilds(slug, sha, builderName, 'try', tags);
   }
 
-  /// Fetches an Iterable of try BuildBucket V2 [Build]s.
-  ///
-  /// Returns a list of BuildBucket [Build]s for a given Github [slug], [sha],
-  /// and [builderName].
-  Future<Iterable<bbv2.Build>> getTryBuildsV2(
-    github.RepositorySlug slug,
-    String sha,
-    String? builderName,
-  ) async {
-    final List<bbv2.StringPair> tags = [
-      bbv2.StringPair(key: 'buildset', value: 'sha/git/$sha'),
-      bbv2.StringPair(key: 'user_agent', value: 'flutter-cocoon'),
-    ];
-    return getBuildsV2(
-      slug,
-      sha,
-      builderName,
-      'try',
-      tags,
-    );
-  }
-
-  /// Fetches an Iterable of try BuildBucket [Build]s.
-  ///
-  /// Returns a list of BuildBucket [Build]s for a given Github [PullRequest].
+  /// Returns an Iterable of try Buildbucket [Build]s for a given [PullRequest].
   Future<Iterable<Build>> getTryBuildsByPullRequest(
     github.PullRequest pullRequest,
   ) async {
@@ -135,32 +99,8 @@
     return getBuilds(slug, null, null, 'try', tags);
   }
 
-  /// Fetches an Iterable of try BuildBucket V2 [Build]s.
-  ///
-  /// Returns a list of BuildBucket V2 [Build]s for a given Github
-  /// [PullRequest].
-  Future<Iterable<bbv2.Build>> getTryBuildsByPullRequestV2(
-    github.PullRequest pullRequest,
-  ) async {
-    final github.RepositorySlug slug = pullRequest.base!.repo!.slug();
-    final List<bbv2.StringPair> tags = [
-      bbv2.StringPair(key: 'buildset', value: 'pr/git/${pullRequest.number}'),
-      bbv2.StringPair(key: 'github_link', value: 'https://github.com/${slug.fullName}/pull/${pullRequest.number}'),
-      bbv2.StringPair(key: 'user_agent', value: 'flutter-cocoon'),
-    ];
-    return getBuildsV2(
-      slug,
-      null,
-      null,
-      'try',
-      tags,
-    );
-  }
-
-  /// Fetches an Iterable of prod BuildBucket [Build]s.
-  ///
-  /// Returns an Iterable of prod BuildBucket [Build]s for a given Github
-  /// [slug], [sha], and [builderName].
+  /// Returns an Iterable of prod BuildBucket build for a given Github [slug], [commitSha],
+  /// [builderName] and [repo].
   Future<Iterable<Build>> getProdBuilds(
     github.RepositorySlug slug,
     String commitSha,
@@ -170,10 +110,8 @@
     return getBuilds(slug, commitSha, builderName, 'prod', tags);
   }
 
-  /// Fetches an Iterable of try BuildBucket [Build]s.
-  ///
-  /// Returns an iterable of try BuildBucket [Build]s for a given Github [slug],
-  /// [sha], [builderName], [bucket], and [tags].
+  /// Returns an iterable of BuildBucket builds for a given Github [slug], [commitSha],
+  /// [builderName], [bucket] and [tags].
   Future<Iterable<Build>> getBuilds(
     github.RepositorySlug? slug,
     String? commitSha,
@@ -212,62 +150,6 @@
     return builds;
   }
 
-  Future<Iterable<bbv2.Build>> getBuildsV2(
-    github.RepositorySlug? slug,
-    String? commitSha,
-    String? builderName,
-    String bucket,
-    List<bbv2.StringPair> tags,
-  ) async {
-    // These paths are fields in the Build message.
-    final bbv2.FieldMask fieldMask = bbv2.FieldMask(
-      paths: {
-        'id',
-        'builder',
-        'tags',
-        'status',
-        'input.properties',
-      },
-    );
-
-    final bbv2.BuildMask buildMask = bbv2.BuildMask(fields: fieldMask);
-
-    final bbv2.BuildPredicate buildPredicate = bbv2.BuildPredicate(
-      builder: bbv2.BuilderID(
-        project: 'flutter',
-        bucket: bucket,
-        builder: builderName,
-      ),
-      tags: tags,
-    );
-
-    final bbv2.SearchBuildsRequest searchBuildsRequest = bbv2.SearchBuildsRequest(
-      predicate: buildPredicate,
-      mask: buildMask,
-    );
-
-    // Need to create one of these for each request in the batch.
-    final bbv2.BatchRequest_Request batchRequestRequest = bbv2.BatchRequest_Request(
-      searchBuilds: searchBuildsRequest,
-    );
-
-    final bbv2.BatchResponse batchResponse = await buildBucketV2Client.batch(
-      bbv2.BatchRequest(
-        requests: {batchRequestRequest},
-      ),
-    );
-
-    log.info('Reponses from get builds batch request = ${batchResponse.responses.length}');
-    for (bbv2.BatchResponse_Response response in batchResponse.responses) {
-      log.info('Found a response: ${response.toString()}');
-    }
-
-    final Iterable<bbv2.Build> builds = batchResponse.responses
-        .map((bbv2.BatchResponse_Response response) => response.searchBuilds)
-        .expand((bbv2.SearchBuildsResponse? response) => response!.builds);
-    return builds;
-  }
-
   /// Schedules presubmit [targets] on BuildBucket for [pullRequest].
   Future<List<Target>> scheduleTryBuilds({
     required List<Target> targets,
@@ -350,7 +232,6 @@
   /// Cancels all the current builds on [pullRequest] with [reason].
   ///
   /// Builds are queried based on the [RepositorySlug] and pull request number.
-  //
   Future<void> cancelBuilds(github.PullRequest pullRequest, String reason) async {
     log.info(
       'Attempting to cancel builds for pullrequest ${pullRequest.base!.repo!.fullName}/${pullRequest.number}',
@@ -385,40 +266,6 @@
     }
   }
 
-  Future<void> cancelBuildsV2(github.PullRequest pullRequest, String reason) async {
-    log.info(
-      'Attempting to cancel builds (v2) for pullrequest ${pullRequest.base!.repo!.fullName}/${pullRequest.number}',
-    );
-
-    final Iterable<bbv2.Build> builds = await getTryBuildsByPullRequestV2(pullRequest);
-    log.info('Found ${builds.length} builds.');
-
-    if (builds.isEmpty) {
-      log.warning('No builds were found for pull request ${pullRequest.base!.repo!.fullName}.');
-      return;
-    }
-
-    final List<bbv2.BatchRequest_Request> requests = <bbv2.BatchRequest_Request>[];
-    for (bbv2.Build build in builds) {
-      if (build.status == bbv2.Status.SCHEDULED || build.status == bbv2.Status.STARTED) {
-        // Scheduled status includes scheduled and pending tasks.
-        log.info('Cancelling build with build id ${build.id}.');
-        requests.add(
-          bbv2.BatchRequest_Request(
-            cancelBuild: bbv2.CancelBuildRequest(
-              id: build.id,
-              summaryMarkdown: reason,
-            ),
-          ),
-        );
-      }
-    }
-
-    if (requests.isNotEmpty) {
-      await buildBucketV2Client.batch(bbv2.BatchRequest(requests: requests));
-    }
-  }
-
   /// Filters [builders] to only those that failed on [pullRequest].
   Future<List<Build?>> failedBuilds(
     github.PullRequest pullRequest,
@@ -575,12 +422,6 @@
     return buildBucketClient.getBuild(request);
   }
 
-  // TODO
-  Future<bbv2.Build> getBuildByIdV2(Int64 id, {bbv2.BuildMask? buildMask}) async {
-    final bbv2.GetBuildRequest request = bbv2.GetBuildRequest(id: id, mask: buildMask);
-    return buildBucketV2Client.getBuild(request);
-  }
-
   /// Gets builder list whose config is pre-defined in LUCI.
   ///
   /// Returns cache if existing. Otherwise make the RPC call to fetch list.
diff --git a/app_dart/lib/src/service/luci_build_service_v2.dart b/app_dart/lib/src/service/luci_build_service_v2.dart
deleted file mode 100644
index af7a1fb..0000000
--- a/app_dart/lib/src/service/luci_build_service_v2.dart
+++ /dev/null
@@ -1,1023 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:math';
-import 'dart:typed_data';
-
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:collection/collection.dart';
-import 'package:fixnum/fixnum.dart';
-import 'package:github/github.dart' as github;
-import 'package:github/hooks.dart';
-import 'package:googleapis/firestore/v1.dart' hide Status;
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-
-import '../foundation/github_checks_util.dart';
-import '../model/appengine/commit.dart';
-import '../model/appengine/task.dart';
-import '../model/firestore/commit.dart' as firestore_commit;
-import '../model/firestore/task.dart' as firestore;
-import '../model/ci_yaml/target.dart';
-import '../model/github/checks.dart' as cocoon_checks;
-import '../model/luci/buildbucket.dart'; // targets use their own RequestedDimension which is defined here for some reason.
-import '../model/luci/user_data.dart';
-import '../service/datastore.dart';
-import '../service/logging.dart';
-import 'build_bucket_v2_client.dart';
-import 'exceptions.dart';
-import 'github_service.dart';
-
-/// Class to interact with LUCI buildbucket to get, trigger
-/// and cancel builds for github repos. It uses [config.luciTryBuilders] to
-/// get the list of available builders.
-class LuciBuildServiceV2 {
-  LuciBuildServiceV2({
-    required this.config,
-    required this.cache,
-    required this.buildBucketV2Client,
-    GithubChecksUtil? githubChecksUtil,
-    GerritService? gerritService,
-    this.pubsub = const PubSub(),
-  })  : githubChecksUtil = githubChecksUtil ?? const GithubChecksUtil(),
-        gerritService = gerritService ?? GerritService(config: config);
-
-  BuildBucketV2Client buildBucketV2Client;
-  final CacheService cache;
-  Config config;
-  GithubChecksUtil githubChecksUtil;
-  GerritService gerritService;
-
-  final PubSub pubsub;
-
-  static const Set<bbv2.Status> failStatusSet = <bbv2.Status>{
-    bbv2.Status.CANCELED,
-    bbv2.Status.FAILURE,
-    bbv2.Status.INFRA_FAILURE,
-  };
-
-  static const int kBackfillPriority = 35;
-  static const int kDefaultPriority = 30;
-  static const int kRerunPriority = 29;
-
-  /// Github labels have a max length of 100, so conserve chars here.
-  /// This is currently used by packages repo only.
-  /// See: https://github.com/flutter/flutter/issues/130076
-  static const String githubBuildLabelPrefix = 'override:';
-  static const String propertiesGithubBuildLabelName = 'overrides';
-
-  /// Name of the subcache to store luci build related values in redis.
-  static const String subCacheName = 'luci';
-
-  // the Request objects here are the BatchRequest object in bbv2.
-  /// Shards [rows] into several sublists of size [maxEntityGroups].
-  Future<List<List<bbv2.BatchRequest_Request>>> shard({
-    required List<bbv2.BatchRequest_Request> requests,
-    required int maxShardSize,
-  }) async {
-    final List<List<bbv2.BatchRequest_Request>> shards = [];
-    for (int i = 0; i < requests.length; i += maxShardSize) {
-      shards.add(requests.sublist(i, i + min<int>(requests.length - i, maxShardSize)));
-    }
-    return shards;
-  }
-
-  /// Fetches an Iterable of try BuildBucket [Build]s.
-  ///
-  /// Returns a list of BuildBucket [Build]s for a given Github [slug], [sha],
-  /// and [builderName].
-  Future<Iterable<bbv2.Build>> getTryBuilds({
-    required github.RepositorySlug slug,
-    required String sha,
-    String? builderName,
-  }) async {
-    final List<bbv2.StringPair> tags = [
-      bbv2.StringPair(
-        key: 'buildset',
-        value: 'sha/git/$sha',
-      ),
-      bbv2.StringPair(
-        key: 'user_agent',
-        value: 'flutter-cocoon',
-      ),
-    ];
-    return getBuilds(
-      slug: slug,
-      commitSha: sha,
-      builderName: builderName,
-      bucket: 'try',
-      tags: tags,
-    );
-  }
-
-  /// Fetches an Iterable of try BuildBucket [Build]s.
-  ///
-  /// Returns a list of BuildBucket [Build]s for a given Github [PullRequest].
-  Future<Iterable<bbv2.Build>> getTryBuildsByPullRequest({
-    required github.PullRequest pullRequest,
-  }) async {
-    final github.RepositorySlug slug = pullRequest.base!.repo!.slug();
-    final List<bbv2.StringPair> tags = [
-      bbv2.StringPair(
-        key: 'buildset',
-        value: 'pr/git/${pullRequest.number}',
-      ),
-      bbv2.StringPair(
-        key: 'github_link',
-        value: 'https://github.com/${slug.fullName}/pull/${pullRequest.number}',
-      ),
-      bbv2.StringPair(
-        key: 'user_agent',
-        value: 'flutter-cocoon',
-      ),
-    ];
-    return getBuilds(
-      slug: slug,
-      commitSha: null,
-      builderName: null,
-      bucket: 'try',
-      tags: tags,
-    );
-  }
-
-  /// Fetches an Iterable of prod BuildBucket [Build]s.
-  ///
-  /// Returns an Iterable of prod BuildBucket [Build]s for a given Github
-  /// [slug], [sha], and [builderName].
-  Future<Iterable<bbv2.Build>> getProdBuilds({
-    required github.RepositorySlug slug,
-    required String commitSha,
-    String? builderName,
-  }) async {
-    final List<bbv2.StringPair> tags = [];
-    return getBuilds(
-      slug: slug,
-      commitSha: commitSha,
-      builderName: builderName,
-      bucket: 'prod',
-      tags: tags,
-    );
-  }
-
-  /// Fetches an Iterable of try BuildBucket [Build]s.
-  ///
-  /// Returns an iterable of try BuildBucket [Build]s for a given Github [slug],
-  /// [sha], [builderName], [bucket], and [tags].
-  Future<Iterable<bbv2.Build>> getBuilds({
-    required github.RepositorySlug? slug,
-    required String? commitSha,
-    required String? builderName,
-    required String bucket,
-    required List<bbv2.StringPair> tags,
-  }) async {
-    final bbv2.FieldMask fieldMask = bbv2.FieldMask(
-      paths: {
-        'id',
-        'builder',
-        'tags',
-        'status',
-        'input.properties',
-      },
-    );
-
-    final bbv2.BuildMask buildMask = bbv2.BuildMask(fields: fieldMask);
-
-    final bbv2.BuildPredicate buildPredicate = bbv2.BuildPredicate(
-      builder: bbv2.BuilderID(
-        project: 'flutter',
-        bucket: bucket,
-        builder: builderName,
-      ),
-      tags: tags,
-    );
-
-    final bbv2.SearchBuildsRequest searchBuildsRequest = bbv2.SearchBuildsRequest(
-      predicate: buildPredicate,
-      mask: buildMask,
-    );
-
-    // Need to create one of these for each request in the batch.
-    final bbv2.BatchRequest_Request batchRequestRequest = bbv2.BatchRequest_Request(
-      searchBuilds: searchBuildsRequest,
-    );
-
-    final bbv2.BatchResponse batchResponse = await buildBucketV2Client.batch(
-      bbv2.BatchRequest(
-        requests: {batchRequestRequest},
-      ),
-    );
-
-    log.info('Reponses from get builds batch request = ${batchResponse.responses.length}');
-    for (bbv2.BatchResponse_Response response in batchResponse.responses) {
-      log.info('Found a response: ${response.toString()}');
-    }
-
-    final Iterable<bbv2.Build> builds = batchResponse.responses
-        .map((bbv2.BatchResponse_Response response) => response.searchBuilds)
-        .expand((bbv2.SearchBuildsResponse? response) => response!.builds);
-    return builds;
-  }
-
-  /// Schedules presubmit [targets] on BuildBucket for [pullRequest].
-  Future<List<Target>> scheduleTryBuilds({
-    required List<Target> targets,
-    required github.PullRequest pullRequest,
-    CheckSuiteEvent? checkSuiteEvent,
-  }) async {
-    if (targets.isEmpty) {
-      return targets;
-    }
-
-    // final bbv2.BatchRequest batchRequest = bbv2.BatchRequest().createEmptyInstance();
-    final List<bbv2.BatchRequest_Request> batchRequestList = [];
-    final List<String> branches = await gerritService.branches(
-      'flutter-review.googlesource.com',
-      'recipes',
-      filterRegex: 'flutter-.*|fuchsia.*',
-    );
-    log.info('Available release branches: $branches');
-
-    final String sha = pullRequest.head!.sha!;
-    String cipdVersion = 'refs/heads/${pullRequest.base!.ref!}';
-    cipdVersion = branches.contains(cipdVersion) ? cipdVersion : config.defaultRecipeBundleRef;
-
-    for (Target target in targets) {
-      final github.CheckRun checkRun = await githubChecksUtil.createCheckRun(
-        config,
-        target.slug,
-        sha,
-        target.value.name,
-      );
-
-      final github.RepositorySlug slug = pullRequest.base!.repo!.slug();
-
-      final Map<String, dynamic> userData = <String, dynamic>{
-        'builder_name': target.value.name,
-        'check_run_id': checkRun.id,
-        'commit_sha': sha,
-        'commit_branch': pullRequest.base!.ref!.replaceAll('refs/heads/', ''),
-      };
-
-      final List<bbv2.StringPair> tags = [
-        bbv2.StringPair(
-          key: 'github_checkrun',
-          value: checkRun.id.toString(),
-        ),
-      ];
-
-      final Map<String, Object> properties = target.getProperties();
-      properties.putIfAbsent(
-        'git_branch',
-        () => pullRequest.base!.ref!.replaceAll('refs/heads/', ''),
-      );
-
-      // final String json = jsonEncode(properties);
-      final bbv2.Struct struct = bbv2.Struct.create();
-      struct.mergeFromProto3Json(properties);
-
-      final List<String>? labels = extractPrefixedLabels(
-        issueLabels: pullRequest.labels,
-        prefix: githubBuildLabelPrefix,
-      );
-
-      if (labels != null && labels.isNotEmpty) {
-        properties[propertiesGithubBuildLabelName] = labels;
-      }
-
-      // Convert from target RequestedDimensions to bbv2.RequestedDimensions.
-      final List<RequestedDimension> targetDimensions = target.getDimensions();
-      final List<bbv2.RequestedDimension> requestedDimensions = <bbv2.RequestedDimension>[];
-      for (RequestedDimension requestedDimension in targetDimensions) {
-        requestedDimensions.add(bbv2.RequestedDimension(key: requestedDimension.key, value: requestedDimension.value));
-      }
-
-      batchRequestList.add(
-        bbv2.BatchRequest_Request(
-          scheduleBuild: await _createPresubmitScheduleBuild(
-            slug: slug,
-            sha: pullRequest.head!.sha!,
-            //Use target.value.name here otherwise tests will die due to null checkRun.name.
-            checkName: target.value.name,
-            pullRequestNumber: pullRequest.number!,
-            cipdVersion: cipdVersion,
-            userData: userData,
-            properties: properties,
-            tags: tags,
-            dimensions: requestedDimensions,
-          ),
-        ),
-      );
-    }
-
-    final Iterable<List<bbv2.BatchRequest_Request>> requestPartitions = await shard(
-      requests: batchRequestList,
-      maxShardSize: config.schedulingShardSize,
-    );
-    for (List<bbv2.BatchRequest_Request> requestPartition in requestPartitions) {
-      final bbv2.BatchRequest batchRequest = bbv2.BatchRequest(requests: requestPartition);
-      await pubsub.publish('cocoon-scheduler-requests', batchRequest.toProto3Json());
-    }
-
-    return targets;
-  }
-
-  /// Cancels all the current builds on [pullRequest] with [reason].
-  ///
-  /// Builds are queried based on the [RepositorySlug] and pull request number.
-  //
-  Future<void> cancelBuilds({
-    required github.PullRequest pullRequest,
-    required String reason,
-  }) async {
-    log.info(
-      'Attempting to cancel builds (v2) for pullrequest ${pullRequest.base!.repo!.fullName}/${pullRequest.number}',
-    );
-
-    final Iterable<bbv2.Build> builds = await getTryBuildsByPullRequest(pullRequest: pullRequest);
-    log.info('Found ${builds.length} builds.');
-
-    if (builds.isEmpty) {
-      log.warning('No builds were found for pull request ${pullRequest.base!.repo!.fullName}.');
-      return;
-    }
-
-    final List<bbv2.BatchRequest_Request> requests = <bbv2.BatchRequest_Request>[];
-    for (bbv2.Build build in builds) {
-      if (build.status == bbv2.Status.SCHEDULED || build.status == bbv2.Status.STARTED) {
-        // Scheduled status includes scheduled and pending tasks.
-        log.info('Cancelling build with build id ${build.id}.');
-        requests.add(
-          bbv2.BatchRequest_Request(
-            cancelBuild: bbv2.CancelBuildRequest(
-              id: build.id,
-              summaryMarkdown: reason,
-            ),
-          ),
-        );
-      }
-    }
-
-    if (requests.isNotEmpty) {
-      await buildBucketV2Client.batch(bbv2.BatchRequest(requests: requests));
-    }
-  }
-
-  /// Filters [builders] to only those that failed on [pullRequest].
-  Future<List<bbv2.Build?>> failedBuilds({
-    required github.PullRequest pullRequest,
-    required List<Target> targets,
-  }) async {
-    final Iterable<bbv2.Build> builds = await getTryBuilds(
-      slug: pullRequest.base!.repo!.slug(),
-      sha: pullRequest.head!.sha!,
-      builderName: null,
-    );
-    final Iterable<String> builderNames = targets.map((Target target) => target.value.name);
-    // Return only builds that exist in the configuration file.
-    final Iterable<bbv2.Build?> failedBuilds =
-        builds.where((bbv2.Build? build) => failStatusSet.contains(build!.status));
-    final Iterable<bbv2.Build?> expectedFailedBuilds =
-        failedBuilds.where((bbv2.Build? build) => builderNames.contains(build!.builder.builder));
-    return expectedFailedBuilds.toList();
-  }
-
-  /// Sends [ScheduleBuildRequest] using information from a given build's
-  /// [BuildPushMessage].
-  ///
-  /// The buildset, user_agent, and github_link tags are applied to match the
-  /// original build. The build properties and user data from the original build
-  /// are also preserved.
-  ///
-  /// The [currentAttempt] is used to track the number of current build attempt.
-  Future<bbv2.Build> rescheduleBuild({
-    required String builderName,
-    required bbv2.Build build,
-    required int rescheduleAttempt,
-    required Map<String, dynamic> userDataMap,
-  }) async {
-    final List<bbv2.StringPair> tags = build.tags;
-    // need to replace the current_attempt
-    bbv2.StringPair attempt;
-    final (int, bbv2.StringPair)? record =
-        tags.indexed.firstWhereOrNull((element) => element.$2.key == 'current_attempt');
-    if (record == null) {
-      attempt = bbv2.StringPair(
-        key: 'current_attempt',
-        value: rescheduleAttempt.toString(),
-      );
-    } else {
-      attempt = tags.removeAt(record.$1);
-      attempt.value = rescheduleAttempt.toString();
-    }
-    tags.add(attempt);
-
-    return buildBucketV2Client.scheduleBuild(
-      bbv2.ScheduleBuildRequest(
-        builder: build.builder,
-        tags: tags,
-        properties: build.input.properties,
-        notify: bbv2.NotificationConfig(
-          pubsubTopic: 'projects/flutter-dashboard/topics/build-bucket-presubmit',
-          userData: UserData.encodeUserDataToBytes(userDataMap),
-        ),
-      ),
-    );
-  }
-
-  /// Sends presubmit [ScheduleBuildRequest] for a pull request using [checkRunEvent].
-  ///
-  /// Returns the [bbv2.Build] returned by scheduleBuildRequest.
-  Future<bbv2.Build> reschedulePresubmitBuildUsingCheckRunEvent({
-    required cocoon_checks.CheckRunEvent checkRunEvent,
-  }) async {
-    final github.RepositorySlug slug = checkRunEvent.repository!.slug();
-
-    final String sha = checkRunEvent.checkRun!.headSha!;
-    final String checkName = checkRunEvent.checkRun!.name!;
-
-    final github.CheckRun githubCheckRun = await githubChecksUtil.createCheckRun(
-      config,
-      slug,
-      sha,
-      checkName,
-    );
-
-    final Iterable<bbv2.Build> builds = await getTryBuilds(
-      slug: slug,
-      sha: sha,
-      builderName: checkName,
-    );
-    if (builds.isEmpty) {
-      throw NoBuildFoundException('Unable to find try build.');
-    }
-
-    final bbv2.Build build = builds.first;
-
-    // Assumes that the tags are already defined.
-    final List<bbv2.StringPair> tags = build.tags;
-    final String prString =
-        tags.firstWhere((element) => element.key == 'buildset' && element.value.startsWith('pr/git')).value;
-    final String cipdVersion = tags.firstWhere((element) => element.key == 'cipd_version').value;
-    final String githubLink = tags.firstWhere((element) => element.key == 'github_link').value;
-
-    final String repoName = githubLink.split('/')[4];
-    final String branch = Config.defaultBranch(github.RepositorySlug('flutter', repoName));
-    final int prNumber = int.parse(prString.split('/')[2]);
-
-    final Map<String, dynamic> userData = <String, dynamic>{
-      'check_run_id': githubCheckRun.id,
-      'commit_branch': branch,
-      'commit_sha': sha,
-    };
-
-    final bbv2.Struct propertiesStruct =
-        (build.input.hasProperties()) ? build.input.properties : bbv2.Struct().createEmptyInstance();
-    final Map<String, Object?> properties = propertiesStruct.toProto3Json() as Map<String, Object?>;
-    final GithubService githubService = await config.createGithubService(slug);
-
-    final List<github.IssueLabel> issueLabels = await githubService.getIssueLabels(
-      slug,
-      prNumber,
-    );
-    final List<String>? labels = extractPrefixedLabels(
-      issueLabels: issueLabels,
-      prefix: githubBuildLabelPrefix,
-    );
-
-    if (labels != null && labels.isNotEmpty) {
-      properties[propertiesGithubBuildLabelName] = labels;
-    }
-
-    final bbv2.ScheduleBuildRequest scheduleBuildRequest = await _createPresubmitScheduleBuild(
-      slug: slug,
-      sha: sha,
-      checkName: checkName,
-      pullRequestNumber: prNumber,
-      cipdVersion: cipdVersion,
-      properties: properties,
-      userData: userData,
-    );
-
-    final bbv2.Build scheduleBuild = await buildBucketV2Client.scheduleBuild(scheduleBuildRequest);
-    final String buildUrl = 'https://ci.chromium.org/ui/b/${scheduleBuild.id}';
-    await githubChecksUtil.updateCheckRun(config, slug, githubCheckRun, detailsUrl: buildUrl);
-    return scheduleBuild;
-  }
-
-  /// Collect any label whose name is prefixed by the prefix [String].
-  ///
-  /// Returns a [List] of prefixed label names as [String]s.
-  List<String>? extractPrefixedLabels({
-    List<github.IssueLabel>? issueLabels,
-    required String prefix,
-  }) {
-    return issueLabels?.where((label) => label.name.startsWith(prefix)).map((obj) => obj.name).toList();
-  }
-
-  /// Sends postsubmit [ScheduleBuildRequest] for a commit using [checkRunEvent], [Commit], [Task], and [Target].
-  ///
-  /// Returns the [bbv2.Build] returned by scheduleBuildRequest.
-  Future<bbv2.Build> reschedulePostsubmitBuildUsingCheckRunEvent(
-    cocoon_checks.CheckRunEvent checkRunEvent, {
-    required Commit commit,
-    required Task task,
-    required Target target,
-  }) async {
-    final github.RepositorySlug slug = checkRunEvent.repository!.slug();
-    final String sha = checkRunEvent.checkRun!.headSha!;
-    final String checkName = checkRunEvent.checkRun!.name!;
-
-    final Iterable<bbv2.Build> builds = await getProdBuilds(
-      slug: slug,
-      commitSha: sha,
-      builderName: checkName,
-    );
-    if (builds.isEmpty) {
-      throw NoBuildFoundException('Unable to find prod build.');
-    }
-
-    final bbv2.Build build = builds.first;
-
-    // get it as a struct first and convert it.
-    final bbv2.Struct propertiesStruct = build.input.properties;
-    final Map<String, Object> properties = propertiesStruct.toProto3Json() as Map<String, Object>;
-
-    // final Map<String, Object>? properties = build.input.properties;
-    log.info('input ${build.input} properties $properties');
-
-    final bbv2.ScheduleBuildRequest scheduleBuildRequest = await _createPostsubmitScheduleBuild(
-      commit: commit,
-      target: target,
-      task: task,
-      properties: properties,
-    );
-    final bbv2.Build scheduleBuild = await buildBucketV2Client.scheduleBuild(scheduleBuildRequest);
-    return scheduleBuild;
-  }
-
-  /// Gets [bbv2.Build] using its [id] and passing the additional
-  /// fields to be populated in the response.
-  Future<bbv2.Build> getBuildById(
-    Int64 id, {
-    bbv2.BuildMask? buildMask,
-  }) async {
-    final bbv2.GetBuildRequest request = bbv2.GetBuildRequest(
-      id: id,
-      mask: buildMask,
-    );
-    return buildBucketV2Client.getBuild(request);
-  }
-
-  /// Gets builder list whose config is pre-defined in LUCI.
-  ///
-  /// Returns cache if existing. Otherwise make the RPC call to fetch list.
-  Future<Set<String>> getAvailableBuilderSet({
-    String project = 'flutter',
-    String bucket = 'prod',
-  }) async {
-    final Uint8List? cacheValue = await cache.getOrCreate(
-      subCacheName,
-      'builderlist',
-      createFn: () => _getAvailableBuilderSet(
-        project: project,
-        bucket: bucket,
-      ),
-      // New commit triggering tasks should be finished within 5 mins.
-      // The batch backfiller's execution frequency is also 5 mins.
-      ttl: const Duration(minutes: 5),
-    );
-
-    return Set.from(String.fromCharCodes(cacheValue!).split(','));
-  }
-
-  /// Returns cache if existing, otherwise makes the RPC call to fetch list.
-  ///
-  /// Use [token] to make sure obtain all the list by calling RPC multiple times.
-  Future<Uint8List> _getAvailableBuilderSet({
-    String project = 'flutter',
-    String bucket = 'prod',
-  }) async {
-    log.info('No cached value for builderList, start fetching via the rpc call.');
-    final Set<String> availableBuilderSet = <String>{};
-    bool hasToken = true;
-    String? token;
-    do {
-      final bbv2.ListBuildersResponse listBuildersResponse = await buildBucketV2Client.listBuilders(
-        bbv2.ListBuildersRequest(
-          project: project,
-          bucket: bucket,
-          pageToken: token,
-        ),
-      );
-      final List<String> availableBuilderList = listBuildersResponse.builders.map((e) => e.id.builder).toList();
-      availableBuilderSet.addAll(<String>{...availableBuilderList});
-      hasToken = listBuildersResponse.hasNextPageToken();
-      if (hasToken) {
-        token = listBuildersResponse.nextPageToken;
-      }
-    } while (hasToken && token != null);
-    final String joinedBuilderSet = availableBuilderSet.toList().join(',');
-    log.info('successfully fetched the builderSet: $joinedBuilderSet');
-    return Uint8List.fromList(joinedBuilderSet.codeUnits);
-  }
-
-  /// Schedules list of post-submit builds deferring work to [schedulePostsubmitBuild].
-  ///
-  /// Returns empty list if all targets are successfully published to pub/sub. Otherwise,
-  /// returns the original list.
-  Future<List<Tuple<Target, Task, int>>> schedulePostsubmitBuilds({
-    required Commit commit,
-    required List<Tuple<Target, Task, int>> toBeScheduled,
-  }) async {
-    if (toBeScheduled.isEmpty) {
-      log.fine('Skipping schedulePostsubmitBuilds as there are no targets to be scheduled by Cocoon');
-      return toBeScheduled;
-    }
-    final List<bbv2.BatchRequest_Request> buildRequests = [];
-    // bbv2.BatchRequest_Request batchRequest_Request = bbv2.BatchRequest_Request();
-
-    Set<String> availableBuilderSet;
-    try {
-      availableBuilderSet = await getAvailableBuilderSet(
-        project: 'flutter',
-        bucket: 'prod',
-      );
-    } catch (error) {
-      log.severe('Failed to get buildbucket builder list due to $error');
-      return toBeScheduled;
-    }
-    log.info('Available builder list: $availableBuilderSet');
-    for (Tuple<Target, Task, int> tuple in toBeScheduled) {
-      // Non-existing builder target will be skipped from scheduling.
-      if (!availableBuilderSet.contains(tuple.first.value.name)) {
-        log.warning('Found no available builder for ${tuple.first.value.name}, commit ${commit.sha}');
-        continue;
-      }
-      log.info('create postsubmit schedule request for target: ${tuple.first.value} in commit ${commit.sha}');
-      final bbv2.ScheduleBuildRequest scheduleBuildRequest = await _createPostsubmitScheduleBuild(
-        commit: commit,
-        target: tuple.first,
-        task: tuple.second,
-        priority: tuple.third,
-      );
-      buildRequests.add(bbv2.BatchRequest_Request(scheduleBuild: scheduleBuildRequest));
-      log.info('created postsubmit schedule request for target: ${tuple.first.value} in commit ${commit.sha}');
-    }
-
-    final bbv2.BatchRequest batchRequest = bbv2.BatchRequest(requests: buildRequests);
-    log.fine(batchRequest);
-    List<String> messageIds;
-
-    try {
-      messageIds = await pubsub.publish('cocoon-scheduler-requests', batchRequest.toProto3Json());
-      log.info('Published $messageIds for commit ${commit.sha}');
-    } catch (error) {
-      log.severe('Failed to publish message to pub/sub due to $error');
-      return toBeScheduled;
-    }
-    log.info('Published a request with ${buildRequests.length} builds');
-    return <Tuple<Target, Task, int>>[];
-  }
-
-  /// Create a Presubmit ScheduleBuildRequest using the [slug], [sha], and
-  /// [checkName] for the provided [build] with the provided [checkRunId].
-  Future<bbv2.ScheduleBuildRequest> _createPresubmitScheduleBuild({
-    required github.RepositorySlug slug,
-    required String sha,
-    required String checkName,
-    required int pullRequestNumber,
-    required String cipdVersion,
-    Map<String, Object?>? properties,
-    List<bbv2.StringPair>? tags,
-    Map<String, dynamic>? userData,
-    List<bbv2.RequestedDimension>? dimensions,
-  }) async {
-    final Map<String, dynamic> processedUserData = userData ?? <String, dynamic>{};
-    processedUserData['repo_owner'] = slug.owner;
-    processedUserData['repo_name'] = slug.name;
-    processedUserData['user_agent'] = 'flutter-cocoon';
-
-    final bbv2.BuilderID builderId = bbv2.BuilderID.create();
-    builderId.bucket = 'try';
-    builderId.project = 'flutter';
-    builderId.builder = checkName;
-
-    // Add the builderId.
-    final bbv2.ScheduleBuildRequest scheduleBuildRequest = bbv2.ScheduleBuildRequest.create();
-    scheduleBuildRequest.builder = builderId;
-
-    final List<String> fields = [
-      'id',
-      'builder',
-      'number',
-      'status',
-      'tags',
-    ];
-    final bbv2.FieldMask fieldMask = bbv2.FieldMask(paths: fields);
-    final bbv2.BuildMask buildMask = bbv2.BuildMask(fields: fieldMask);
-    scheduleBuildRequest.mask = buildMask;
-
-    // Set the executable.
-    final bbv2.Executable executable = bbv2.Executable(cipdVersion: cipdVersion);
-    scheduleBuildRequest.exe = executable;
-
-    // Add the dimensions to the instance.
-    final List<bbv2.RequestedDimension> instanceDimensions = scheduleBuildRequest.dimensions;
-    instanceDimensions.addAll(dimensions ?? []);
-
-    // Create the notification configuration for pubsub processing.
-    final bbv2.NotificationConfig notificationConfig = bbv2.NotificationConfig().createEmptyInstance();
-    notificationConfig.pubsubTopic = 'projects/flutter-dashboard/topics/build-bucket-presubmit';
-    notificationConfig.userData = UserData.encodeUserDataToBytes(processedUserData)!;
-    scheduleBuildRequest.notify = notificationConfig;
-
-    // Add tags to the instance.
-    final List<bbv2.StringPair> processTags = tags ?? <bbv2.StringPair>[];
-    processTags.add(
-      bbv2.StringPair(
-        key: 'buildset',
-        value: 'pr/git/$pullRequestNumber',
-      ),
-    );
-    processTags.add(
-      bbv2.StringPair(
-        key: 'buildset',
-        value: 'sha/git/$sha',
-      ),
-    );
-    processTags.add(
-      bbv2.StringPair(
-        key: 'user_agent',
-        value: 'flutter-cocoon',
-      ),
-    );
-    processTags.add(
-      bbv2.StringPair(
-        key: 'github_link',
-        value: 'https://github.com/${slug.owner}/${slug.name}/pull/$pullRequestNumber',
-      ),
-    );
-    processTags.add(
-      bbv2.StringPair(
-        key: 'cipd_version',
-        value: cipdVersion,
-      ),
-    );
-    final List<bbv2.StringPair> instanceTags = scheduleBuildRequest.tags;
-    instanceTags.addAll(processTags);
-
-    properties ??= {};
-    properties['git_url'] = 'https://github.com/${slug.owner}/${slug.name}';
-    properties['git_ref'] = 'refs/pull/$pullRequestNumber/head';
-    properties['exe_cipd_version'] = cipdVersion;
-
-    final bbv2.Struct propertiesStruct = bbv2.Struct.create();
-    propertiesStruct.mergeFromProto3Json(properties);
-
-    scheduleBuildRequest.properties = propertiesStruct;
-
-    return scheduleBuildRequest;
-  }
-
-  /// Creates a [ScheduleBuildRequest] for [target] and [task] against [commit].
-  ///
-  /// By default, build [priority] is increased for release branches.
-  Future<bbv2.ScheduleBuildRequest> _createPostsubmitScheduleBuild({
-    required Commit commit,
-    required Target target,
-    required Task task,
-    Map<String, Object>? properties,
-    List<bbv2.StringPair>? tags,
-    int priority = kDefaultPriority,
-  }) async {
-    log.info('Creating postsubmit schedule builder for ${target.value.name} on commit ${commit.sha}');
-    tags ??= [];
-    tags.addAll([
-      bbv2.StringPair(
-        key: 'buildset',
-        value: 'commit/git/${commit.sha}',
-      ),
-      bbv2.StringPair(
-        key: 'buildset',
-        value: 'commit/gitiles/flutter.googlesource.com/mirrors/${commit.slug.name}/+/${commit.sha}',
-      ),
-    ]);
-
-    final String commitKey = task.parentKey!.id.toString();
-    final String taskKey = task.key.id.toString();
-    log.info('Scheduling builder: ${target.value.name} for commit ${commit.sha}');
-    log.info('Task commit_key: $commitKey for task name: ${task.name}');
-    log.info('Task task_key: $taskKey for task name: ${task.name}');
-
-    final Map<String, dynamic> rawUserData = <String, dynamic>{
-      'commit_key': commitKey,
-      'task_key': taskKey,
-      'firestore_commit_document_name': commit.sha,
-    };
-
-    // Creates post submit checkrun only for unflaky targets from [config.postsubmitSupportedRepos].
-    if (!target.value.bringup && config.postsubmitSupportedRepos.contains(target.slug)) {
-      await createPostsubmitCheckRun(
-        commit,
-        target,
-        rawUserData,
-      );
-    }
-
-    tags.add(
-      bbv2.StringPair(
-        key: 'user_agent',
-        value: 'flutter-cocoon',
-      ),
-    );
-    // Tag `scheduler_job_id` is needed when calling buildbucket search build API.
-    tags.add(
-      bbv2.StringPair(
-        key: 'scheduler_job_id',
-        value: 'flutter/${target.value.name}',
-      ),
-    );
-    // Default attempt is the initial attempt, which is 1.
-    final bbv2.StringPair? attemptTag = tags.singleWhereOrNull((tag) => tag.key == 'current_attempt');
-    if (attemptTag == null) {
-      tags.add(
-        bbv2.StringPair(
-          key: 'current_attempt',
-          value: '1',
-        ),
-      );
-    }
-
-    final String currentAttemptStr = tags.firstWhere((tag) => tag.key == 'current_attempt').value;
-    rawUserData['firestore_task_document_name'] = '${commit.sha}_${task.name}_$currentAttemptStr';
-
-    final Map<String, Object> processedProperties = target.getProperties();
-    processedProperties.addAll(properties ?? <String, Object>{});
-    processedProperties['git_branch'] = commit.branch!;
-    final String cipdExe = 'refs/heads/${commit.branch}';
-    processedProperties['exe_cipd_version'] = cipdExe;
-
-    final bbv2.Struct propertiesStruct = bbv2.Struct.create();
-    propertiesStruct.mergeFromProto3Json(processedProperties);
-
-    // Convert from target RequestedDimensions to bbv2.RequestedDimensions.
-    final List<RequestedDimension> targetDimensions = target.getDimensions();
-    final List<bbv2.RequestedDimension> requestedDimensions = <bbv2.RequestedDimension>[];
-    for (RequestedDimension requestedDimension in targetDimensions) {
-      requestedDimensions.add(bbv2.RequestedDimension(key: requestedDimension.key, value: requestedDimension.value));
-    }
-
-    final bbv2.Executable executable = bbv2.Executable(cipdVersion: cipdExe);
-
-    log.info('Constructing the postsubmit schedule build request for ${target.value.name} on commit ${commit.sha}.');
-
-    return bbv2.ScheduleBuildRequest(
-      builder: bbv2.BuilderID(
-        project: 'flutter',
-        bucket: target.getBucket(),
-        builder: target.value.name,
-      ),
-      dimensions: requestedDimensions,
-      exe: executable,
-      gitilesCommit: bbv2.GitilesCommit(
-        project: 'mirrors/${commit.slug.name}',
-        host: 'flutter.googlesource.com',
-        ref: 'refs/heads/${commit.branch}',
-        id: commit.sha,
-      ),
-      notify: bbv2.NotificationConfig(
-        pubsubTopic: 'projects/flutter-dashboard/topics/build-bucket-postsubmit',
-        userData: UserData.encodeUserDataToBytes(rawUserData),
-      ),
-      tags: tags,
-      properties: propertiesStruct,
-      priority: priority,
-    );
-  }
-
-  /// Creates postsubmit check runs for prod targets in supported repositories.
-  Future<void> createPostsubmitCheckRun(
-    Commit commit,
-    Target target,
-    Map<String, dynamic> rawUserData,
-  ) async {
-    final github.CheckRun checkRun = await githubChecksUtil.createCheckRun(
-      config,
-      target.slug,
-      commit.sha!,
-      target.value.name,
-    );
-    rawUserData['check_run_id'] = checkRun.id;
-    rawUserData['commit_sha'] = commit.sha;
-    rawUserData['commit_branch'] = commit.branch;
-    rawUserData['builder_name'] = target.value.name;
-    rawUserData['repo_owner'] = target.slug.owner;
-    rawUserData['repo_name'] = target.slug.name;
-  }
-
-  /// Check to auto-rerun TOT test failures.
-  ///
-  /// A builder will be retried if:
-  ///   1. It has been tried below the max retry limit
-  ///   2. It is for the tip of tree
-  ///   3. The last known status is not green
-  ///   4. [ignoreChecks] is false. This allows manual reruns to bypass the Cocoon state.
-  Future<bool> checkRerunBuilder({
-    required Commit commit,
-    required Target target,
-    required Task task,
-    required DatastoreService datastore,
-    required firestore.Task taskDocument,
-    required FirestoreService firestoreService,
-    List<bbv2.StringPair>? tags,
-    bool ignoreChecks = false,
-  }) async {
-    if (ignoreChecks == false && await _shouldRerunBuilderFirestore(taskDocument, firestoreService) == false) {
-      return false;
-    }
-
-    log.info('Rerun builder: ${target.value.name} for commit ${commit.sha}');
-    tags ??= <bbv2.StringPair>[];
-    final bbv2.StringPair? triggerTag =
-        tags.singleWhereOrNull((element) => element.key == 'trigger_type' && element.value == 'auto_retry');
-    if (triggerTag == null) {
-      tags.add(
-        bbv2.StringPair(
-          key: 'trigger_type',
-          value: 'auto_retry',
-        ),
-      );
-    }
-
-    try {
-      // Updates task status in Datastore.
-      task.attempts = (task.attempts ?? 0) + 1;
-      // Mark task as in progress to ensure it isn't scheduled over
-      task.status = Task.statusInProgress;
-      await datastore.insert(<Task>[task]);
-
-      // Updates task status in Firestore.
-      final int newAttempt = int.parse(taskDocument.name!.split('_').last) + 1;
-      tags.add(bbv2.StringPair(key: 'current_attempt', value: newAttempt.toString()));
-      taskDocument.resetAsRetry(attempt: newAttempt);
-      taskDocument.setStatus(firestore.Task.statusInProgress);
-      final List<Write> writes = documentsToWrites([taskDocument], exists: false);
-      await firestoreService.batchWriteDocuments(BatchWriteRequest(writes: writes), kDatabase);
-    } catch (error) {
-      log.severe(
-        'updating task ${taskDocument.taskName} of commit ${taskDocument.commitSha} failure: $error. Skipping rescheduling.',
-      );
-      return false;
-    }
-
-    final bbv2.BatchRequest request = bbv2.BatchRequest(
-      requests: <bbv2.BatchRequest_Request>[
-        bbv2.BatchRequest_Request(
-          scheduleBuild: await _createPostsubmitScheduleBuild(
-            commit: commit,
-            target: target,
-            task: task,
-            priority: kRerunPriority,
-            properties: Config.defaultProperties,
-            tags: tags,
-          ),
-        ),
-      ],
-    );
-
-    await pubsub.publish(
-      'cocoon-scheduler-requests',
-      request.toProto3Json(),
-    );
-
-    return true;
-  }
-
-  /// Check if a builder should be rerun.
-  ///
-  /// A rerun happens when a build fails, the retry number hasn't reached the limit, and the build is on TOT.
-  Future<bool> _shouldRerunBuilderFirestore(firestore.Task task, FirestoreService firestoreService) async {
-    if (!firestore.Task.taskFailStatusSet.contains(task.status)) {
-      return false;
-    }
-    final int retries = task.attempts ?? 1;
-    if (retries > config.maxLuciTaskRetries) {
-      log.warning('Max retries reached');
-      return false;
-    }
-
-    final String commitDocumentName = '$kDatabase/documents/${firestore_commit.kCommitCollectionId}/${task.commitSha}';
-    final firestore_commit.Commit currentCommit = await firestore_commit.Commit.fromFirestore(
-      firestoreService: firestoreService,
-      documentName: commitDocumentName,
-    );
-    final List<firestore_commit.Commit> commitList = await firestoreService.queryRecentCommits(
-      limit: 1,
-      slug: currentCommit.slug,
-      branch: currentCommit.branch,
-    );
-    final firestore_commit.Commit latestCommit = commitList.single;
-    return latestCommit.sha == currentCommit.sha;
-  }
-}
diff --git a/app_dart/lib/src/service/scheduler.dart b/app_dart/lib/src/service/scheduler.dart
index 27a7925..2e88d1e 100644
--- a/app_dart/lib/src/service/scheduler.dart
+++ b/app_dart/lib/src/service/scheduler.dart
@@ -5,7 +5,6 @@
 import 'dart:math';
 import 'dart:typed_data';
 
-import 'package:cocoon_service/src/model/luci/buildbucket.dart';
 import 'package:cocoon_service/src/service/exceptions.dart';
 import 'package:cocoon_service/src/service/build_status_provider.dart';
 import 'package:cocoon_service/src/service/scheduler/policy.dart';
@@ -28,6 +27,7 @@
 import '../model/ci_yaml/ci_yaml.dart';
 import '../model/ci_yaml/target.dart';
 import '../model/github/checks.dart' as cocoon_checks;
+import '../model/luci/buildbucket.dart';
 import '../model/proto/internal/scheduler.pb.dart' as pb;
 import '../service/logging.dart';
 import 'cache_service.dart';
@@ -297,14 +297,6 @@
     await luciBuildService.cancelBuilds(pullRequest, reason);
   }
 
-  Future<void> cancelPreSubmitTargetsV2({
-    required PullRequest pullRequest,
-    String reason = 'Newer commit available',
-  }) async {
-    log.info('Cancelling presubmit targets with buildbucket v2.');
-    await luciBuildService.cancelBuildsV2(pullRequest, reason);
-  }
-
   /// Schedule presubmit targets against a pull request.
   ///
   /// Cancels all existing targets then schedules the targets.
@@ -318,7 +310,7 @@
   }) async {
     // Always cancel running builds so we don't ever schedule duplicates.
     log.info('Attempting to cancel existing presubmit targets for ${pullRequest.number}');
-    await cancelPreSubmitTargetsV2(
+    await cancelPreSubmitTargets(
       pullRequest: pullRequest,
       reason: reason,
     );
@@ -568,7 +560,6 @@
 
             if (commit == null) {
               log.fine('Rescheduling presubmit build.');
-              // Does not do anything with the returned build oddly.
               await luciBuildService.reschedulePresubmitBuildUsingCheckRunEvent(checkRunEvent);
             } else {
               log.fine('Rescheduling postsubmit build.');
diff --git a/app_dart/lib/src/service/scheduler_v2.dart b/app_dart/lib/src/service/scheduler_v2.dart
deleted file mode 100644
index ab11d24..0000000
--- a/app_dart/lib/src/service/scheduler_v2.dart
+++ /dev/null
@@ -1,666 +0,0 @@
-// Copyright 2021 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:math';
-import 'dart:typed_data';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/src/service/exceptions.dart';
-import 'package:cocoon_service/src/service/build_status_provider.dart';
-import 'package:cocoon_service/src/service/scheduler/policy.dart';
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart';
-import 'package:github/hooks.dart';
-import 'package:googleapis/bigquery/v2.dart';
-import 'package:googleapis/firestore/v1.dart';
-import 'package:retry/retry.dart';
-import 'package:truncate/truncate.dart';
-import 'package:yaml/yaml.dart';
-
-import '../foundation/providers.dart';
-import '../foundation/typedefs.dart';
-import '../foundation/utils.dart';
-import '../model/appengine/commit.dart';
-import '../model/appengine/task.dart';
-import '../model/firestore/commit.dart' as firestore_commmit;
-import '../model/firestore/task.dart' as firestore;
-import '../model/ci_yaml/ci_yaml.dart';
-import '../model/ci_yaml/target.dart';
-import '../model/github/checks.dart' as cocoon_checks;
-import '../model/proto/internal/scheduler.pb.dart' as pb;
-import '../service/logging.dart';
-import 'cache_service.dart';
-import 'config.dart';
-import 'datastore.dart';
-import 'firestore.dart';
-import 'github_checks_service_v2.dart';
-import 'github_service.dart';
-import 'luci_build_service_v2.dart';
-
-/// Scheduler service to validate all commits to supported Flutter repositories.
-///
-/// Scheduler responsibilties include:
-///   1. Tracking commits in Cocoon
-///   2. Ensuring commits are validated (via scheduling tasks against commits)
-///   3. Retry mechanisms for tasks
-class SchedulerV2 {
-  SchedulerV2({
-    required this.cache,
-    required this.config,
-    required this.githubChecksService,
-    required this.luciBuildService,
-    this.datastoreProvider = DatastoreService.defaultProvider,
-    this.httpClientProvider = Providers.freshHttpClient,
-    this.buildStatusProvider = BuildStatusService.defaultProvider,
-  });
-
-  final BuildStatusServiceProvider buildStatusProvider;
-  final CacheService cache;
-  final Config config;
-  final DatastoreServiceProvider datastoreProvider;
-  final GithubChecksServiceV2 githubChecksService;
-  final HttpClientProvider httpClientProvider;
-
-  late DatastoreService datastore;
-  late FirestoreService firestoreService;
-  LuciBuildServiceV2 luciBuildService;
-
-  /// Name of the subcache to store scheduler related values in redis.
-  static const String subcacheName = 'scheduler';
-
-  static const String kCiYamlCheckName = 'ci.yaml validation';
-
-  /// Ensure [commits] exist in Cocoon.
-  ///
-  /// If [Commit] does not exist in Datastore:
-  ///   * Write it to datastore
-  ///   * Schedule tasks listed in its scheduler config
-  /// Otherwise, ignore it.
-  Future<void> addCommits(List<Commit> commits) async {
-    datastore = datastoreProvider(config.db);
-    final List<Commit> newCommits = await _getMissingCommits(commits);
-    log.fine('Found ${newCommits.length} new commits on GitHub');
-    for (Commit commit in newCommits) {
-      await _addCommit(commit);
-    }
-  }
-
-  /// Schedule tasks against [PullRequest].
-  ///
-  /// If [PullRequest] was merged, schedule prod tasks against it.
-  /// Otherwise if it is presubmit, schedule try tasks against it.
-  Future<void> addPullRequest(PullRequest pr) async {
-    datastore = datastoreProvider(config.db);
-    // TODO(chillers): Support triggering on presubmit. https://github.com/flutter/flutter/issues/77858
-    if (!pr.merged!) {
-      log.warning('Only pull requests that were closed and merged should have tasks scheduled');
-      return;
-    }
-
-    final String fullRepo = pr.base!.repo!.fullName;
-    final String? branch = pr.base!.ref;
-    final String sha = pr.mergeCommitSha!;
-
-    final String id = '$fullRepo/$branch/$sha';
-    final Key<String> key = datastore.db.emptyKey.append<String>(Commit, id: id);
-    final Commit mergedCommit = Commit(
-      author: pr.user!.login!,
-      authorAvatarUrl: pr.user!.avatarUrl!,
-      branch: branch,
-      key: key,
-      // The field has a max length of 1500 so ensure the commit message is not longer.
-      message: truncate(pr.title!, 1490, omission: '...'),
-      repository: fullRepo,
-      sha: sha,
-      timestamp: pr.mergedAt!.millisecondsSinceEpoch,
-    );
-
-    if (await _commitExistsInDatastore(mergedCommit)) {
-      log.fine('$sha already exists in datastore. Scheduling skipped.');
-      return;
-    }
-
-    log.fine('Scheduling $sha via GitHub webhook');
-    await _addCommit(mergedCommit);
-  }
-
-  /// Processes postsubmit tasks.
-  Future<void> _addCommit(Commit commit) async {
-    if (!config.supportedRepos.contains(commit.slug)) {
-      log.fine('Skipping ${commit.id} as repo is not supported');
-      return;
-    }
-
-    final CiYaml ciYaml = await getCiYaml(commit);
-
-    final List<Target> initialTargets = ciYaml.getInitialTargets(ciYaml.postsubmitTargets);
-    final List<Task> tasks = targetsToTask(commit, initialTargets).toList();
-
-    final List<Tuple<Target, Task, int>> toBeScheduled = <Tuple<Target, Task, int>>[];
-    for (Target target in initialTargets) {
-      final Task task = tasks.singleWhere((Task task) => task.name == target.value.name);
-      SchedulerPolicy policy = target.schedulerPolicy;
-      // Release branches should run every task
-      if (Config.defaultBranch(commit.slug) != commit.branch) {
-        policy = GuaranteedPolicy();
-      }
-      final int? priority = await policy.triggerPriority(task: task, datastore: datastore);
-      if (priority != null) {
-        // Mark task as in progress to ensure it isn't scheduled over
-        task.status = Task.statusInProgress;
-        toBeScheduled.add(Tuple<Target, Task, int>(target, task, priority));
-      }
-    }
-
-    // Datastore must be written to generate task keys
-    try {
-      await datastore.withTransaction<void>((Transaction transaction) async {
-        transaction.queueMutations(inserts: <Commit>[commit]);
-        transaction.queueMutations(inserts: tasks);
-        await transaction.commit();
-        log.fine('Committed ${tasks.length} new tasks for commit ${commit.sha!}');
-      });
-    } catch (error) {
-      log.severe('Failed to add commit ${commit.sha!}: $error');
-    }
-
-    final firestore_commmit.Commit commitDocument = firestore_commmit.commitToCommitDocument(commit);
-    final List<firestore.Task> taskDocuments = firestore.targetsToTaskDocuments(commit, initialTargets);
-    final List<Write> writes = documentsToWrites([...taskDocuments, commitDocument], exists: false);
-    final FirestoreService firestoreService = await config.createFirestoreService();
-    // TODO(keyonghan): remove try catch logic after validated to work.
-    try {
-      await firestoreService.writeViaTransaction(writes);
-    } catch (error) {
-      log.warning('Failed to add to Firestore: $error');
-    }
-
-    await _batchScheduleBuilds(commit, toBeScheduled);
-    await _uploadToBigQuery(commit);
-  }
-
-  /// Schedule all builds in batch requests instead of a single request.
-  ///
-  /// Each batch request contains [Config.batchSize] builds to be scheduled.
-  Future<void> _batchScheduleBuilds(Commit commit, List<Tuple<Target, Task, int>> toBeScheduled) async {
-    log.info('Batching ${toBeScheduled.length} for ${commit.sha}');
-    final List<Future<void>> futures = <Future<void>>[];
-    for (int i = 0; i < toBeScheduled.length; i += config.batchSize) {
-      futures.add(
-        luciBuildService.schedulePostsubmitBuilds(
-          commit: commit,
-          toBeScheduled: toBeScheduled.sublist(i, min(i + config.batchSize, toBeScheduled.length)),
-        ),
-      );
-    }
-    await Future.wait<void>(futures);
-  }
-
-  /// Return subset of [commits] not stored in Datastore.
-  Future<List<Commit>> _getMissingCommits(List<Commit> commits) async {
-    final List<Commit> newCommits = <Commit>[];
-    // Ensure commits are sorted from newest to oldest (descending order)
-    commits.sort((Commit a, Commit b) => b.timestamp!.compareTo(a.timestamp!));
-    for (Commit commit in commits) {
-      // Cocoon may randomly drop commits, so check the entire list.
-      if (!await _commitExistsInDatastore(commit)) {
-        newCommits.add(commit);
-      }
-    }
-
-    // Reverses commits to be in order of oldest to newest.
-    return newCommits;
-  }
-
-  /// Whether [Commit] already exists in [datastore].
-  ///
-  /// Datastore is Cocoon's source of truth for what commits have been scheduled.
-  /// Since webhooks or cron jobs can schedule commits, we must verify a commit
-  /// has not already been scheduled.
-  Future<bool> _commitExistsInDatastore(Commit commit) async {
-    try {
-      await datastore.db.lookupValue<Commit>(commit.key);
-    } on KeyNotFoundException {
-      return false;
-    }
-    return true;
-  }
-
-  /// Process and filters ciyaml.
-  Future<CiYaml> getCiYaml(
-    Commit commit, {
-    bool validate = false,
-  }) async {
-    final Commit totCommit = await generateTotCommit(slug: commit.slug, branch: Config.defaultBranch(commit.slug));
-    final CiYaml totYaml = await _getCiYaml(totCommit);
-    return _getCiYaml(commit, totCiYaml: totYaml, validate: validate);
-  }
-
-  /// Load in memory the `.ci.yaml`.
-  Future<CiYaml> _getCiYaml(
-    Commit commit, {
-    CiYaml? totCiYaml,
-    bool validate = false,
-    RetryOptions retryOptions = const RetryOptions(delayFactor: Duration(seconds: 2), maxAttempts: 4),
-  }) async {
-    String ciPath;
-    ciPath = '${commit.repository}/${commit.sha!}/$kCiYamlPath';
-    final Uint8List ciYamlBytes = (await cache.getOrCreate(
-      subcacheName,
-      ciPath,
-      createFn: () => _downloadCiYaml(
-        commit,
-        ciPath,
-        retryOptions: retryOptions,
-      ),
-      ttl: const Duration(hours: 1),
-    ))!;
-    final pb.SchedulerConfig schedulerConfig = pb.SchedulerConfig.fromBuffer(ciYamlBytes);
-    log.fine('Retrieved .ci.yaml for $ciPath');
-    // If totCiYaml is not null, we assume upper level function has verified that current branch is not a release branch.
-    return CiYaml(
-      config: schedulerConfig,
-      slug: commit.slug,
-      branch: commit.branch!,
-      totConfig: totCiYaml,
-      validate: validate,
-    );
-  }
-
-  /// Get `.ci.yaml` from GitHub, and store the bytes in redis for future retrieval.
-  ///
-  /// If GitHub returns [HttpStatus.notFound], an empty config will be inserted assuming
-  /// that commit does not support the scheduler config file.
-  Future<Uint8List> _downloadCiYaml(
-    Commit commit,
-    String ciPath, {
-    RetryOptions retryOptions = const RetryOptions(maxAttempts: 3),
-  }) async {
-    final String configContent = await githubFileContent(
-      commit.slug,
-      '.ci.yaml',
-      httpClientProvider: httpClientProvider,
-      ref: commit.sha!,
-      retryOptions: retryOptions,
-    );
-    final YamlMap configYaml = loadYaml(configContent) as YamlMap;
-    final pb.SchedulerConfig schedulerConfig = pb.SchedulerConfig()..mergeFromProto3Json(configYaml);
-    return schedulerConfig.writeToBuffer();
-  }
-
-  /// Cancel all incomplete targets against a pull request.
-  Future<void> cancelPreSubmitTargets({
-    required PullRequest pullRequest,
-    String reason = 'Newer commit available',
-  }) async {
-    log.info('Cancelling presubmit targets with buildbucket v2.');
-    await luciBuildService.cancelBuilds(
-      pullRequest: pullRequest,
-      reason: reason,
-    );
-  }
-
-  /// Schedule presubmit targets against a pull request.
-  ///
-  /// Cancels all existing targets then schedules the targets.
-  ///
-  /// Schedules a [kCiYamlCheckName] to validate [CiYaml] is valid and all builds were able to be triggered.
-  /// If [builderTriggerList] is specified, then trigger only those targets.
-  Future<void> triggerPresubmitTargets({
-    required PullRequest pullRequest,
-    String reason = 'Newer commit available',
-    List<String>? builderTriggerList,
-  }) async {
-    // Always cancel running builds so we don't ever schedule duplicates.
-    log.info('Attempting to cancel existing presubmit targets for ${pullRequest.number}');
-    await cancelPreSubmitTargets(
-      pullRequest: pullRequest,
-      reason: reason,
-    );
-
-    log.info('Creating ciYaml validation check run for ${pullRequest.number}');
-    final CheckRun ciValidationCheckRun = await githubChecksService.githubChecksUtil.createCheckRun(
-      config,
-      pullRequest.base!.repo!.slug(),
-      pullRequest.head!.sha!,
-      kCiYamlCheckName,
-      output: const CheckRunOutput(
-        title: kCiYamlCheckName,
-        summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
-      ),
-    );
-
-    log.info('Creating presubmit targets for ${pullRequest.number}');
-    final RepositorySlug slug = pullRequest.base!.repo!.slug();
-    dynamic exception;
-    try {
-      // Both the author and label should be checked to make sure that no one is
-      // attempting to get a pull request without check through.
-      if (pullRequest.user!.login == config.autosubmitBot &&
-          pullRequest.labels!.any((element) => element.name == Config.revertOfLabel)) {
-        log.info('Skipping generating the full set of checks for revert request.');
-      } else {
-        final List<Target> presubmitTargets = await getPresubmitTargets(pullRequest);
-        final List<Target> presubmitTriggerTargets = getTriggerList(presubmitTargets, builderTriggerList);
-        await luciBuildService.scheduleTryBuilds(
-          targets: presubmitTriggerTargets,
-          pullRequest: pullRequest,
-        );
-      }
-    } on FormatException catch (error, backtrace) {
-      log.warning('FormatException encountered when scheduling presubmit targets for ${pullRequest.number}');
-      log.warning(backtrace.toString());
-      exception = error;
-    } catch (error, backtrace) {
-      log.warning('Exception encountered when scheduling presubmit targets for ${pullRequest.number}');
-      log.warning(backtrace.toString());
-      exception = error;
-    }
-
-    // Update validate ci.yaml check
-    log.info('Updating ci.yaml validation check for ${pullRequest.number}');
-    if (exception == null) {
-      // Success in validating ci.yaml
-      log.info('ci.yaml validation check was successful for ${pullRequest.number}');
-      await githubChecksService.githubChecksUtil.updateCheckRun(
-        config,
-        slug,
-        ciValidationCheckRun,
-        status: CheckRunStatus.completed,
-        conclusion: CheckRunConclusion.success,
-      );
-    } else {
-      log.warning('Marking PR #${pullRequest.number} $kCiYamlCheckName as failed');
-      log.warning(exception.toString());
-      // Failure when validating ci.yaml
-      await githubChecksService.githubChecksUtil.updateCheckRun(
-        config,
-        slug,
-        ciValidationCheckRun,
-        status: CheckRunStatus.completed,
-        conclusion: CheckRunConclusion.failure,
-        output: CheckRunOutput(
-          title: kCiYamlCheckName,
-          summary: '.ci.yaml has failures',
-          text: exception.toString(),
-        ),
-      );
-    }
-    log.info(
-      'Finished triggering builds for: pr ${pullRequest.number}, commit ${pullRequest.base!.sha}, branch ${pullRequest.head!.ref} and slug ${pullRequest.base!.repo!.slug()}}',
-    );
-  }
-
-  /// If [builderTriggerList] is specificed, return only builders that are contained in [presubmitTarget].
-  /// Otherwise, return [presubmitTarget].
-  List<Target> getTriggerList(
-    List<Target> presubmitTarget,
-    List<String>? builderTriggerList,
-  ) {
-    if (builderTriggerList != null && builderTriggerList.isNotEmpty) {
-      return presubmitTarget.where((Target target) => builderTriggerList.contains(target.value.name)).toList();
-    }
-    return presubmitTarget;
-  }
-
-  /// Given a pull request event, retry all failed LUCI checks.
-  ///
-  /// 1. Aggregate .ci.yaml and try_builders.json presubmit builds.
-  /// 2. Get failed LUCI builds for this pull request at [commitSha].
-  /// 3. Rerun the failed builds that also have a failed check status.
-  Future<void> retryPresubmitTargets({
-    required PullRequest pullRequest,
-    required CheckSuiteEvent checkSuiteEvent,
-  }) async {
-    final GitHub githubClient = await config.createGitHubClient(pullRequest: pullRequest);
-    final Map<String, CheckRun> checkRuns = await githubChecksService.githubChecksUtil.allCheckRuns(
-      githubClient,
-      checkSuiteEvent,
-    );
-    final List<Target> presubmitTargets = await getPresubmitTargets(pullRequest);
-    final List<bbv2.Build?> failedBuilds =
-        await luciBuildService.failedBuilds(pullRequest: pullRequest, targets: presubmitTargets);
-    for (bbv2.Build? build in failedBuilds) {
-      final CheckRun checkRun = checkRuns[build!.builder.builder]!;
-
-      if (checkRun.status != CheckRunStatus.completed) {
-        // Check run is still in progress, do not retry.
-        continue;
-      }
-
-      await luciBuildService.scheduleTryBuilds(
-        targets: presubmitTargets.where((Target target) => build.builder.builder == target.value.name).toList(),
-        pullRequest: pullRequest,
-        checkSuiteEvent: checkSuiteEvent,
-      );
-    }
-  }
-
-  /// Get LUCI presubmit builders from .ci.yaml.
-  ///
-  /// Filters targets with runIf, matching them to the diff of [pullRequest].
-  ///
-  /// In the case there is an issue getting the diff from GitHub, all targets are returned.
-  Future<List<Target>> getPresubmitTargets(PullRequest pullRequest) async {
-    final Commit commit = Commit(
-      branch: pullRequest.base!.ref,
-      repository: pullRequest.base!.repo!.fullName,
-      sha: pullRequest.head!.sha,
-    );
-    late CiYaml ciYaml;
-    log.info('Attempting to read presubmit targets from ci.yaml for ${pullRequest.number}');
-    if (commit.branch == Config.defaultBranch(commit.slug)) {
-      ciYaml = await getCiYaml(commit, validate: true);
-    } else {
-      ciYaml = await getCiYaml(commit);
-    }
-    log.info('ci.yaml loaded successfully.');
-    log.info('Collecting presubmit targets for ${pullRequest.number}');
-
-    // Filter out schedulers targets with schedulers different than luci or cocoon.
-    final List<Target> presubmitTargets = ciYaml.presubmitTargets
-        .where(
-          (Target target) =>
-              target.value.scheduler == pb.SchedulerSystem.luci || target.value.scheduler == pb.SchedulerSystem.cocoon,
-        )
-        .toList();
-
-    // See https://github.com/flutter/flutter/issues/138430.
-    final includePostsubmitAsPresubmit = _includePostsubmitAsPresubmit(ciYaml, pullRequest);
-    if (includePostsubmitAsPresubmit) {
-      log.info('Including postsubmit targets as presubmit for ${pullRequest.number}');
-
-      for (Target target in ciYaml.postsubmitTargets) {
-        // We don't want to include a presubmit twice
-        // We don't want to run the builder_cache target as a presubmit
-        if (!target.value.presubmit && !target.value.properties.containsKey('cache_name')) {
-          presubmitTargets.add(target);
-        }
-      }
-    }
-
-    log.info('Collected ${presubmitTargets.length} presubmit targets.');
-    // Release branches should run every test.
-    if (pullRequest.base!.ref != Config.defaultBranch(pullRequest.base!.repo!.slug())) {
-      log.info('Release branch found, scheduling all targets for ${pullRequest.number}');
-      return presubmitTargets;
-    }
-    if (includePostsubmitAsPresubmit) {
-      log.info('Postsubmit targets included as presubmit, scheduling all targets for ${pullRequest.number}');
-      return presubmitTargets;
-    }
-
-    // Filter builders based on the PR diff
-    final GithubService githubService = await config.createGithubService(commit.slug);
-    List<String> files = <String>[];
-    try {
-      files = await githubService.listFiles(pullRequest);
-    } on GitHubError catch (error) {
-      log.warning(error);
-      log.warning('Unable to get diff for pullRequest=$pullRequest');
-      log.warning('Running all targets');
-      return presubmitTargets.toList();
-    }
-    return getTargetsToRun(presubmitTargets, files);
-  }
-
-  /// Returns `true` if [ciYaml.postsubmitTargets] should be ran during presubmit.
-  static bool _includePostsubmitAsPresubmit(CiYaml ciYaml, PullRequest pullRequest) {
-    // Only allow this for flutter/engine.
-    // See https://github.com/flutter/cocoon/pull/3256#issuecomment-1811624351.
-    if (ciYaml.slug != Config.engineSlug) {
-      return false;
-    }
-    if (pullRequest.labels?.any((label) => label.name.contains('test: all')) ?? false) {
-      return true;
-    }
-    return false;
-  }
-
-  /// Reschedules a failed build using a [CheckRunEvent]. The CheckRunEvent is
-  /// generated when someone clicks the re-run button from a failed build from
-  /// the Github UI.
-  ///
-  /// If the rerequested check is for [kCiYamlCheckName], all presubmit jobs are retried.
-  /// Otherwise, the specific check will be retried.
-  ///
-  /// Relevant APIs:
-  ///   https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions
-  Future<bool> processCheckRun(cocoon_checks.CheckRunEvent checkRunEvent) async {
-    switch (checkRunEvent.action) {
-      case 'rerequested':
-        log.fine('Rerun requested by GitHub user: ${checkRunEvent.sender?.login}');
-        final String? name = checkRunEvent.checkRun!.name;
-        bool success = false;
-        if (name == kCiYamlCheckName) {
-          // The CheckRunEvent.checkRun.pullRequests array is empty for this
-          // event, so we need to find the matching pull request.
-          final RepositorySlug slug = checkRunEvent.repository!.slug();
-          final String headSha = checkRunEvent.checkRun!.headSha!;
-          final int checkSuiteId = checkRunEvent.checkRun!.checkSuite!.id!;
-          final PullRequest? pullRequest =
-              await githubChecksService.findMatchingPullRequest(slug, headSha, checkSuiteId);
-          if (pullRequest != null) {
-            log.fine('Matched PR: ${pullRequest.number} Repo: ${slug.fullName}');
-            await triggerPresubmitTargets(pullRequest: pullRequest);
-            success = true;
-          } else {
-            log.warning('No matching PR found for head_sha in check run event.');
-          }
-        } else {
-          try {
-            final RepositorySlug slug = checkRunEvent.repository!.slug();
-            final String gitBranch = checkRunEvent.checkRun!.checkSuite!.headBranch ?? Config.defaultBranch(slug);
-            final String sha = checkRunEvent.checkRun!.headSha!;
-
-            // Only merged commits are added to the datastore. If a matching commit is found, this must be a postsubmit checkrun.
-            datastore = datastoreProvider(config.db);
-            final Key<String> commitKey =
-                Commit.createKey(db: datastore.db, slug: slug, gitBranch: gitBranch, sha: sha);
-            Commit? commit;
-            try {
-              commit = await Commit.fromDatastore(datastore: datastore, key: commitKey);
-              log.fine('Commit found in datastore.');
-            } on KeyNotFoundException {
-              log.fine('Commit not found in datastore.');
-            }
-
-            if (commit == null) {
-              log.fine('Rescheduling presubmit build.');
-              // Does not do anything with the returned build oddly.
-              await luciBuildService.reschedulePresubmitBuildUsingCheckRunEvent(checkRunEvent: checkRunEvent);
-            } else {
-              log.fine('Rescheduling postsubmit build.');
-              final String checkName = checkRunEvent.checkRun!.name!;
-              final Task task = await Task.fromDatastore(datastore: datastore, commitKey: commitKey, name: checkName);
-              final CiYaml ciYaml = await getCiYaml(commit);
-              final Target target =
-                  ciYaml.postsubmitTargets.singleWhere((Target target) => target.value.name == task.name);
-              await luciBuildService.reschedulePostsubmitBuildUsingCheckRunEvent(
-                checkRunEvent,
-                commit: commit,
-                task: task,
-                target: target,
-              );
-            }
-
-            success = true;
-          } on NoBuildFoundException {
-            log.warning('No build found to reschedule.');
-          }
-        }
-
-        log.fine('CheckName: $name State: $success');
-        return success;
-    }
-
-    return true;
-  }
-
-  /// Push [Commit] to BigQuery as part of the infra metrics dashboards.
-  Future<void> _uploadToBigQuery(Commit commit) async {
-    const String projectId = 'flutter-dashboard';
-    const String dataset = 'cocoon';
-    const String table = 'Checklist';
-
-    log.info('Uploading commit ${commit.sha} info to bigquery.');
-
-    final TabledataResource tabledataResource = await config.createTabledataResourceApi();
-    final List<Map<String, Object>> tableDataInsertAllRequestRows = <Map<String, Object>>[];
-
-    /// Consolidate [commits] together
-    ///
-    /// Prepare for bigquery [insertAll]
-    tableDataInsertAllRequestRows.add(<String, Object>{
-      'json': <String, Object?>{
-        'ID': commit.id,
-        'CreateTimestamp': commit.timestamp,
-        'FlutterRepositoryPath': commit.repository,
-        'CommitSha': commit.sha!,
-        'CommitAuthorLogin': commit.author,
-        'CommitAuthorAvatarURL': commit.authorAvatarUrl,
-        'CommitMessage': commit.message,
-        'Branch': commit.branch,
-      },
-    });
-
-    /// Final [rows] to be inserted to [BigQuery]
-    final TableDataInsertAllRequest rows =
-        TableDataInsertAllRequest.fromJson(<String, Object>{'rows': tableDataInsertAllRequestRows});
-
-    /// Insert [commits] to [BigQuery]
-    try {
-      if (rows.rows == null) {
-        log.warning('Rows to be inserted is null');
-      } else {
-        log.info('Inserting ${rows.rows!.length} into big query for ${commit.sha}');
-      }
-      await tabledataResource.insertAll(rows, projectId, dataset, table);
-    } on ApiRequestError {
-      log.warning('Failed to add commits to BigQuery: $ApiRequestError');
-    }
-  }
-
-  /// Returns the tip of tree [Commit] using specified [branch] and [RepositorySlug].
-  ///
-  /// A tip of tree [Commit] is used to help generate the tip of tree [CiYaml].
-  /// The generated tip of tree [CiYaml] will be compared against Presubmit Targets in current [CiYaml],
-  /// to ensure new targets without `bringup: true` label are not added into the build.
-  Future<Commit> generateTotCommit({required String branch, required RepositorySlug slug}) async {
-    datastore = datastoreProvider(config.db);
-    firestoreService = await config.createFirestoreService();
-    final BuildStatusService buildStatusService = buildStatusProvider(datastore, firestoreService);
-    final Commit totCommit = (await buildStatusService
-            .retrieveCommitStatus(
-              limit: 1,
-              branch: branch,
-              slug: slug,
-            )
-            .map<Commit>((CommitStatus status) => status.commit)
-            .toList())
-        .single;
-
-    return totCommit;
-  }
-}
diff --git a/app_dart/test/request_handlers/dart_internal_subscription_test.dart b/app_dart/test/request_handlers/dart_internal_subscription_test.dart
index 8863695..ebbcdfb 100644
--- a/app_dart/test/request_handlers/dart_internal_subscription_test.dart
+++ b/app_dart/test/request_handlers/dart_internal_subscription_test.dart
@@ -2,16 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:convert';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
 import 'package:cocoon_service/cocoon_service.dart';
 import 'package:cocoon_service/src/model/appengine/commit.dart';
 import 'package:cocoon_service/src/model/appengine/task.dart';
 import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/model/luci/pubsub_message_v2.dart';
+import 'package:cocoon_service/src/model/luci/buildbucket.dart';
+import 'package:cocoon_service/src/model/luci/push_message.dart' as push;
 import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:fixnum/fixnum.dart';
 import 'package:gcloud/db.dart';
 import 'package:googleapis/firestore/v1.dart' hide Status;
 import 'package:mockito/mockito.dart';
@@ -20,86 +17,53 @@
 import '../src/datastore/fake_config.dart';
 import '../src/request_handling/fake_authentication.dart';
 import '../src/request_handling/fake_http.dart';
-import '../src/request_handling/subscription_v2_tester.dart';
+import '../src/request_handling/subscription_tester.dart';
 import '../src/utilities/entity_generators.dart';
 import '../src/utilities/mocks.dart';
 
 void main() {
-  // Omit the timestamps for expect purposes.
-  const String buildJson = '''
-{
-  "id": "8766855135863637953",
-  "builder": {
-    "project": "dart-internal",
-    "bucket": "flutter",
-    "builder": "Linux packaging_release_builder"
-  },
-  "number": 123456,
-  "status": "SUCCESS",
-  "input": {
-    "gitilesCommit": {
-      "project": "flutter/flutter",
-      "id": "HASH12345",
-      "ref": "refs/heads/test-branch"
-    }
-  }
-}
-''';
-
-  const String buildMessageJson = '''
-{
-  "build": {
-    "id": "8766855135863637953",
-    "builder": {
-      "project": "dart-internal",
-      "bucket": "flutter",
-      "builder": "Linux packaging_release_builder"
-    },
-    "number": 123456,
-    "status": "SUCCESS",
-    "input": {
-      "gitilesCommit": {
-        "project": "flutter/flutter",
-        "id": "HASH12345",
-        "ref": "refs/heads/test-branch"
-      }
-    }
-  }
-}
-''';
-
   late DartInternalSubscription handler;
   late FakeConfig config;
   late FakeHttpRequest request;
-  late MockBuildBucketV2Client buildBucketV2Client;
-  late SubscriptionV2Tester tester;
+  late MockBuildBucketClient buildBucketClient;
+  late SubscriptionTester tester;
   late MockFirestoreService mockFirestoreService;
   late Commit commit;
-
-  // ignore: unused_local_variable
+  final DateTime startTime = DateTime(2023, 1, 1, 0, 0, 0);
+  final DateTime endTime = DateTime(2023, 1, 1, 0, 14, 23);
   const String project = 'dart-internal';
   const String bucket = 'flutter';
   const String builder = 'Linux packaging_release_builder';
-  const int buildNumber = 123456;
-  // ignore: unused_local_variable
-  final Int64 buildId = Int64(8766855135863637953);
+  const int buildId = 123456;
   const String fakeHash = 'HASH12345';
   const String fakeBranch = 'test-branch';
+  const String fakePubsubMessage = '''
+    {
+      "build": {
+        "id": "$buildId",
+        "builder": {
+          "project": "$project",
+          "bucket": "$bucket",
+          "builder": "$builder"
+        }
+      }
+    }
+  ''';
 
   setUp(() async {
     mockFirestoreService = MockFirestoreService();
     config = FakeConfig(firestoreService: mockFirestoreService);
-    buildBucketV2Client = MockBuildBucketV2Client();
+    buildBucketClient = MockBuildBucketClient();
     handler = DartInternalSubscription(
       cache: CacheService(inMemory: true),
       config: config,
       authProvider: FakeAuthenticationProvider(),
-      buildBucketV2Client: buildBucketV2Client,
+      buildBucketClient: buildBucketClient,
       datastoreProvider: (DatastoreDB db) => DatastoreService(config.db, 5),
     );
     request = FakeHttpRequest();
 
-    tester = SubscriptionV2Tester(
+    tester = SubscriptionTester(
       request: request,
     );
 
@@ -112,20 +76,27 @@
       timestamp: 0,
     );
 
-    // final bbv2.PubSubCallBack pubSubCallBackTest = bbv2.PubSubCallBack();
-    // pubSubCallBackTest.mergeFromProto3Json(jsonDecode(message));
-    final bbv2.Build build = bbv2.Build().createEmptyInstance();
-    build.mergeFromProto3Json(jsonDecode(buildJson) as Map<String, dynamic>);
-
-    const PushMessageV2 pushMessageV2 = PushMessageV2(data: buildJson, messageId: '798274983');
-    tester.message = pushMessageV2;
-
+    final Build fakeBuild = Build(
+      builderId: const BuilderId(project: project, bucket: bucket, builder: builder),
+      number: buildId,
+      id: 'fake-build-id',
+      status: Status.success,
+      startTime: startTime,
+      endTime: endTime,
+      input: const Input(
+        gitilesCommit: GitilesCommit(
+          project: 'flutter/flutter',
+          hash: fakeHash,
+          ref: 'refs/heads/$fakeBranch',
+        ),
+      ),
+    );
     when(
-      buildBucketV2Client.getBuild(
+      buildBucketClient.getBuild(
         any,
         buildBucketUri: 'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
       ),
-    ).thenAnswer((_) => Future<bbv2.Build>.value(build));
+    ).thenAnswer((_) => Future<Build>.value(fakeBuild));
 
     final List<Commit> datastoreCommit = <Commit>[commit];
     await config.db.commit(inserts: datastoreCommit);
@@ -140,12 +111,12 @@
     ).thenAnswer((Invocation invocation) {
       return Future<BatchWriteResponse>.value(BatchWriteResponse());
     });
-    tester.message = const PushMessageV2(data: buildMessageJson);
+    tester.message = const push.PushMessage(data: fakePubsubMessage);
 
     await tester.post(handler);
 
     verify(
-      buildBucketV2Client.getBuild(any),
+      buildBucketClient.getBuild(any),
     ).called(1);
 
     // This is used for testing to pull the data out of the "datastore" so that
@@ -153,7 +124,7 @@
     late Task taskInDb;
     late Commit commitInDb;
     config.db.values.forEach((k, v) {
-      if (v is Task && v.buildNumberList == buildNumber.toString()) {
+      if (v is Task && v.buildNumberList == buildId.toString()) {
         taskInDb = v;
       }
       if (v is Commit) {
@@ -175,13 +146,16 @@
     // Ensure the task in the db is exactly what we expect
     final Task expectedTask = Task(
       attempts: 1,
-      buildNumber: buildNumber,
-      buildNumberList: buildNumber.toString(),
+      buildNumber: buildId,
+      buildNumberList: buildId.toString(),
       builderName: builder,
       commitKey: commitInDb.key,
+      createTimestamp: startTime.millisecondsSinceEpoch,
+      endTimestamp: endTime.millisecondsSinceEpoch,
       luciBucket: bucket,
       name: builder,
       stageName: 'dart-internal',
+      startTimestamp: startTime.millisecondsSinceEpoch,
       status: 'Succeeded',
       key: commit.key.append(Task),
       timeoutInMinutes: 0,
@@ -220,9 +194,12 @@
       buildNumberList: existingTaskId.toString(),
       builderName: builder,
       commitKey: commit.key,
+      createTimestamp: startTime.millisecondsSinceEpoch,
+      endTimestamp: endTime.millisecondsSinceEpoch,
       luciBucket: bucket,
       name: builder,
       stageName: 'dart-internal',
+      startTimestamp: startTime.millisecondsSinceEpoch,
       status: 'Succeeded',
       key: commit.key.append(Task),
       timeoutInMinutes: 0,
@@ -233,18 +210,17 @@
     final List<Task> datastoreCommit = <Task>[fakeTask];
     await config.db.commit(inserts: datastoreCommit);
 
-    const PushMessageV2 pushMessageV2 = PushMessageV2(data: buildMessageJson, messageId: '798274983');
-    tester.message = pushMessageV2;
+    tester.message = const push.PushMessage(data: fakePubsubMessage);
 
     await tester.post(handler);
 
     verify(
-      buildBucketV2Client.getBuild(any),
+      buildBucketClient.getBuild(any),
     ).called(1);
 
     // This is used for testing to pull the data out of the "datastore" so that
     // we can verify what was saved.
-    final String expectedBuilderList = '${existingTaskId.toString()},${buildNumber.toString()}';
+    final String expectedBuilderList = '${existingTaskId.toString()},${buildId.toString()}';
     late Task taskInDb;
     late Commit commitInDb;
     config.db.values.forEach((k, v) {
@@ -270,13 +246,16 @@
     // Ensure the task in the db is exactly what we expect
     final Task expectedTask = Task(
       attempts: 2,
-      buildNumber: buildNumber,
+      buildNumber: buildId,
       buildNumberList: expectedBuilderList,
       builderName: builder,
       commitKey: commitInDb.key,
+      createTimestamp: startTime.millisecondsSinceEpoch,
+      endTimestamp: endTime.millisecondsSinceEpoch,
       luciBucket: bucket,
       name: builder,
       stageName: 'dart-internal',
+      startTimestamp: startTime.millisecondsSinceEpoch,
       status: 'Succeeded',
       key: commit.key.append(Task),
       timeoutInMinutes: 0,
@@ -299,93 +278,67 @@
     expect(insertedTaskDocument.status, expectedTask.status);
   });
 
-  test('ignores message with empty build data', () async {
-    tester.message = const PushMessageV2();
+  test('ignores null message', () async {
+    tester.message = const push.PushMessage(data: null);
     expect(await tester.post(handler), equals(Body.empty));
   });
 
-  // // TODO create a construction method for this to simplify testing.
+  test('ignores message with empty build data', () async {
+    tester.message = const push.PushMessage(data: '{}');
+    expect(await tester.post(handler), equals(Body.empty));
+  });
+
   test('ignores message not from flutter bucket', () async {
-    const String dartMessage = '''
-{
-  "build": {
-    "id": "8766855135863637953",
-    "builder": {
-      "project": "dart-internal",
-      "bucket": "dart",
-      "builder": "Linux packaging_release_builder"
-    },
-    "number": 123456,
-    "status": "SUCCESS",
-    "input": {
-      "gitilesCommit": {
-        "project":"flutter/flutter",
-        "id":"HASH12345",
-        "ref":"refs/heads/test-branch"
+    tester.message = const push.PushMessage(
+      data: '''
+    {
+      "build": {
+        "id": "$buildId",
+        "builder": {
+          "project": "$project",
+          "bucket": "dart",
+          "builder": "$builder"
+        }
       }
     }
-  }
-}
-''';
-
-    const PushMessageV2 pushMessageV2 = PushMessageV2(data: dartMessage, messageId: '798274983');
-    tester.message = pushMessageV2;
+    ''',
+    );
     expect(await tester.post(handler), equals(Body.empty));
   });
 
   test('ignores message not from dart-internal project', () async {
-    const String unsupportedProjectMessage = '''
-{
-  "build": {
-    "id": "8766855135863637953",
-    "builder": {
-      "project": "unsupported-project",
-      "bucket": "dart",
-      "builder": "Linux packaging_release_builder"
-    },
-    "number": 123456,
-    "status": "SUCCESS",
-    "input": {
-      "gitilesCommit": {
-        "project": "flutter/flutter",
-        "id": "HASH12345",
-        "ref": "refs/heads/test-branch"
+    tester.message = const push.PushMessage(
+      data: '''
+    {
+      "build": {
+        "id": "$buildId",
+        "builder": {
+          "project": "different-project",
+          "bucket": "$bucket",
+          "builder": "$builder"
+        }
       }
     }
-  }
-}
-''';
-
-    const PushMessageV2 pushMessageV2 = PushMessageV2(data: unsupportedProjectMessage, messageId: '798274983');
-    tester.message = pushMessageV2;
+    ''',
+    );
     expect(await tester.post(handler), equals(Body.empty));
   });
 
   test('ignores message not from an accepted builder', () async {
-    const String unknownBuilderMessage = '''
-{
-  "build": {
-    "id": "8766855135863637953",
-    "builder": {
-      "project": "dart-internal",
-      "bucket": "dart",
-      "builder": "different builder"
-    },
-    "number": 123456,
-    "status": "SUCCESS",
-    "input": {
-      "gitilesCommit": {
-        "project": "flutter/flutter",
-        "id": "HASH12345",
-        "ref": "refs/heads/test-branch"
+    tester.message = const push.PushMessage(
+      data: '''
+    {
+      "build": {
+        "id": "$buildId",
+        "builder": {
+          "project": "different-project",
+          "bucket": "$bucket",
+          "builder": "different-builder"
+        }
       }
     }
-  }
-}
-''';
-
-    const PushMessageV2 pushMessageV2 = PushMessageV2(data: unknownBuilderMessage, messageId: '798274983');
-    tester.message = pushMessageV2;
+    ''',
+    );
     expect(await tester.post(handler), equals(Body.empty));
   });
 }
diff --git a/app_dart/test/request_handlers/github/webhook_subscription_test.dart b/app_dart/test/request_handlers/github/webhook_subscription_test.dart
index 48506c9..50c7336 100644
--- a/app_dart/test/request_handlers/github/webhook_subscription_test.dart
+++ b/app_dart/test/request_handlers/github/webhook_subscription_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-
 import 'package:cocoon_service/src/model/appengine/commit.dart';
 import 'package:cocoon_service/src/model/luci/buildbucket.dart';
 import 'package:cocoon_service/src/model/luci/push_message.dart' as pm;
@@ -21,12 +19,10 @@
 import '../../src/datastore/fake_datastore.dart';
 import '../../src/request_handling/fake_http.dart';
 import '../../src/request_handling/subscription_tester.dart';
-import '../../src/service/fake_build_bucket_v2_client.dart';
 import '../../src/service/fake_buildbucket.dart';
 import '../../src/service/fake_github_service.dart';
 import '../../src/service/fake_gerrit_service.dart';
 import '../../src/service/fake_scheduler.dart';
-import '../../src/service/fake_scheduler_v2.dart';
 import '../../src/utilities/entity_generators.dart';
 import '../../src/utilities/mocks.dart';
 import '../../src/utilities/webhook_generators.dart';
@@ -34,18 +30,17 @@
 void main() {
   late GithubWebhookSubscription webhook;
   late FakeBuildBucketClient fakeBuildBucketClient;
-  late FakeBuildBucketV2Client fakeBuildBucketV2Client;
   late FakeConfig config;
   late FakeDatastoreDB db;
   late FakeGithubService githubService;
   late FakeHttpRequest request;
   late FakeScheduler scheduler;
-  late FakeSchedulerV2 schedulerV2;
   late FakeGerritService gerritService;
   late MockCommitService commitService;
   late MockGitHub gitHubClient;
   late MockFirestoreService mockFirestoreService;
   late MockGithubChecksUtil mockGithubChecksUtil;
+  late MockGithubChecksService mockGithubChecksService;
   late MockIssuesService issuesService;
   late MockPullRequestsService pullRequestsService;
   late SubscriptionTester tester;
@@ -94,17 +89,15 @@
     when(pullRequestsService.edit(any, any, title: anyNamed('title'), state: anyNamed('state'), base: anyNamed('base')))
         .thenAnswer((_) async => PullRequest());
     fakeBuildBucketClient = FakeBuildBucketClient();
-    fakeBuildBucketV2Client = FakeBuildBucketV2Client();
     mockGithubChecksUtil = MockGithubChecksUtil();
     scheduler = FakeScheduler(
       config: config,
       buildbucket: fakeBuildBucketClient,
       githubChecksUtil: mockGithubChecksUtil,
     );
-    schedulerV2 =
-        FakeSchedulerV2(config: config, buildbucket: fakeBuildBucketV2Client, githubChecksUtil: mockGithubChecksUtil);
     tester = SubscriptionTester(request: request);
 
+    mockGithubChecksService = MockGithubChecksService();
     when(gitHubClient.issues).thenReturn(issuesService);
     when(gitHubClient.pullRequests).thenReturn(pullRequestsService);
     when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output'))).thenAnswer((_) async {
@@ -121,8 +114,8 @@
       cache: CacheService(inMemory: true),
       datastoreProvider: (_) => DatastoreService(config.db, 5),
       gerritService: gerritService,
+      githubChecksService: mockGithubChecksService,
       scheduler: scheduler,
-      schedulerV2: schedulerV2,
       commitService: commitService,
     );
   });
@@ -257,9 +250,9 @@
       );
 
       await tester.post(webhook);
-      // TODO this is v2 to route event temporarily from v1 to v2.
-      expect(schedulerV2.cancelPreSubmitTargetsCallCnt, 1);
-      expect(schedulerV2.addPullRequestCallCnt, 0);
+
+      expect(scheduler.cancelPreSubmitTargetsCallCnt, 1);
+      expect(scheduler.addPullRequestCallCnt, 0);
     });
 
     test('Acts on closed, cancels presubmit targets, add pr for postsubmit target create', () async {
@@ -276,8 +269,8 @@
 
       await tester.post(webhook);
 
-      expect(schedulerV2.cancelPreSubmitTargetsCallCnt, 1);
-      expect(schedulerV2.addPullRequestCallCnt, 1);
+      expect(scheduler.cancelPreSubmitTargetsCallCnt, 1);
+      expect(scheduler.addPullRequestCallCnt, 1);
     });
 
     test('Acts on opened against master when default is main', () async {
@@ -322,8 +315,8 @@
         ),
       ).called(1);
 
-      expect(schedulerV2.triggerPresubmitTargetsCallCount, 1);
-      schedulerV2.resetTriggerPresubmitTargetsCallCount();
+      expect(scheduler.triggerPresubmitTargetsCallCount, 1);
+      scheduler.resetTriggerPresubmitTargetsCallCount();
     });
 
     test('Acts on edited against master when default is main', () async {
@@ -369,8 +362,8 @@
         ),
       ).called(1);
 
-      expect(schedulerV2.triggerPresubmitTargetsCallCount, 1);
-      schedulerV2.resetTriggerPresubmitTargetsCallCount();
+      expect(scheduler.triggerPresubmitTargetsCallCount, 1);
+      scheduler.resetTriggerPresubmitTargetsCallCount();
     });
 
     // We already schedule checks when a draft is opened, don't need to re-test
@@ -404,24 +397,23 @@
         number: issueNumber,
         isDraft: true,
       );
-
       bool batchRequestCalled = false;
 
-      Future<bbv2.BatchResponse> getBatchResponse() async {
+      Future<BatchResponse> getBatchResponse() async {
         batchRequestCalled = true;
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[
-                  bbv2.Build(number: 999, builder: bbv2.BuilderID(builder: 'Linux'), status: bbv2.Status.SUCCESS),
+        return BatchResponse(
+          responses: <Response>[
+            Response(
+              searchBuilds: SearchBuildsResponse(
+                builds: <Build>[
+                  generateBuild(999, name: 'Linux', status: Status.ended),
                 ],
               ),
             ),
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[
-                  bbv2.Build(number: 998, builder: bbv2.BuilderID(builder: 'Linux'), status: bbv2.Status.SUCCESS),
+            Response(
+              searchBuilds: SearchBuildsResponse(
+                builds: <Build>[
+                  generateBuild(998, name: 'Linux', status: Status.ended),
                 ],
               ),
             ),
@@ -429,12 +421,12 @@
         );
       }
 
-      fakeBuildBucketV2Client.batchResponse = getBatchResponse;
+      fakeBuildBucketClient.batchResponse = getBatchResponse;
 
       await tester.post(webhook);
 
       expect(batchRequestCalled, isTrue);
-      expect(schedulerV2.cancelPreSubmitTargetsCallCnt, 1);
+      expect(scheduler.cancelPreSubmitTargetsCallCnt, 1);
     });
 
     test('Does nothing against cherry pick PR', () async {
@@ -2196,22 +2188,21 @@
     test('When synchronized, cancels existing builds and schedules new ones', () async {
       const int issueNumber = 12345;
       bool batchRequestCalled = false;
-
-      Future<bbv2.BatchResponse> getBatchResponse() async {
+      Future<BatchResponse> getBatchResponse() async {
         batchRequestCalled = true;
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[
-                  bbv2.Build(number: 999, builder: bbv2.BuilderID(builder: 'Linux'), status: bbv2.Status.SUCCESS),
+        return BatchResponse(
+          responses: <Response>[
+            Response(
+              searchBuilds: SearchBuildsResponse(
+                builds: <Build>[
+                  generateBuild(999, name: 'Linux', status: Status.ended),
                 ],
               ),
             ),
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[
-                  bbv2.Build(number: 998, builder: bbv2.BuilderID(builder: 'Linux'), status: bbv2.Status.SUCCESS),
+            Response(
+              searchBuilds: SearchBuildsResponse(
+                builds: <Build>[
+                  generateBuild(998, name: 'Linux', status: Status.ended),
                 ],
               ),
             ),
@@ -2219,7 +2210,7 @@
         );
       }
 
-      fakeBuildBucketV2Client.batchResponse = getBatchResponse;
+      fakeBuildBucketClient.batchResponse = getBatchResponse;
 
       tester.message = generateGithubWebhookMessage(
         action: 'synchronize',
diff --git a/app_dart/test/request_handlers/postsubmit_luci_subscription_v2_test.dart b/app_dart/test/request_handlers/postsubmit_luci_subscription_v2_test.dart
deleted file mode 100644
index e4e3cda..0000000
--- a/app_dart/test/request_handlers/postsubmit_luci_subscription_v2_test.dart
+++ /dev/null
@@ -1,582 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/firestore/commit.dart' as firestore_commit;
-import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/request_handlers/postsubmit_luci_subscription_v2.dart';
-import 'package:cocoon_service/src/request_handling/exceptions.dart';
-import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:googleapis/firestore/v1.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/request_handling/fake_authentication.dart';
-import '../src/request_handling/fake_http.dart';
-import '../src/request_handling/subscription_v2_tester.dart';
-import '../src/service/fake_luci_build_service_v2.dart';
-import '../src/service/fake_scheduler_v2.dart';
-import '../src/utilities/build_bucket_v2_messages.dart';
-import '../src/utilities/entity_generators.dart';
-import '../src/utilities/mocks.dart';
-import 'package:fixnum/fixnum.dart';
-
-void main() {
-  late PostsubmitLuciSubscriptionV2 handler;
-  late FakeConfig config;
-  late FakeHttpRequest request;
-  late MockFirestoreService mockFirestoreService;
-  late SubscriptionV2Tester tester;
-  late MockGithubChecksServiceV2 mockGithubChecksService;
-  late MockGithubChecksUtil mockGithubChecksUtil;
-  late FakeSchedulerV2 scheduler;
-  firestore.Task? firestoreTask;
-  firestore_commit.Commit? firestoreCommit;
-  late int attempt;
-
-  setUp(() async {
-    firestoreTask = null;
-    attempt = 0;
-    mockGithubChecksUtil = MockGithubChecksUtil();
-    mockFirestoreService = MockFirestoreService();
-    config = FakeConfig(
-      maxLuciTaskRetriesValue: 3,
-      firestoreService: mockFirestoreService,
-    );
-    mockGithubChecksService = MockGithubChecksServiceV2();
-    when(mockGithubChecksService.githubChecksUtil).thenReturn(mockGithubChecksUtil);
-    when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output')))
-        .thenAnswer((_) async => generateCheckRun(1, name: 'Linux A'));
-    when(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    ).thenAnswer((_) async => true);
-    when(
-      mockFirestoreService.getDocument(
-        captureAny,
-      ),
-    ).thenAnswer((Invocation invocation) {
-      attempt++;
-      if (attempt == 1) {
-        return Future<Document>.value(
-          firestoreTask,
-        );
-      } else {
-        return Future<Document>.value(
-          firestoreCommit,
-        );
-      }
-    });
-    when(
-      mockFirestoreService.queryRecentCommits(
-        limit: captureAnyNamed('limit'),
-        slug: captureAnyNamed('slug'),
-        branch: captureAnyNamed('branch'),
-      ),
-    ).thenAnswer((Invocation invocation) {
-      return Future<List<firestore_commit.Commit>>.value(
-        <firestore_commit.Commit>[firestoreCommit!],
-      );
-    });
-    // when(
-    //   mockFirestoreService.getDocument(
-    //     'projects/flutter-dashboard/databases/cocoon/documents/tasks/87f88734747805589f2131753620d61b22922822_Linux A_1',
-    //   ),
-    // ).thenAnswer((Invocation invocation) {
-    //   return Future<Document>.value(
-    //     firestoreCommit,
-    //   );
-    // });
-    when(
-      mockFirestoreService.batchWriteDocuments(
-        captureAny,
-        captureAny,
-      ),
-    ).thenAnswer((Invocation invocation) {
-      return Future<BatchWriteResponse>.value(BatchWriteResponse());
-    });
-    final FakeLuciBuildServiceV2 luciBuildService = FakeLuciBuildServiceV2(
-      config: config,
-      githubChecksUtil: mockGithubChecksUtil,
-    );
-    scheduler = FakeSchedulerV2(
-      ciYaml: exampleConfig,
-      config: config,
-      luciBuildService: luciBuildService,
-    );
-    handler = PostsubmitLuciSubscriptionV2(
-      cache: CacheService(inMemory: true),
-      config: config,
-      authProvider: FakeAuthenticationProvider(),
-      githubChecksService: mockGithubChecksService,
-      datastoreProvider: (_) => DatastoreService(config.db, 5),
-      scheduler: scheduler,
-    );
-    request = FakeHttpRequest();
-
-    tester = SubscriptionV2Tester(
-      request: request,
-    );
-  });
-
-  test('throws exception when task document name is not in message', () async {
-    const Map<String, dynamic> userDataMap = {
-      'commit_key': 'flutter/main/abc123',
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: '',
-      userData: userDataMap,
-    );
-
-    expect(() => tester.post(handler), throwsA(isA<BadRequestException>()));
-  });
-
-  test('updates task based on message', () async {
-    firestoreTask = generateFirestoreTask(1, attempts: 2, name: 'Linux A');
-    when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 2);
-    final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Task task = generateTask(
-      4507531199512576,
-      name: 'Linux A',
-      parent: commit,
-    );
-    final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
-    final Map<String, dynamic> userDataMap = {
-      'task_key': '${task.key.id}',
-      'commit_key': '${task.key.parent?.id}',
-      'firestore_commit_document_name': commit.sha,
-      'firestore_task_document_name': taskDocumentName,
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      userData: userDataMap,
-    );
-
-    config.db.values[commit.key] = commit;
-    config.db.values[task.key] = task;
-
-    expect(task.status, Task.statusNew);
-    expect(task.endTimestamp, 0);
-
-    // Firestore checks before API call.
-    expect(firestoreTask!.status, Task.statusNew);
-    expect(firestoreTask!.buildNumber, null);
-
-    await tester.post(handler);
-
-    expect(task.status, Task.statusSucceeded);
-    expect(task.endTimestamp, 1697672824674);
-
-    // Firestore checks after API call.
-    final List<dynamic> captured = verify(mockFirestoreService.batchWriteDocuments(captureAny, captureAny)).captured;
-    expect(captured.length, 2);
-    final BatchWriteRequest batchWriteRequest = captured[0] as BatchWriteRequest;
-    expect(batchWriteRequest.writes!.length, 1);
-    final Document updatedDocument = batchWriteRequest.writes![0].update!;
-    expect(updatedDocument.name, firestoreTask!.name);
-    expect(firestoreTask!.status, Task.statusSucceeded);
-    expect(firestoreTask!.buildNumber, 259942);
-  });
-
-  test('skips task processing when build is with scheduled status', () async {
-    firestoreTask = generateFirestoreTask(1, name: 'Linux A', status: firestore.Task.statusInProgress);
-    final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Task task = generateTask(
-      4507531199512576,
-      name: 'Linux A',
-      parent: commit,
-      status: Task.statusInProgress,
-    );
-    config.db.values[task.key] = task;
-    config.db.values[commit.key] = commit;
-    final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
-    final Map<String, dynamic> userDataMap = {
-      'task_key': '${task.key.id}',
-      'commit_key': '${task.key.parent?.id}',
-      'firestore_commit_document_name': commit.sha,
-      'firestore_task_document_name': taskDocumentName,
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SCHEDULED,
-      builder: 'Linux A',
-      userData: userDataMap,
-    );
-
-    expect(firestoreTask!.status, firestore.Task.statusInProgress);
-    expect(firestoreTask!.attempts, 1);
-    expect(await tester.post(handler), Body.empty);
-    expect(firestoreTask!.status, firestore.Task.statusInProgress);
-  });
-
-  test('skips task processing when task has already finished', () async {
-    firestoreTask = generateFirestoreTask(1, name: 'Linux A', status: firestore.Task.statusSucceeded);
-    final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Task task = generateTask(
-      4507531199512576,
-      name: 'Linux A',
-      parent: commit,
-      status: Task.statusSucceeded,
-    );
-    config.db.values[task.key] = task;
-    config.db.values[commit.key] = commit;
-    final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
-    final Map<String, dynamic> userDataMap = {
-      'task_key': '${task.key.id}',
-      'commit_key': '${task.key.parent?.id}',
-      'firestore_commit_document_name': commit.sha,
-      'firestore_task_document_name': taskDocumentName,
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.STARTED,
-      builder: 'Linux A',
-      userData: userDataMap,
-    );
-
-    expect(task.status, Task.statusSucceeded);
-    expect(task.attempts, 1);
-    expect(await tester.post(handler), Body.empty);
-    expect(task.status, Task.statusSucceeded);
-  });
-
-  test('skips task processing when target has been deleted', () async {
-    firestoreTask = generateFirestoreTask(1, name: 'Linux B', status: firestore.Task.statusSucceeded);
-    final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Task task = generateTask(
-      4507531199512576,
-      name: 'Linux B',
-      parent: commit,
-      status: Task.statusSucceeded,
-    );
-    config.db.values[task.key] = task;
-    config.db.values[commit.key] = commit;
-    final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
-    final Map<String, dynamic> userDataMap = {
-      'task_key': '${task.key.id}',
-      'commit_key': '${task.key.parent?.id}',
-      'firestore_commit_document_name': commit.sha,
-      'firestore_task_document_name': taskDocumentName,
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.STARTED,
-      builder: 'Linux B',
-      userData: userDataMap,
-    );
-
-    expect(task.status, Task.statusSucceeded);
-    expect(task.attempts, 1);
-    expect(await tester.post(handler), Body.empty);
-  });
-
-  test('does not fail on empty user data', () async {
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux A',
-    );
-    expect(await tester.post(handler), Body.empty);
-  });
-
-  test('on failed builds auto-rerun the build', () async {
-    firestoreTask = generateFirestoreTask(
-      1,
-      name: 'Linux A',
-      status: firestore.Task.statusFailed,
-      commitSha: '87f88734747805589f2131753620d61b22922822',
-    );
-    firestoreCommit = generateFirestoreCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Task task = generateTask(
-      4507531199512576,
-      name: 'Linux A',
-      parent: commit,
-      status: Task.statusFailed,
-    );
-    config.db.values[task.key] = task;
-    config.db.values[commit.key] = commit;
-    final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
-    final Map<String, dynamic> userDataMap = {
-      'task_key': '${task.key.id}',
-      'commit_key': '${task.key.parent?.id}',
-      'firestore_commit_document_name': commit.sha,
-      'firestore_task_document_name': taskDocumentName,
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.FAILURE,
-      builder: 'Linux A',
-      userData: userDataMap,
-    );
-
-    expect(firestoreTask!.status, firestore.Task.statusFailed);
-    expect(firestoreTask!.attempts, 1);
-    expect(await tester.post(handler), Body.empty);
-    final List<dynamic> captured = verify(mockFirestoreService.batchWriteDocuments(captureAny, captureAny)).captured;
-    expect(captured.length, 2);
-    final BatchWriteRequest batchWriteRequest = captured[0] as BatchWriteRequest;
-    expect(batchWriteRequest.writes!.length, 1);
-    final Document insertedTaskDocument = batchWriteRequest.writes![0].update!;
-    final firestore.Task resultTask = firestore.Task.fromDocument(taskDocument: insertedTaskDocument);
-    expect(resultTask.status, firestore.Task.statusInProgress);
-    expect(resultTask.attempts, 2);
-  });
-
-  test('on canceled builds auto-rerun the build if they timed out', () async {
-    firestoreTask = generateFirestoreTask(
-      1,
-      name: 'Linux A',
-      status: firestore.Task.statusInfraFailure,
-      commitSha: '87f88734747805589f2131753620d61b22922822',
-    );
-    firestoreCommit = generateFirestoreCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Task task = generateTask(
-      4507531199512576,
-      name: 'Linux A',
-      parent: commit,
-      status: Task.statusInfraFailure,
-    );
-    config.db.values[task.key] = task;
-    config.db.values[commit.key] = commit;
-    final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
-    final Map<String, dynamic> userDataMap = {
-      'task_key': '${task.key.id}',
-      'commit_key': '${task.key.parent?.id}',
-      'firestore_commit_document_name': commit.sha,
-      'firestore_task_document_name': taskDocumentName,
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.CANCELED,
-      builder: 'Linux A',
-      userData: userDataMap,
-    );
-
-    expect(firestoreTask!.status, firestore.Task.statusInfraFailure);
-    expect(firestoreTask!.attempts, 1);
-    expect(await tester.post(handler), Body.empty);
-    final List<dynamic> captured = verify(mockFirestoreService.batchWriteDocuments(captureAny, captureAny)).captured;
-    expect(captured.length, 2);
-    final BatchWriteRequest batchWriteRequest = captured[0] as BatchWriteRequest;
-    expect(batchWriteRequest.writes!.length, 1);
-    final Document insertedTaskDocument = batchWriteRequest.writes![0].update!;
-    final firestore.Task resultTask = firestore.Task.fromDocument(taskDocument: insertedTaskDocument);
-    expect(resultTask.status, firestore.Task.statusInProgress);
-    expect(resultTask.attempts, 2);
-  });
-
-  test('on builds resulting in an infra failure auto-rerun the build if they timed out', () async {
-    firestoreTask = generateFirestoreTask(
-      1,
-      name: 'Linux A',
-      status: firestore.Task.statusInfraFailure,
-      commitSha: '87f88734747805589f2131753620d61b22922822',
-    );
-    firestoreCommit = generateFirestoreCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Task task = generateTask(
-      4507531199512576,
-      name: 'Linux A',
-      parent: commit,
-      status: Task.statusInfraFailure,
-    );
-    config.db.values[task.key] = task;
-    config.db.values[commit.key] = commit;
-    final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
-    final Map<String, dynamic> userDataMap = {
-      'task_key': '${task.key.id}',
-      'commit_key': '${task.key.parent?.id}',
-      'firestore_commit_document_name': commit.sha,
-      'firestore_task_document_name': taskDocumentName,
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.INFRA_FAILURE,
-      builder: 'Linux A',
-      userData: userDataMap,
-    );
-
-    expect(task.status, Task.statusInfraFailure);
-    expect(task.attempts, 1);
-    expect(await tester.post(handler), Body.empty);
-    final List<dynamic> captured = verify(mockFirestoreService.batchWriteDocuments(captureAny, captureAny)).captured;
-    expect(captured.length, 2);
-    final BatchWriteRequest batchWriteRequest = captured[0] as BatchWriteRequest;
-    expect(batchWriteRequest.writes!.length, 1);
-    final Document insertedTaskDocument = batchWriteRequest.writes![0].update!;
-    final firestore.Task resultTask = firestore.Task.fromDocument(taskDocument: insertedTaskDocument);
-    expect(resultTask.status, firestore.Task.statusInProgress);
-    expect(resultTask.attempts, 2);
-  });
-
-  test('non-bringup target updates check run', () async {
-    firestoreTask = generateFirestoreTask(1, name: 'Linux nonbringup');
-    scheduler.ciYaml = nonBringupPackagesConfig;
-    when(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    ).thenAnswer((_) async => true);
-    when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 2);
-    final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822', repo: 'packages');
-    final Task task = generateTask(
-      4507531199512576,
-      name: 'Linux nonbringup',
-      parent: commit,
-    );
-    config.db.values[commit.key] = commit;
-    config.db.values[task.key] = task;
-    final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
-    final Map<String, dynamic> userDataMap = {
-      'task_key': '${task.key.id}',
-      'commit_key': '${task.key.parent?.id}',
-      'firestore_commit_document_name': commit.sha,
-      'firestore_task_document_name': taskDocumentName,
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux A',
-      userData: userDataMap,
-    );
-
-    await tester.post(handler);
-    verify(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    ).called(1);
-  });
-
-  test('bringup target does not update check run', () async {
-    firestoreTask = generateFirestoreTask(1, name: 'Linux bringup');
-    scheduler.ciYaml = bringupPackagesConfig;
-    when(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    ).thenAnswer((_) async => true);
-    when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 2);
-    final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Task task = generateTask(
-      4507531199512576,
-      name: 'Linux bringup',
-      parent: commit,
-    );
-    config.db.values[commit.key] = commit;
-    config.db.values[task.key] = task;
-    final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
-    final Map<String, dynamic> userDataMap = {
-      'task_key': '${task.key.id}',
-      'commit_key': '${task.key.parent?.id}',
-      'firestore_commit_document_name': commit.sha,
-      'firestore_task_document_name': taskDocumentName,
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux bringup',
-      userData: userDataMap,
-    );
-
-    await tester.post(handler);
-    verifyNever(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    );
-  });
-
-  test('unsupported repo target does not update check run', () async {
-    scheduler.ciYaml = unsupportedPostsubmitCheckrunConfig;
-    when(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    ).thenAnswer((_) async => true);
-    when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 2);
-    firestoreTask = generateFirestoreTask(1, attempts: 2, name: 'Linux flutter');
-
-    final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
-    final Task task = generateTask(
-      4507531199512576,
-      name: 'Linux flutter',
-      parent: commit,
-    );
-    config.db.values[commit.key] = commit;
-    config.db.values[task.key] = task;
-    final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
-    final Map<String, dynamic> userDataMap = {
-      'task_key': '${task.key.id}',
-      'commit_key': '${task.key.parent?.id}',
-      'firestore_commit_document_name': commit.sha,
-      'firestore_task_document_name': taskDocumentName,
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux bringup',
-      userData: userDataMap,
-    );
-
-    await tester.post(handler);
-    verifyNever(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    );
-  });
-}
diff --git a/app_dart/test/request_handlers/presubmit_luci_subscription_test.dart b/app_dart/test/request_handlers/presubmit_luci_subscription_test.dart
index 013d88b..87e7cb7 100644
--- a/app_dart/test/request_handlers/presubmit_luci_subscription_test.dart
+++ b/app_dart/test/request_handlers/presubmit_luci_subscription_test.dart
@@ -12,6 +12,7 @@
 import '../src/request_handling/fake_authentication.dart';
 import '../src/request_handling/fake_http.dart';
 import '../src/request_handling/subscription_tester.dart';
+import '../src/service/fake_buildbucket.dart';
 import '../src/service/fake_luci_build_service.dart';
 import '../src/service/fake_scheduler.dart';
 import '../src/utilities/mocks.dart';
@@ -21,6 +22,7 @@
 
 void main() {
   late PresubmitLuciSubscription handler;
+  late FakeBuildBucketClient buildbucket;
   late FakeConfig config;
   late MockGitHub mockGitHubClient;
   late FakeHttpRequest request;
@@ -32,6 +34,7 @@
 
   setUp(() async {
     config = FakeConfig();
+    buildbucket = FakeBuildBucketClient();
     mockLuciBuildService = MockLuciBuildService();
 
     mockGithubChecksService = MockGithubChecksService();
@@ -43,6 +46,7 @@
     handler = PresubmitLuciSubscription(
       cache: CacheService(inMemory: true),
       config: config,
+      buildBucketClient: buildbucket,
       luciBuildService: FakeLuciBuildService(config: config),
       githubChecksService: mockGithubChecksService,
       authProvider: FakeAuthenticationProvider(),
diff --git a/app_dart/test/request_handlers/presubmit_luci_subscription_v2_test.dart b/app_dart/test/request_handlers/presubmit_luci_subscription_v2_test.dart
deleted file mode 100644
index 4c21446..0000000
--- a/app_dart/test/request_handlers/presubmit_luci_subscription_v2_test.dart
+++ /dev/null
@@ -1,303 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/request_handlers/presubmit_luci_subscription_v2.dart';
-import 'package:fixnum/fixnum.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/request_handling/fake_authentication.dart';
-import '../src/request_handling/fake_http.dart';
-import '../src/request_handling/subscription_v2_tester.dart';
-import '../src/service/fake_luci_build_service_v2.dart';
-import '../src/service/fake_scheduler_v2.dart';
-import '../src/utilities/build_bucket_v2_messages.dart';
-import '../src/utilities/mocks.dart';
-
-const String ref = 'deadbeef';
-
-void main() {
-  late PresubmitLuciSubscriptionV2 handler;
-  late FakeConfig config;
-  late MockGitHub mockGitHubClient;
-  late FakeHttpRequest request;
-  late SubscriptionV2Tester tester;
-  late MockRepositoriesService mockRepositoriesService;
-  late MockGithubChecksServiceV2 mockGithubChecksService;
-  late MockLuciBuildServiceV2 mockLuciBuildService;
-  late FakeSchedulerV2 scheduler;
-
-  setUp(() async {
-    config = FakeConfig();
-    mockLuciBuildService = MockLuciBuildServiceV2();
-
-    mockGithubChecksService = MockGithubChecksServiceV2();
-    scheduler = FakeSchedulerV2(
-      ciYaml: examplePresubmitRescheduleConfig,
-      config: config,
-      luciBuildService: mockLuciBuildService,
-    );
-
-    handler = PresubmitLuciSubscriptionV2(
-      cache: CacheService(inMemory: true),
-      config: config,
-      luciBuildService: FakeLuciBuildServiceV2(config: config),
-      githubChecksService: mockGithubChecksService,
-      authProvider: FakeAuthenticationProvider(),
-      scheduler: scheduler,
-    );
-    request = FakeHttpRequest();
-
-    tester = SubscriptionV2Tester(
-      request: request,
-    );
-
-    mockGitHubClient = MockGitHub();
-    mockRepositoriesService = MockRepositoriesService();
-    when(mockGitHubClient.repositories).thenReturn(mockRepositoriesService);
-    config.githubClient = mockGitHubClient;
-  });
-
-  test('Requests without repo_owner and repo_name do not update checks', () async {
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux Host Engine',
-      addBuildSet: false,
-    );
-
-    await tester.post(handler);
-
-    verifyNever(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    );
-  });
-
-  test('Requests with repo_owner and repo_name update checks', () async {
-    when(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    ).thenAnswer((_) async => true);
-
-    when(mockGithubChecksService.taskFailed(any)).thenAnswer((_) => false);
-
-    const Map<String, dynamic> userDataMap = {
-      'repo_owner': 'flutter',
-      'repo_name': 'cocoon',
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux Host Engine',
-      userData: userDataMap,
-    );
-
-    await tester.post(handler);
-    verify(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    ).called(1);
-  });
-
-  test('Requests when task failed but no need to reschedule', () async {
-    when(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    ).thenAnswer((_) async => true);
-    when(mockGithubChecksService.taskFailed(any)).thenAnswer((_) => true);
-    when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 1);
-
-    const Map<String, dynamic> userDataMap = {
-      'repo_owner': 'flutter',
-      'commit_branch': 'main',
-      'commit_sha': 'abc',
-      'repo_name': 'flutter',
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux A',
-      userData: userDataMap,
-    );
-
-    final bbv2.BuildsV2PubSub buildsV2PubSub = createBuild(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux A',
-    );
-
-    when(
-      mockLuciBuildService.rescheduleBuild(
-        build: buildsV2PubSub.build,
-        builderName: 'Linux Coverage',
-        rescheduleAttempt: 0,
-        userDataMap: userDataMap,
-      ),
-    ).thenAnswer(
-      (_) async => bbv2.Build(
-        id: Int64(8905920700440101120),
-        builder: bbv2.BuilderID(bucket: 'luci.flutter.prod', project: 'flutter', builder: 'Linux Coverage'),
-      ),
-    );
-
-    await tester.post(handler);
-    verifyNever(
-      mockLuciBuildService.rescheduleBuild(
-        build: buildsV2PubSub.build,
-        builderName: 'Linux Coverage',
-        rescheduleAttempt: 0,
-        userDataMap: userDataMap,
-      ),
-    );
-    verify(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-      ),
-    ).called(1);
-  });
-
-  test('Requests when task failed but need to reschedule', () async {
-    when(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-        rescheduled: true,
-      ),
-    ).thenAnswer((_) async => true);
-    when(mockGithubChecksService.taskFailed(any)).thenAnswer((_) => true);
-    when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 0);
-
-    const Map<String, dynamic> userDataMap = {
-      'repo_owner': 'flutter',
-      'commit_branch': 'main',
-      'commit_sha': 'abc',
-      'repo_name': 'flutter',
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux B',
-      userData: userDataMap,
-    );
-
-    final bbv2.BuildsV2PubSub buildsV2PubSub = createBuild(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux A',
-    );
-
-    when(
-      mockLuciBuildService.rescheduleBuild(
-        build: buildsV2PubSub.build,
-        builderName: 'Linux Coverage',
-        rescheduleAttempt: 1,
-        userDataMap: userDataMap,
-      ),
-    ).thenAnswer(
-      (_) async => bbv2.Build(
-        id: Int64(8905920700440101120),
-        builder: bbv2.BuilderID(bucket: 'luci.flutter.prod', project: 'flutter', builder: 'Linux B'),
-      ),
-    );
-    await tester.post(handler);
-    verifyNever(
-      mockLuciBuildService.rescheduleBuild(
-        build: buildsV2PubSub.build,
-        builderName: 'Linux Coverage',
-        rescheduleAttempt: 1,
-        userDataMap: userDataMap,
-      ),
-    );
-    verify(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-        rescheduled: true,
-      ),
-    ).called(1);
-  });
-
-  test('Build not rescheduled if not found in ciYaml list.', () async {
-    when(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-        rescheduled: false,
-      ),
-    ).thenAnswer((_) async => true);
-    when(mockGithubChecksService.taskFailed(any)).thenAnswer((_) => true);
-    when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 1);
-
-    const Map<String, dynamic> userDataMap = {
-      'repo_owner': 'flutter',
-      'commit_branch': 'main',
-      'commit_sha': 'abc',
-      'repo_name': 'flutter',
-    };
-
-    tester.message = createPushMessageV2(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux C',
-      userData: userDataMap,
-    );
-
-    final bbv2.BuildsV2PubSub buildsV2PubSub = createBuild(
-      Int64(1),
-      status: bbv2.Status.SUCCESS,
-      builder: 'Linux C',
-    );
-
-    await tester.post(handler);
-    verifyNever(
-      mockLuciBuildService.rescheduleBuild(
-        build: buildsV2PubSub.build,
-        builderName: 'Linux C',
-        userDataMap: userDataMap,
-        rescheduleAttempt: 1,
-      ),
-    );
-    verify(
-      mockGithubChecksService.updateCheckStatus(
-        build: anyNamed('build'),
-        userDataMap: anyNamed('userDataMap'),
-        luciBuildService: anyNamed('luciBuildService'),
-        slug: anyNamed('slug'),
-        rescheduled: false,
-      ),
-    ).called(1);
-  });
-}
diff --git a/app_dart/test/request_handlers/reset_prod_task_v2_test.dart b/app_dart/test/request_handlers/reset_prod_task_v2_test.dart
deleted file mode 100644
index 9d34494..0000000
--- a/app_dart/test/request_handlers/reset_prod_task_v2_test.dart
+++ /dev/null
@@ -1,230 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/request_handlers/reset_prod_task_v2.dart';
-import 'package:cocoon_service/src/request_handling/exceptions.dart';
-import 'package:googleapis/firestore/v1.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/datastore/fake_datastore.dart';
-import '../src/request_handling/api_request_handler_tester.dart';
-import '../src/request_handling/fake_authentication.dart';
-import '../src/service/fake_scheduler_v2.dart';
-import '../src/utilities/entity_generators.dart';
-import '../src/utilities/mocks.dart';
-
-void main() {
-  group('ResetProdTask', () {
-    FakeClientContext clientContext;
-    late ResetProdTaskV2 handler;
-    late FakeConfig config;
-    FakeKeyHelper keyHelper;
-    late MockLuciBuildServiceV2 mockLuciBuildService;
-    late MockFirestoreService mockFirestoreService;
-    late ApiRequestHandlerTester tester;
-    late Commit commit;
-    late Task task;
-    final firestore.Task firestoreTask = generateFirestoreTask(1, attempts: 1);
-
-    setUp(() {
-      final FakeDatastoreDB datastoreDB = FakeDatastoreDB();
-      clientContext = FakeClientContext();
-      mockFirestoreService = MockFirestoreService();
-      clientContext.isDevelopmentEnvironment = false;
-      keyHelper = FakeKeyHelper(applicationContext: clientContext.applicationContext);
-      config = FakeConfig(
-        dbValue: datastoreDB,
-        keyHelperValue: keyHelper,
-        supportedBranchesValue: <String>[
-          Config.defaultBranch(Config.flutterSlug),
-        ],
-        firestoreService: mockFirestoreService,
-      );
-      final FakeAuthenticatedContext authContext = FakeAuthenticatedContext(clientContext: clientContext);
-      tester = ApiRequestHandlerTester(context: authContext);
-      mockLuciBuildService = MockLuciBuildServiceV2();
-      handler = ResetProdTaskV2(
-        config: config,
-        authenticationProvider: FakeAuthenticationProvider(clientContext: clientContext),
-        luciBuildService: mockLuciBuildService,
-        scheduler: FakeSchedulerV2(
-          config: config,
-          ciYaml: exampleConfig,
-        ),
-      );
-      commit = generateCommit(1);
-      task = generateTask(
-        1,
-        name: 'Linux A',
-        parent: commit,
-        status: Task.statusFailed,
-      );
-      tester.requestData = <String, dynamic>{
-        'Key': config.keyHelper.encode(task.key),
-      };
-
-      when(
-        mockFirestoreService.getDocument(
-          captureAny,
-        ),
-      ).thenAnswer((Invocation invocation) {
-        return Future<Document>.value(
-          firestoreTask,
-        );
-      });
-
-      when(
-        mockLuciBuildService.checkRerunBuilder(
-          commit: anyNamed('commit'),
-          datastore: anyNamed('datastore'),
-          task: anyNamed('task'),
-          target: anyNamed('target'),
-          tags: anyNamed('tags'),
-          ignoreChecks: anyNamed('ignoreChecks'),
-          firestoreService: mockFirestoreService,
-          taskDocument: anyNamed('taskDocument'),
-        ),
-      ).thenAnswer((_) async => true);
-    });
-    test('Schedule new task', () async {
-      config.db.values[task.key] = task;
-      config.db.values[commit.key] = commit;
-      expect(await tester.post(handler), Body.empty);
-
-      final List<dynamic> captured = verify(mockFirestoreService.getDocument(captureAny)).captured;
-      expect(captured.length, 1);
-      final String documentName = captured[0] as String;
-      expect(
-        documentName,
-        '$kDatabase/documents/${firestore.kTaskCollectionId}/${commit.sha}_${task.name}_${task.attempts}',
-      );
-    });
-
-    test('schedule new task when task document is aviable', () async {
-      config.db.values[task.key] = task;
-      config.db.values[commit.key] = commit;
-      tester.requestData = <String, dynamic>{
-        'taskDocumentName':
-            '$kDatabase/documents/${firestore.kTaskCollectionId}/${commit.sha}_${task.name}_${task.attempts}}',
-        'Commit': commit.sha,
-        'Task': task.name,
-        'Repo': commit.slug.name,
-      };
-      expect(await tester.post(handler), Body.empty);
-    });
-
-    test('Re-schedule passing all the parameters', () async {
-      config.db.values[task.key] = task;
-      config.db.values[commit.key] = commit;
-      tester.requestData = <String, dynamic>{
-        'Commit': commit.sha,
-        'Task': task.name,
-        'Repo': commit.slug.name,
-      };
-      expect(await tester.post(handler), Body.empty);
-      verify(
-        mockLuciBuildService.checkRerunBuilder(
-          commit: anyNamed('commit'),
-          datastore: anyNamed('datastore'),
-          task: anyNamed('task'),
-          target: anyNamed('target'),
-          tags: anyNamed('tags'),
-          ignoreChecks: true,
-          firestoreService: mockFirestoreService,
-          taskDocument: anyNamed('taskDocument'),
-        ),
-      ).called(1);
-    });
-
-    test('Rerun all failed tasks when task name is all', () async {
-      final Task taskA = generateTask(2, name: 'Linux A', parent: commit, status: Task.statusFailed);
-      final Task taskB = generateTask(3, name: 'Mac A', parent: commit, status: Task.statusFailed);
-      config.db.values[taskA.key] = taskA;
-      config.db.values[taskB.key] = taskB;
-      config.db.values[commit.key] = commit;
-      tester.requestData = <String, dynamic>{
-        'Commit': commit.sha,
-        'Task': 'all',
-        'Repo': commit.slug.name,
-      };
-      expect(await tester.post(handler), Body.empty);
-      verify(
-        mockLuciBuildService.checkRerunBuilder(
-          commit: anyNamed('commit'),
-          datastore: anyNamed('datastore'),
-          task: anyNamed('task'),
-          target: anyNamed('target'),
-          tags: anyNamed('tags'),
-          ignoreChecks: false,
-          firestoreService: mockFirestoreService,
-          taskDocument: anyNamed('taskDocument'),
-        ),
-      ).called(2);
-    });
-
-    test('Rerun all runs nothing when everything is passed', () async {
-      final Task task = generateTask(2, name: 'Windows A', parent: commit, status: Task.statusSucceeded);
-      config.db.values[task.key] = task;
-      config.db.values[commit.key] = commit;
-      tester.requestData = <String, dynamic>{
-        'Commit': commit.sha,
-        'Task': 'all',
-        'Repo': commit.slug.name,
-      };
-      expect(await tester.post(handler), Body.empty);
-      verifyNever(
-        mockLuciBuildService.checkRerunBuilder(
-          commit: anyNamed('commit'),
-          datastore: anyNamed('datastore'),
-          task: anyNamed('task'),
-          target: anyNamed('target'),
-          tags: anyNamed('tags'),
-          firestoreService: anyNamed('firestoreService'),
-          taskDocument: anyNamed('taskDocument'),
-          ignoreChecks: false,
-        ),
-      );
-    });
-
-    test('Re-schedule without any parameters raises exception', () async {
-      tester.requestData = <String, dynamic>{};
-      expect(() => tester.post(handler), throwsA(isA<BadRequestException>()));
-    });
-
-    test('Re-schedule existing task even though taskName is missing in the task', () async {
-      config.db.values[task.key] = task;
-      config.db.values[commit.key] = commit;
-      expect(await tester.post(handler), Body.empty);
-    });
-
-    test('Fails if task is not rerun', () async {
-      when(
-        mockLuciBuildService.checkRerunBuilder(
-          commit: anyNamed('commit'),
-          datastore: anyNamed('datastore'),
-          task: anyNamed('task'),
-          target: anyNamed('target'),
-          tags: anyNamed('tags'),
-          ignoreChecks: true,
-          firestoreService: mockFirestoreService,
-          taskDocument: anyNamed('taskDocument'),
-        ),
-      ).thenAnswer((_) async => false);
-      config.db.values[task.key] = task;
-      config.db.values[commit.key] = commit;
-      expect(() => tester.post(handler), throwsA(isA<InternalServerError>()));
-    });
-
-    test('Fails if commit does not exist', () async {
-      config.db.values[task.key] = task;
-      expect(() => tester.post(handler), throwsA(isA<StateError>()));
-    });
-  });
-}
diff --git a/app_dart/test/request_handlers/reset_try_task_v2_test.dart b/app_dart/test/request_handlers/reset_try_task_v2_test.dart
deleted file mode 100644
index f383f9d..0000000
--- a/app_dart/test/request_handlers/reset_try_task_v2_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/src/request_handlers/reset_try_task_v2.dart';
-import 'package:cocoon_service/src/request_handling/body.dart';
-import 'package:cocoon_service/src/request_handling/exceptions.dart';
-import 'package:github/github.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/request_handling/api_request_handler_tester.dart';
-import '../src/request_handling/fake_authentication.dart';
-import '../src/request_handling/fake_http.dart';
-import '../src/service/fake_github_service.dart';
-import '../src/service/fake_scheduler_v2.dart';
-import '../src/utilities/entity_generators.dart';
-import '../src/utilities/mocks.dart';
-
-void main() {
-  group('ResetTryTask', () {
-    late ApiRequestHandlerTester tester;
-    FakeClientContext clientContext;
-    late ResetTryTaskV2 handler;
-    late FakeConfig config;
-    FakeSchedulerV2 fakeScheduler;
-    FakeAuthenticatedContext authContext;
-    MockGitHub mockGithub;
-    MockPullRequestsService mockPullRequestsService;
-    late MockGithubChecksUtil mockGithubChecksUtil;
-
-    setUp(() {
-      clientContext = FakeClientContext();
-      clientContext.isDevelopmentEnvironment = false;
-      authContext = FakeAuthenticatedContext(clientContext: clientContext);
-      mockGithub = MockGitHub();
-      mockPullRequestsService = MockPullRequestsService();
-      config = FakeConfig(githubClient: mockGithub, githubService: FakeGithubService());
-      mockGithubChecksUtil = MockGithubChecksUtil();
-      tester = ApiRequestHandlerTester(context: authContext);
-      fakeScheduler = FakeSchedulerV2(
-        config: config,
-        githubChecksUtil: mockGithubChecksUtil,
-      );
-      handler = ResetTryTaskV2(
-        config: config,
-        authenticationProvider: FakeAuthenticationProvider(clientContext: clientContext),
-        scheduler: fakeScheduler,
-      );
-      when(mockGithub.pullRequests).thenReturn(mockPullRequestsService);
-      when(mockPullRequestsService.get(any, 123)).thenAnswer((_) async => generatePullRequest(id: 123));
-    });
-
-    test('Empty repo', () async {
-      tester.request = FakeHttpRequest(
-        queryParametersValue: <String, String>{
-          'pr': '123',
-        },
-      );
-      expect(() => tester.get(handler), throwsA(isA<BadRequestException>()));
-    });
-
-    test('Empty pr', () async {
-      tester.request = FakeHttpRequest(
-        queryParametersValue: <String, String>{
-          'repo': 'flutter',
-        },
-      );
-      expect(() => tester.get(handler), throwsA(isA<BadRequestException>()));
-    });
-
-    test('Trigger builds if all parameters are correct', () async {
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output'))).thenAnswer((_) async {
-        return CheckRun.fromJson(const <String, dynamic>{
-          'id': 1,
-          'started_at': '2020-05-10T02:49:31Z',
-          'check_suite': <String, dynamic>{'id': 2},
-        });
-      });
-      tester.request = FakeHttpRequest(
-        queryParametersValue: <String, String>{
-          ResetTryTaskV2.kRepoParam: 'flutter',
-          ResetTryTaskV2.kPullRequestNumberParam: '123',
-        },
-      );
-      expect(await tester.get(handler), Body.empty);
-    });
-
-    test('Parses empty builder correctly', () {
-      final List<String> builders = handler.getBuilderList('');
-      expect(builders.isEmpty, true);
-    });
-
-    test('Parses non-empty builder correctly', () {
-      expect(handler.getBuilderList('a, b, c'), <String>['a', 'b', 'c']);
-    });
-  });
-}
diff --git a/app_dart/test/request_handlers/scheduler/batch_backfiller_v2_test.dart b/app_dart/test/request_handlers/scheduler/batch_backfiller_v2_test.dart
deleted file mode 100644
index f7d75f9..0000000
--- a/app_dart/test/request_handlers/scheduler/batch_backfiller_v2_test.dart
+++ /dev/null
@@ -1,327 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/model/ci_yaml/target.dart';
-import 'package:cocoon_service/src/request_handlers/scheduler/batch_backfiller_v2.dart';
-import 'package:googleapis/firestore/v1.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../../src/datastore/fake_config.dart';
-import '../../src/datastore/fake_datastore.dart';
-import '../../src/request_handling/fake_pubsub.dart';
-import '../../src/request_handling/request_handler_tester.dart';
-import '../../src/service/fake_luci_build_service_v2.dart';
-import '../../src/service/fake_scheduler_v2.dart';
-import '../../src/utilities/entity_generators.dart';
-import '../../src/utilities/mocks.dart';
-
-final List<Commit> commits = <Commit>[
-  generateCommit(3),
-  generateCommit(2),
-  generateCommit(1),
-];
-
-void main() {
-  late BatchBackfillerV2 handler;
-  late RequestHandlerTester tester;
-  late FakeDatastoreDB db;
-  late FakePubSub pubsub;
-  late FakeSchedulerV2 scheduler;
-  late MockGithubChecksUtil mockGithubChecksUtil;
-  late Config config;
-  late MockFirestoreService mockFirestoreService;
-
-  group('BatchBackfiller', () {
-    setUp(() async {
-      mockFirestoreService = MockFirestoreService();
-
-      db = FakeDatastoreDB()..addOnQuery<Commit>((Iterable<Commit> results) => commits);
-
-      config = FakeConfig(
-        dbValue: db,
-        backfillerTargetLimitValue: 2,
-        firestoreService: mockFirestoreService,
-      );
-
-      pubsub = FakePubSub();
-
-      mockGithubChecksUtil = MockGithubChecksUtil();
-
-      when(
-        mockGithubChecksUtil.createCheckRun(
-          any,
-          any,
-          any,
-          any,
-          output: anyNamed('output'),
-        ),
-      ).thenAnswer((_) async => generateCheckRun(1));
-
-      when(
-        mockFirestoreService.writeViaTransaction(
-          captureAny,
-        ),
-      ).thenAnswer((Invocation invocation) {
-        return Future<CommitResponse>.value(CommitResponse());
-      });
-
-      scheduler = FakeSchedulerV2(
-        config: config,
-        ciYaml: batchPolicyConfig,
-        githubChecksUtil: mockGithubChecksUtil,
-        luciBuildService: FakeLuciBuildServiceV2(
-          config: config,
-          pubsub: pubsub,
-          githubChecksUtil: mockGithubChecksUtil,
-        ),
-      );
-
-      handler = BatchBackfillerV2(
-        config: config,
-        scheduler: scheduler,
-      );
-
-      tester = RequestHandlerTester();
-    });
-
-    test('does not backfill on completed task column', () async {
-      final List<Task> allGreen = <Task>[
-        generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(3, name: 'Linux_android A', status: Task.statusSucceeded),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => allGreen);
-      await tester.get(handler);
-      expect(pubsub.messages, isEmpty);
-    });
-
-    test('does not backfill when there is a running task', () async {
-      final List<Task> middleTaskInProgress = <Task>[
-        generateTask(1, name: 'Linux_android A', status: Task.statusNew),
-        generateTask(2, name: 'Linux_android A', status: Task.statusInProgress),
-        generateTask(3, name: 'Linux_android A', status: Task.statusNew),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => middleTaskInProgress);
-      await tester.get(handler);
-      expect(pubsub.messages, isEmpty);
-    });
-
-    test('does not backfill when task does not exist in TOT', () async {
-      scheduler = FakeSchedulerV2(
-        config: config,
-        ciYaml: notInToTConfig,
-        githubChecksUtil: mockGithubChecksUtil,
-        luciBuildService: FakeLuciBuildServiceV2(
-          config: config,
-          pubsub: pubsub,
-          githubChecksUtil: mockGithubChecksUtil,
-        ),
-      );
-      handler = BatchBackfillerV2(
-        config: config,
-        scheduler: scheduler,
-      );
-      final List<Task> allGray = <Task>[
-        generateTask(1, name: 'Linux_android B', status: Task.statusNew),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => allGray);
-      await tester.get(handler);
-      expect(pubsub.messages.length, 0);
-    });
-
-    test('backfills latest task', () async {
-      final List<Task> allGray = <Task>[
-        generateTask(1, name: 'Linux_android A', status: Task.statusNew),
-        generateTask(2, name: 'Linux_android A', status: Task.statusNew),
-        generateTask(3, name: 'Linux_android A', status: Task.statusNew),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => allGray);
-      await tester.get(handler);
-      expect(pubsub.messages.length, 1);
-
-      final bbv2.BatchRequest batchRequest = bbv2.BatchRequest.create();
-      batchRequest.mergeFromProto3Json(pubsub.messages.first);
-
-      final bbv2.ScheduleBuildRequest scheduleBuildRequest = batchRequest.requests.first.scheduleBuild;
-
-      expect(scheduleBuildRequest.priority, LuciBuildService.kBackfillPriority);
-    });
-
-    test('does not backfill targets when number of available tasks is less than BatchPolicy.kBatchSize', () async {
-      final List<Task> scheduleA = <Task>[
-        generateTask(1, name: 'Linux_android A', status: Task.statusNew),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => scheduleA);
-      await tester.get(handler);
-      expect(pubsub.messages.length, 0);
-    });
-
-    test('backfills earlier failed task with higher priority', () async {
-      final List<Task> allGray = <Task>[
-        generateTask(1, name: 'Linux_android A', status: Task.statusNew),
-        generateTask(2, name: 'Linux_android A', status: Task.statusNew),
-        generateTask(3, name: 'Linux_android A', status: Task.statusFailed),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => allGray);
-      await tester.get(handler);
-      expect(pubsub.messages.length, 1);
-
-      final bbv2.BatchRequest batchRequest = bbv2.BatchRequest.create();
-      batchRequest.mergeFromProto3Json(pubsub.messages.first);
-
-      final bbv2.ScheduleBuildRequest scheduleBuildRequest = batchRequest.requests.first.scheduleBuild;
-
-      expect(scheduleBuildRequest.priority, LuciBuildService.kRerunPriority);
-    });
-
-    test('backfills task successfully with retry', () async {
-      pubsub.exceptionFlag = true;
-      pubsub.exceptionRepetition = 1;
-      final List<Task> allGray = <Task>[
-        generateTask(1, name: 'Linux_android A', status: Task.statusNew),
-        generateTask(2, name: 'Linux_android A', status: Task.statusNew),
-        generateTask(3, name: 'Linux_android A', status: Task.statusFailed),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => allGray);
-      await tester.get(handler);
-      expect(pubsub.messages.length, 1);
-
-      final bbv2.BatchRequest batchRequest = bbv2.BatchRequest.create();
-      batchRequest.mergeFromProto3Json(pubsub.messages.first);
-
-      final bbv2.ScheduleBuildRequest scheduleBuildRequest = batchRequest.requests.first.scheduleBuild;
-
-      expect(scheduleBuildRequest.priority, LuciBuildService.kRerunPriority);
-    });
-
-    test('fails to backfill tasks when retry limit is hit', () async {
-      pubsub.exceptionFlag = true;
-      pubsub.exceptionRepetition = 3;
-      final List<Task> allGray = <Task>[
-        generateTask(1, name: 'Linux_android A', status: Task.statusNew),
-        generateTask(2, name: 'Linux_android A', status: Task.statusNew),
-        generateTask(3, name: 'Linux_android A', status: Task.statusFailed),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => allGray);
-      await tester.get(handler);
-      expect(pubsub.messages.length, 0);
-    });
-
-    test('backfills older task', () async {
-      final List<Task> oldestGray = <Task>[
-        generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(3, name: 'Linux_android A', status: Task.statusNew),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => oldestGray);
-      await tester.get(handler);
-      expect(pubsub.messages.length, 1);
-    });
-
-    test('updates task as in-progress after backfilling', () async {
-      final List<Task> oldestGray = <Task>[
-        generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(3, name: 'Linux_android A', status: Task.statusNew),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => oldestGray);
-      final Task task = oldestGray[2];
-      expect(db.values.length, 0);
-      expect(task.status, Task.statusNew);
-      await tester.get(handler);
-      expect(db.values.length, 1);
-      expect(task.status, Task.statusInProgress);
-
-      final List<dynamic> captured = verify(mockFirestoreService.writeViaTransaction(captureAny)).captured;
-      expect(captured.length, 1);
-      final List<Write> commitResponse = captured[0] as List<Write>;
-      expect(commitResponse.length, 1);
-      final firestore.Task taskDocuemnt = firestore.Task.fromDocument(taskDocument: commitResponse[0].update!);
-      expect(taskDocuemnt.status, firestore.Task.statusInProgress);
-    });
-
-    test('skip scheduling builds if datastore commit fails', () async {
-      db.commitException = true;
-      final List<Task> oldestGray = <Task>[
-        generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(3, name: 'Linux_android A', status: Task.statusNew),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => oldestGray);
-      expect(db.values.length, 0);
-      await tester.get(handler);
-      expect(db.values.length, 0);
-      expect(pubsub.messages.length, 0);
-    });
-
-    test('backfills only column A when B does not need backfill', () async {
-      final List<Task> scheduleA = <Task>[
-        // Linux_android A
-        generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(3, name: 'Linux_android A', status: Task.statusNew),
-        // Linux_android B
-        generateTask(1, name: 'Linux_android B', status: Task.statusSucceeded),
-        generateTask(2, name: 'Linux_android B', status: Task.statusSucceeded),
-        generateTask(3, name: 'Linux_android B', status: Task.statusSucceeded),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => scheduleA);
-      await tester.get(handler);
-      expect(pubsub.messages.length, 1);
-    });
-
-    test('backfills both column A and B', () async {
-      final List<Task> scheduleA = <Task>[
-        // Linux_android A
-        generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
-        generateTask(3, name: 'Linux_android A', status: Task.statusNew),
-        // Linux_android B
-        generateTask(1, name: 'Linux_android B', status: Task.statusSucceeded),
-        generateTask(2, name: 'Linux_android B', status: Task.statusSucceeded),
-        generateTask(3, name: 'Linux_android B', status: Task.statusNew),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => scheduleA);
-      await tester.get(handler);
-      expect(pubsub.messages.length, 2);
-    });
-
-    test('backfills limited targets when number of available targets exceeds backfillerTargetLimit ', () async {
-      final List<Task> scheduleA = <Task>[
-        // Linux_android A
-        generateTask(1, name: 'Linux_android A', status: Task.statusNew),
-        generateTask(2, name: 'Linux_android A', status: Task.statusNew),
-        // Linux_android B
-        generateTask(1, name: 'Linux_android B', status: Task.statusNew),
-        generateTask(2, name: 'Linux_android B', status: Task.statusNew),
-        // Linux_android C
-        generateTask(1, name: 'Linux_android C', status: Task.statusNew),
-        generateTask(2, name: 'Linux_android C', status: Task.statusNew),
-      ];
-      db.addOnQuery<Task>((Iterable<Task> results) => scheduleA);
-      await tester.get(handler);
-      expect(pubsub.messages.length, 2);
-    });
-
-    group('getFilteredBackfill', () {
-      test('backfills high priorty targets first', () async {
-        final List<Tuple<Target, FullTask, int>> backfill = <Tuple<Target, FullTask, int>>[
-          Tuple(generateTarget(1), FullTask(generateTask(1), generateCommit(1)), LuciBuildService.kRerunPriority),
-          Tuple(generateTarget(2), FullTask(generateTask(2), generateCommit(2)), LuciBuildService.kBackfillPriority),
-          Tuple(generateTarget(3), FullTask(generateTask(3), generateCommit(3)), LuciBuildService.kRerunPriority),
-        ];
-        final List<Tuple<Target, FullTask, int>> filteredBackfill = handler.getFilteredBackfill(backfill);
-        expect(filteredBackfill.length, 2);
-        expect(filteredBackfill[0].third, LuciBuildService.kRerunPriority);
-        expect(filteredBackfill[1].third, LuciBuildService.kRerunPriority);
-      });
-    });
-  });
-}
diff --git a/app_dart/test/request_handlers/scheduler/scheduler_request_subscription_test.dart b/app_dart/test/request_handlers/scheduler/scheduler_request_subscription_test.dart
deleted file mode 100644
index eeadaf6..0000000
--- a/app_dart/test/request_handlers/scheduler/scheduler_request_subscription_test.dart
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/luci/pubsub_message_v2.dart';
-import 'package:cocoon_service/src/request_handlers/scheduler/scheduler_request_subscription.dart';
-import 'package:cocoon_service/src/request_handling/exceptions.dart';
-import 'package:fixnum/fixnum.dart';
-import 'package:mockito/mockito.dart';
-import 'package:retry/retry.dart';
-import 'package:test/test.dart';
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-
-import '../../src/datastore/fake_config.dart';
-import '../../src/request_handling/fake_authentication.dart';
-import '../../src/request_handling/fake_http.dart';
-import '../../src/request_handling/subscription_v2_tester.dart';
-import '../../src/utilities/mocks.dart';
-
-void main() {
-  late SchedulerRequestSubscriptionV2 handler;
-  late SubscriptionV2Tester tester;
-
-  late MockBuildBucketV2Client buildBucketV2Client;
-
-  setUp(() async {
-    buildBucketV2Client = MockBuildBucketV2Client();
-    handler = SchedulerRequestSubscriptionV2(
-      cache: CacheService(inMemory: true),
-      config: FakeConfig(),
-      authProvider: FakeAuthenticationProvider(),
-      buildBucketClient: buildBucketV2Client,
-      retryOptions: const RetryOptions(
-        maxAttempts: 3,
-        maxDelay: Duration.zero,
-      ),
-    );
-
-    tester = SubscriptionV2Tester(
-      request: FakeHttpRequest(),
-    );
-  });
-
-  test('throws exception when BatchRequest cannot be decoded', () async {
-    tester.message = const PushMessageV2();
-    expect(() => tester.post(handler), throwsA(isA<BadRequestException>()));
-  });
-
-  test('schedules request to buildbucket using v2', () async {
-    final bbv2.BuilderID responseBuilderID = bbv2.BuilderID();
-    responseBuilderID.builder = 'Linux A';
-
-    final bbv2.Build responseBuild = bbv2.Build();
-    responseBuild.id = Int64(12345);
-    responseBuild.builder = responseBuilderID;
-
-    // has a list of BatchResponse_Response
-    final bbv2.BatchResponse batchResponse = bbv2.BatchResponse();
-    final bbv2.BatchResponse_Response batchResponseResponse = bbv2.BatchResponse_Response();
-    batchResponseResponse.scheduleBuild = responseBuild;
-    batchResponse.responses.add(batchResponseResponse);
-
-    when(buildBucketV2Client.batch(any)).thenAnswer((_) async => batchResponse);
-
-    // We cannot construct the object manually with the protos as we cannot write out
-    // the json with all the required double quotes and testing fails.
-    const String messageData = '''
-{
-  "requests": [
-    {
-      "scheduleBuild": {
-        "builder": {
-          "builder": "Linux A"
-        }
-      }
-    }
-  ]
-}
-''';
-
-    const PushMessageV2 pushMessageV2 = PushMessageV2(data: messageData, messageId: '798274983');
-    tester.message = pushMessageV2;
-    final Body body = await tester.post(handler);
-    expect(body, Body.empty);
-  });
-
-  test('retries schedule build if no response comes back', () async {
-    final bbv2.BuilderID responseBuilderID = bbv2.BuilderID();
-    responseBuilderID.builder = 'Linux A';
-
-    final bbv2.Build responseBuild = bbv2.Build();
-    responseBuild.id = Int64(12345);
-    responseBuild.builder = responseBuilderID;
-
-    // has a list of BatchResponse_Response
-    final bbv2.BatchResponse batchResponse = bbv2.BatchResponse();
-
-    final bbv2.BatchResponse_Response batchResponseResponse = bbv2.BatchResponse_Response();
-    batchResponseResponse.scheduleBuild = responseBuild;
-
-    batchResponse.responses.add(batchResponseResponse);
-
-    int attempt = 0;
-
-    when(buildBucketV2Client.batch(any)).thenAnswer((_) async {
-      attempt += 1;
-      if (attempt == 2) {
-        return batchResponse;
-      }
-
-      return bbv2.BatchResponse().createEmptyInstance();
-    });
-
-    const String messageData = '''
-{
-  "requests": [
-    {
-      "scheduleBuild": {
-        "builder": {
-          "builder": "Linux A"
-        }
-      }
-    }
-  ]
-}
-''';
-
-    const PushMessageV2 pushMessageV2 = PushMessageV2(data: messageData, messageId: '798274983');
-    tester.message = pushMessageV2;
-    final Body body = await tester.post(handler);
-
-    expect(body, Body.empty);
-    expect(verify(buildBucketV2Client.batch(any)).callCount, 2);
-  });
-
-  test('acking message and logging error when no response comes back after retry limit', () async {
-    when(buildBucketV2Client.batch(any)).thenAnswer((_) async {
-      return bbv2.BatchResponse().createEmptyInstance();
-    });
-
-    const String messageData = '''
-{
-  "requests": [
-    {
-      "scheduleBuild": {
-        "builder": {
-          "builder": "Linux A"
-        }
-      }
-    }
-  ]
-}
-''';
-
-    const PushMessageV2 pushMessageV2 = PushMessageV2(data: messageData, messageId: '798274983');
-    tester.message = pushMessageV2;
-    final Body body = await tester.post(handler);
-
-    expect(body, isNotNull);
-    expect(verify(buildBucketV2Client.batch(any)).callCount, 3);
-  });
-}
diff --git a/app_dart/test/request_handlers/vacuum_github_commits_v2_test.dart b/app_dart/test/request_handlers/vacuum_github_commits_v2_test.dart
deleted file mode 100644
index 8041d61..0000000
--- a/app_dart/test/request_handlers/vacuum_github_commits_v2_test.dart
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/request_handlers/vacuum_github_commits_v2.dart';
-import 'package:cocoon_service/src/request_handling/body.dart';
-import 'package:cocoon_service/src/service/config.dart';
-import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:gcloud/db.dart' as gcloud_db;
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart';
-import 'package:googleapis/bigquery/v2.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/datastore/fake_datastore.dart';
-import '../src/request_handling/api_request_handler_tester.dart';
-import '../src/request_handling/fake_authentication.dart';
-import '../src/service/fake_github_service.dart';
-import '../src/service/fake_scheduler_v2.dart';
-import '../src/utilities/mocks.dart';
-
-void main() {
-  group('VacuumGithubCommits', () {
-    late FakeConfig config;
-    FakeAuthenticationProvider auth;
-    late FakeDatastoreDB db;
-    FakeSchedulerV2 scheduler;
-    late ApiRequestHandlerTester tester;
-    late MockFirestoreService mockFirestoreService;
-    late VacuumGithubCommitsV2 handler;
-
-    late List<String> githubCommits;
-    late int yieldedCommitCount;
-
-    List<RepositoryCommit> commitList() {
-      final List<RepositoryCommit> commits = <RepositoryCommit>[];
-      for (String sha in githubCommits) {
-        final User author = User()
-          ..login = 'Username'
-          ..avatarUrl = 'http://example.org/avatar.jpg';
-        final GitCommitUser committer =
-            GitCommitUser('Username', 'Username@abc.com', DateTime.fromMillisecondsSinceEpoch(int.parse(sha)));
-        final GitCommit gitCommit = GitCommit()
-          ..message = 'commit message'
-          ..committer = committer;
-        commits.add(
-          RepositoryCommit()
-            ..sha = sha
-            ..author = author
-            ..commit = gitCommit,
-        );
-      }
-      return commits;
-    }
-
-    Commit shaToCommit(String sha, String branch, RepositorySlug slug) {
-      return Commit(
-        key: db.emptyKey.append(Commit, id: '${slug.fullName}/$branch/$sha'),
-        repository: slug.fullName,
-        sha: sha,
-        branch: branch,
-        timestamp: int.parse(sha),
-      );
-    }
-
-    setUp(() {
-      final MockRepositoriesService repositories = MockRepositoriesService();
-      final FakeGithubService githubService = FakeGithubService();
-      final MockTabledataResource tabledataResourceApi = MockTabledataResource();
-      mockFirestoreService = MockFirestoreService();
-      when(tabledataResourceApi.insertAll(any, any, any, any)).thenAnswer((_) async {
-        return TableDataInsertAllResponse();
-      });
-
-      yieldedCommitCount = 0;
-      db = FakeDatastoreDB();
-      config = FakeConfig(
-        tabledataResource: tabledataResourceApi,
-        githubService: githubService,
-        firestoreService: mockFirestoreService,
-        dbValue: db,
-        supportedBranchesValue: <String>[
-          'master',
-          'main',
-        ],
-        supportedReposValue: <RepositorySlug>{
-          Config.cocoonSlug,
-          Config.engineSlug,
-          Config.flutterSlug,
-          Config.packagesSlug,
-        },
-      );
-
-      auth = FakeAuthenticationProvider();
-      scheduler = FakeSchedulerV2(
-        config: config,
-        ciYaml: exampleConfig,
-      );
-      tester = ApiRequestHandlerTester();
-      handler = VacuumGithubCommitsV2(
-        config: config,
-        authenticationProvider: auth,
-        datastoreProvider: (DatastoreDB db) => DatastoreService(config.db, 5),
-        scheduler: scheduler,
-      );
-
-      githubService.listCommitsBranch = (String branch, int hours) {
-        return commitList();
-      };
-
-      when(githubService.github.repositories).thenReturn(repositories);
-    });
-
-    test('succeeds when GitHub returns no commits', () async {
-      githubCommits = <String>[];
-      config.supportedBranchesValue = <String>['master'];
-      final Body body = await tester.get<Body>(handler);
-      expect(yieldedCommitCount, 0);
-      expect(db.values, isEmpty);
-      expect(await body.serialize().toList(), isEmpty);
-    });
-
-    test('does not fail on empty commit list', () async {
-      githubCommits = <String>[];
-      expect(db.values.values.whereType<Commit>().length, 0);
-      await tester.get<Body>(handler);
-      expect(db.values.values.whereType<Commit>().length, 0);
-    });
-
-    test('does not add recent commits', () async {
-      githubCommits = <String>['${DateTime.now().millisecondsSinceEpoch}'];
-
-      expect(db.values.values.whereType<Commit>().length, 0);
-      await tester.get<Body>(handler);
-      expect(db.values.values.whereType<Commit>().length, 0);
-    });
-
-    test('inserts all relevant fields of the commit', () async {
-      githubCommits = <String>['1'];
-      expect(db.values.values.whereType<Commit>().length, 0);
-      await tester.get<Body>(handler);
-      expect(db.values.values.whereType<Commit>().length, config.supportedRepos.length);
-      final List<Commit> commits = db.values.values.whereType<Commit>().toList();
-      final Commit commit = commits.first;
-      expect(commit.repository, 'flutter/cocoon');
-      expect(commit.branch, 'main');
-      expect(commit.sha, '1');
-      expect(commit.timestamp, 1);
-      expect(commit.author, 'Username');
-      expect(commit.authorAvatarUrl, 'http://example.org/avatar.jpg');
-      expect(commit.message, 'commit message');
-      expect(commits[1].repository, Config.engineSlug.fullName);
-      expect(commits[2].repository, Config.flutterSlug.fullName);
-    });
-
-    test('skips commits for which transaction commit fails', () async {
-      githubCommits = <String>['2', '3', '4'];
-
-      /// This test is simulating an existing branch, which must already
-      /// have at least one commit in the datastore.
-      final Commit commit = shaToCommit('1', 'main', Config.engineSlug);
-      db.values[commit.key] = commit;
-
-      db.onCommit = (List<gcloud_db.Model<dynamic>> inserts, List<gcloud_db.Key<dynamic>> deletes) {
-        if (inserts.whereType<Commit>().where((Commit commit) => commit.sha == '3').isNotEmpty) {
-          throw StateError('Commit failed');
-        }
-      };
-      final Body body = await tester.get<Body>(handler);
-
-      /// The +1 is coming from the engine repository and manually added commit on the top of this test.
-      expect(db.values.values.whereType<Commit>().length, 8 + 1); // 2 commits for 4 repos
-      expect(db.values.values.whereType<Commit>().map<String>(toSha), containsAll(<String>['1', '2', '4']));
-      expect(db.values.values.whereType<Commit>().map<int>(toTimestamp), containsAll(<int>[1, 2, 4]));
-      expect(await body.serialize().toList(), isEmpty);
-    });
-  });
-}
-
-String toSha(Commit commit) => commit.sha!;
-
-int toTimestamp(Commit commit) => commit.timestamp!;
diff --git a/app_dart/test/server_test.dart b/app_dart/test/server_test.dart
index 80c9746..addb63d 100644
--- a/app_dart/test/server_test.dart
+++ b/app_dart/test/server_test.dart
@@ -5,18 +5,14 @@
 import 'package:cocoon_service/cocoon_service.dart';
 import 'package:cocoon_service/server.dart';
 import 'package:cocoon_service/src/service/commit_service.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
 import 'package:test/test.dart';
 
 import 'src/datastore/fake_config.dart';
 import 'src/request_handling/fake_authentication.dart';
-import 'src/service/fake_build_bucket_v2_client.dart';
 import 'src/service/fake_buildbucket.dart';
 import 'src/service/fake_gerrit_service.dart';
 import 'src/service/fake_luci_build_service.dart';
-import 'src/service/fake_luci_build_service_v2.dart';
 import 'src/service/fake_scheduler.dart';
-import 'src/service/fake_scheduler_v2.dart';
 
 void main() {
   test('verify server can be created', () {
@@ -29,15 +25,11 @@
       swarmingAuthProvider: FakeAuthenticationProvider(),
       branchService: BranchService(config: FakeConfig(), gerritService: FakeGerritService()),
       buildBucketClient: FakeBuildBucketClient(),
-      buildBucketV2Client: FakeBuildBucketV2Client(),
       luciBuildService: FakeLuciBuildService(config: FakeConfig()),
-      luciBuildServiceV2: FakeLuciBuildServiceV2(config: FakeConfig()),
       githubChecksService: GithubChecksService(FakeConfig()),
-      githubChecksServiceV2: GithubChecksServiceV2(FakeConfig()),
       commitService: CommitService(config: FakeConfig()),
       gerritService: FakeGerritService(),
       scheduler: FakeScheduler(config: FakeConfig()),
-      schedulerV2: FakeSchedulerV2(config: FakeConfig()),
     );
   });
 }
diff --git a/app_dart/test/service/luci_build_service_test.dart b/app_dart/test/service/luci_build_service_test.dart
index a31b2f0..ac7d5b8 100644
--- a/app_dart/test/service/luci_build_service_test.dart
+++ b/app_dart/test/service/luci_build_service_test.dart
@@ -36,7 +36,6 @@
   late FakeConfig config;
   FakeGithubService githubService;
   late MockBuildBucketClient mockBuildBucketClient;
-  late MockBuildBucketV2Client mockBuildBucketV2Client;
   late LuciBuildService service;
   late RepositorySlug slug;
   late MockGithubChecksUtil mockGithubChecksUtil = MockGithubChecksUtil();
@@ -56,13 +55,11 @@
       githubService = FakeGithubService();
       config = FakeConfig(githubService: githubService);
       mockBuildBucketClient = MockBuildBucketClient();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
       pubsub = FakePubSub();
       service = LuciBuildService(
         config: config,
         cache: cache,
         buildBucketClient: mockBuildBucketClient,
-        buildBucketV2Client: mockBuildBucketV2Client,
         gerritService: FakeGerritService(),
         pubsub: pubsub,
       );
@@ -154,13 +151,11 @@
       githubService = FakeGithubService();
       config = FakeConfig(githubService: githubService);
       mockBuildBucketClient = MockBuildBucketClient();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
       pubsub = FakePubSub();
       service = LuciBuildService(
         config: config,
         cache: cache,
         buildBucketClient: mockBuildBucketClient,
-        buildBucketV2Client: mockBuildBucketV2Client,
         gerritService: FakeGerritService(),
         pubsub: pubsub,
       );
@@ -219,13 +214,11 @@
       githubService = FakeGithubService();
       config = FakeConfig(githubService: githubService);
       mockBuildBucketClient = MockBuildBucketClient();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
       pubsub = FakePubSub();
       service = LuciBuildService(
         config: config,
         cache: cache,
         buildBucketClient: mockBuildBucketClient,
-        buildBucketV2Client: mockBuildBucketV2Client,
         pubsub: pubsub,
       );
       slug = RepositorySlug('flutter', 'cocoon');
@@ -283,14 +276,12 @@
       githubService = FakeGithubService();
       config = FakeConfig(githubService: githubService);
       mockBuildBucketClient = MockBuildBucketClient();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
       mockGithubChecksUtil = MockGithubChecksUtil();
       pubsub = FakePubSub();
       service = LuciBuildService(
         config: config,
         cache: cache,
         buildBucketClient: mockBuildBucketClient,
-        buildBucketV2Client: mockBuildBucketV2Client,
         githubChecksUtil: mockGithubChecksUtil,
         gerritService: FakeGerritService(branchesValue: <String>['master']),
         pubsub: pubsub,
@@ -421,13 +412,11 @@
     setUp(() {
       cache = CacheService(inMemory: true);
       mockBuildBucketClient = MockBuildBucketClient();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
       pubsub = FakePubSub();
       service = LuciBuildService(
         config: FakeConfig(),
         cache: cache,
         buildBucketClient: mockBuildBucketClient,
-        buildBucketV2Client: mockBuildBucketV2Client,
         githubChecksUtil: mockGithubChecksUtil,
         pubsub: pubsub,
       );
@@ -717,13 +706,11 @@
     setUp(() {
       cache = CacheService(inMemory: true);
       mockBuildBucketClient = MockBuildBucketClient();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
       pubsub = FakePubSub();
       service = LuciBuildService(
         config: FakeConfig(),
         cache: cache,
         buildBucketClient: mockBuildBucketClient,
-        buildBucketV2Client: mockBuildBucketV2Client,
         githubChecksUtil: mockGithubChecksUtil,
         pubsub: pubsub,
       );
@@ -793,13 +780,11 @@
       cache = CacheService(inMemory: true);
       config = FakeConfig();
       mockBuildBucketClient = MockBuildBucketClient();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
       pubsub = FakePubSub();
       service = LuciBuildService(
         config: config,
         cache: cache,
         buildBucketClient: mockBuildBucketClient,
-        buildBucketV2Client: mockBuildBucketV2Client,
         pubsub: pubsub,
       );
       slug = RepositorySlug('flutter', 'cocoon');
@@ -847,13 +832,11 @@
       githubService = FakeGithubService();
       config = FakeConfig(githubService: githubService);
       mockBuildBucketClient = MockBuildBucketClient();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
       pubsub = FakePubSub();
       service = LuciBuildService(
         config: config,
         cache: cache,
         buildBucketClient: mockBuildBucketClient,
-        buildBucketV2Client: mockBuildBucketV2Client,
         pubsub: pubsub,
       );
       slug = RepositorySlug('flutter', 'flutter');
@@ -895,13 +878,11 @@
       cache = CacheService(inMemory: true);
       config = FakeConfig();
       mockBuildBucketClient = MockBuildBucketClient();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
       pubsub = FakePubSub();
       service = LuciBuildService(
         config: config,
         cache: cache,
         buildBucketClient: mockBuildBucketClient,
-        buildBucketV2Client: mockBuildBucketV2Client,
         pubsub: pubsub,
       );
       final Map<String, dynamic> json = jsonDecode(
@@ -949,7 +930,6 @@
       firestoreTask = null;
       firestoreCommit = null;
       mockBuildBucketClient = MockBuildBucketClient();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
       mockGithubChecksUtil = MockGithubChecksUtil();
       mockFirestoreService = MockFirestoreService();
       when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output')))
@@ -987,7 +967,6 @@
         config: config,
         cache: cache,
         buildBucketClient: mockBuildBucketClient,
-        buildBucketV2Client: mockBuildBucketV2Client,
         githubChecksUtil: mockGithubChecksUtil,
         pubsub: pubsub,
       );
diff --git a/app_dart/test/service/luci_build_service_v2_test.dart b/app_dart/test/service/luci_build_service_v2_test.dart
deleted file mode 100644
index 766405c..0000000
--- a/app_dart/test/service/luci_build_service_v2_test.dart
+++ /dev/null
@@ -1,1249 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-import 'dart:core';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/firestore/commit.dart' as firestore_commit;
-import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/model/ci_yaml/target.dart';
-import 'package:cocoon_service/src/model/github/checks.dart' as cocoon_checks;
-import 'package:cocoon_service/src/model/luci/user_data.dart';
-import 'package:cocoon_service/src/service/exceptions.dart';
-import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:fixnum/fixnum.dart';
-import 'package:gcloud/datastore.dart';
-import 'package:github/github.dart';
-import 'package:googleapis/firestore/v1.dart' hide Status;
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/request_handling/fake_pubsub.dart';
-import '../src/service/fake_gerrit_service.dart';
-import '../src/service/fake_github_service.dart';
-import '../src/utilities/build_bucket_v2_messages.dart';
-import '../src/utilities/entity_generators.dart';
-import '../src/utilities/mocks.dart';
-import '../src/utilities/webhook_generators.dart';
-
-void main() {
-  late CacheService cache;
-  late FakeConfig config;
-  FakeGithubService githubService;
-  late MockBuildBucketV2Client mockBuildBucketV2Client;
-  late LuciBuildServiceV2 service;
-  late RepositorySlug slug;
-  late MockGithubChecksUtil mockGithubChecksUtil = MockGithubChecksUtil();
-  late FakePubSub pubsub;
-
-  final List<Target> targets = <Target>[
-    generateTarget(1, properties: <String, String>{'os': 'abc'}),
-  ];
-  final PullRequest pullRequest = generatePullRequest(id: 1, repo: 'cocoon');
-
-  group('getBuilds', () {
-    final bbv2.Build macBuild = generateBbv2Build(Int64(998), name: 'Mac', status: bbv2.Status.STARTED);
-    final bbv2.Build linuxBuild =
-        generateBbv2Build(Int64(998), name: 'Linux', bucket: 'try', status: bbv2.Status.STARTED);
-
-    setUp(() {
-      cache = CacheService(inMemory: true);
-      githubService = FakeGithubService();
-      config = FakeConfig(githubService: githubService);
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
-      pubsub = FakePubSub();
-      service = LuciBuildServiceV2(
-        config: config,
-        cache: cache,
-        buildBucketV2Client: mockBuildBucketV2Client,
-        gerritService: FakeGerritService(),
-        pubsub: pubsub,
-      );
-      slug = RepositorySlug('flutter', 'cocoon');
-    });
-
-    test('Null build', () async {
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[macBuild],
-              ),
-            ),
-          ],
-        );
-      });
-      final Iterable<bbv2.Build> builds = await service.getTryBuilds(
-        slug: Config.flutterSlug,
-        sha: 'shasha',
-        builderName: 'abcd',
-      );
-      expect(builds.first, macBuild);
-    });
-
-    test('Existing prod build', () async {
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[],
-              ),
-            ),
-          ],
-        );
-      });
-      final Iterable<bbv2.Build> builds = await service.getProdBuilds(
-        slug: slug,
-        commitSha: 'commit123',
-        builderName: 'abcd',
-      );
-      expect(builds, isEmpty);
-    });
-
-    test('Existing try build', () async {
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[linuxBuild],
-              ),
-            ),
-          ],
-        );
-      });
-      final Iterable<bbv2.Build> builds = await service.getTryBuilds(
-        slug: Config.flutterSlug,
-        sha: 'shasha',
-        builderName: 'abcd',
-      );
-      expect(builds.first, linuxBuild);
-    });
-
-    test('Existing try build by pull request', () async {
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[linuxBuild],
-              ),
-            ),
-          ],
-        );
-      });
-      final Iterable<bbv2.Build> builds = await service.getTryBuildsByPullRequest(
-        pullRequest: PullRequest(
-          id: 998,
-          base: PullRequestHead(repo: Repository(fullName: 'flutter/cocoon')),
-        ),
-      );
-      expect(builds.first, linuxBuild);
-    });
-  });
-
-  group('getBuilders', () {
-    setUp(() {
-      cache = CacheService(inMemory: true);
-      githubService = FakeGithubService();
-      config = FakeConfig(githubService: githubService);
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
-      pubsub = FakePubSub();
-      service = LuciBuildServiceV2(
-        config: config,
-        cache: cache,
-        buildBucketV2Client: mockBuildBucketV2Client,
-        gerritService: FakeGerritService(),
-        pubsub: pubsub,
-      );
-      slug = RepositorySlug('flutter', 'flutter');
-    });
-
-    test('with one rpc call', () async {
-      when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
-        return bbv2.ListBuildersResponse(
-          builders: [
-            bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test1')),
-            bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test2')),
-          ],
-        );
-      });
-      final Set<String> builders = await service.getAvailableBuilderSet();
-      expect(builders.length, 2);
-      expect(builders.contains('test1'), isTrue);
-    });
-
-    test('with more than one rpc calls', () async {
-      int retries = -1;
-      when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
-        retries++;
-        if (retries == 0) {
-          return bbv2.ListBuildersResponse(
-            builders: [
-              bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test1')),
-              bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test2')),
-            ],
-            nextPageToken: 'token',
-          );
-        } else if (retries == 1) {
-          return bbv2.ListBuildersResponse(
-            builders: [
-              bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test3')),
-              bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test4')),
-            ],
-          );
-        } else {
-          return bbv2.ListBuildersResponse(builders: []);
-        }
-      });
-      final Set<String> builders = await service.getAvailableBuilderSet();
-      expect(builders.length, 4);
-      expect(builders, <String>{'test1', 'test2', 'test3', 'test4'});
-    });
-  });
-
-  group('buildsForRepositoryAndPr', () {
-    final bbv2.Build macBuild = generateBbv2Build(Int64(999), name: 'Mac', status: bbv2.Status.STARTED);
-    final bbv2.Build linuxBuild = generateBbv2Build(Int64(998), name: 'Linux', status: bbv2.Status.STARTED);
-
-    setUp(() {
-      cache = CacheService(inMemory: true);
-      githubService = FakeGithubService();
-      config = FakeConfig(githubService: githubService);
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
-      pubsub = FakePubSub();
-      service = LuciBuildServiceV2(
-        config: config,
-        cache: cache,
-        buildBucketV2Client: mockBuildBucketV2Client,
-        pubsub: pubsub,
-      );
-      slug = RepositorySlug('flutter', 'cocoon');
-    });
-
-    test('Empty responses are handled correctly', () async {
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[],
-              ),
-            ),
-          ],
-        );
-      });
-      final Iterable<bbv2.Build> builds = await service.getTryBuilds(
-        slug: RepositorySlug.full(pullRequest.base!.repo!.fullName),
-        sha: pullRequest.head!.sha!,
-        builderName: null,
-      );
-      expect(builds, isEmpty);
-    });
-
-    test('Response returning a couple of builds', () async {
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[macBuild],
-              ),
-            ),
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[linuxBuild],
-              ),
-            ),
-          ],
-        );
-      });
-      final Iterable<bbv2.Build> builds = await service.getTryBuilds(
-        slug: RepositorySlug.full(pullRequest.base!.repo!.fullName),
-        sha: pullRequest.head!.sha!,
-        builderName: null,
-      );
-      expect(builds, equals(<bbv2.Build>{macBuild, linuxBuild}));
-    });
-  });
-
-  group('scheduleBuilds', () {
-    setUp(() {
-      cache = CacheService(inMemory: true);
-      githubService = FakeGithubService();
-      config = FakeConfig(githubService: githubService);
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
-      mockGithubChecksUtil = MockGithubChecksUtil();
-      pubsub = FakePubSub();
-      service = LuciBuildServiceV2(
-        config: config,
-        cache: cache,
-        buildBucketV2Client: mockBuildBucketV2Client,
-        githubChecksUtil: mockGithubChecksUtil,
-        gerritService: FakeGerritService(branchesValue: <String>['master']),
-        pubsub: pubsub,
-      );
-      slug = RepositorySlug('flutter', 'cocoon');
-    });
-
-    test('schedule try builds successfully', () async {
-      final PullRequest pullRequest = generatePullRequest();
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              scheduleBuild: generateBbv2Build(Int64(1)),
-            ),
-          ],
-        );
-      });
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
-          .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
-      final List<Target> scheduledTargets = await service.scheduleTryBuilds(
-        pullRequest: pullRequest,
-        targets: targets,
-      );
-
-      final Iterable<String> scheduledTargetNames = scheduledTargets.map((Target target) => target.value.name);
-      expect(scheduledTargetNames, <String>['Linux 1']);
-
-      final bbv2.BatchRequest batchRequest = bbv2.BatchRequest().createEmptyInstance();
-      batchRequest.mergeFromProto3Json(pubsub.messages.single);
-      expect(batchRequest.requests.single.scheduleBuild, isNotNull);
-
-      final bbv2.ScheduleBuildRequest scheduleBuild = batchRequest.requests.single.scheduleBuild;
-      expect(scheduleBuild.builder.bucket, 'try');
-      expect(scheduleBuild.builder.builder, 'Linux 1');
-      expect(scheduleBuild.notify.pubsubTopic, 'projects/flutter-dashboard/topics/build-bucket-presubmit');
-
-      final Map<String, dynamic> userDataMap = UserData.decodeUserDataBytes(scheduleBuild.notify.userData);
-
-      expect(userDataMap, <String, dynamic>{
-        'repo_owner': 'flutter',
-        'repo_name': 'flutter',
-        'user_agent': 'flutter-cocoon',
-        'check_run_id': 1,
-        'commit_sha': 'abc',
-        'commit_branch': 'master',
-        'builder_name': 'Linux 1',
-      });
-
-      final Map<String, bbv2.Value> properties = scheduleBuild.properties.fields;
-      final List<bbv2.RequestedDimension> dimensions = scheduleBuild.dimensions;
-      expect(properties, <String, bbv2.Value>{
-        'os': bbv2.Value(stringValue: 'abc'),
-        'dependencies': bbv2.Value(listValue: bbv2.ListValue()),
-        'bringup': bbv2.Value(boolValue: false),
-        'git_branch': bbv2.Value(stringValue: 'master'),
-        'git_url': bbv2.Value(stringValue: 'https://github.com/flutter/flutter'),
-        'git_ref': bbv2.Value(stringValue: 'refs/pull/123/head'),
-        'exe_cipd_version': bbv2.Value(stringValue: 'refs/heads/main'),
-        'recipe': bbv2.Value(stringValue: 'devicelab/devicelab'),
-      });
-      expect(dimensions.length, 1);
-      expect(dimensions[0].key, 'os');
-      expect(dimensions[0].value, 'abc');
-    });
-
-    test('schedule try builds with github build labels successfully', () async {
-      final PullRequest pullRequest = generatePullRequest();
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              scheduleBuild: generateBbv2Build(Int64(1)),
-            ),
-          ],
-        );
-      });
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
-          .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
-      final List<Target> scheduledTargets = await service.scheduleTryBuilds(
-        pullRequest: pullRequest,
-        targets: targets,
-      );
-      final Iterable<String> scheduledTargetNames = scheduledTargets.map((Target target) => target.value.name);
-      expect(scheduledTargetNames, <String>['Linux 1']);
-
-      final bbv2.BatchRequest batchRequest = bbv2.BatchRequest().createEmptyInstance();
-      batchRequest.mergeFromProto3Json(pubsub.messages.single);
-      expect(batchRequest.requests.single.scheduleBuild, isNotNull);
-
-      final bbv2.ScheduleBuildRequest scheduleBuild = batchRequest.requests.single.scheduleBuild;
-      expect(scheduleBuild.builder.bucket, 'try');
-      expect(scheduleBuild.builder.builder, 'Linux 1');
-      expect(scheduleBuild.notify.pubsubTopic, 'projects/flutter-dashboard/topics/build-bucket-presubmit');
-
-      final Map<String, dynamic> userDataMap = UserData.decodeUserDataBytes(scheduleBuild.notify.userData);
-
-      expect(userDataMap, <String, dynamic>{
-        'repo_owner': 'flutter',
-        'repo_name': 'flutter',
-        'user_agent': 'flutter-cocoon',
-        'check_run_id': 1,
-        'commit_sha': 'abc',
-        'commit_branch': 'master',
-        'builder_name': 'Linux 1',
-      });
-
-      final Map<String, bbv2.Value> properties = scheduleBuild.properties.fields;
-      final List<bbv2.RequestedDimension> dimensions = scheduleBuild.dimensions;
-      expect(properties, <String, bbv2.Value>{
-        'os': bbv2.Value(stringValue: 'abc'),
-        'dependencies': bbv2.Value(listValue: bbv2.ListValue()),
-        'bringup': bbv2.Value(boolValue: false),
-        'git_branch': bbv2.Value(stringValue: 'master'),
-        'git_url': bbv2.Value(stringValue: 'https://github.com/flutter/flutter'),
-        'git_ref': bbv2.Value(stringValue: 'refs/pull/123/head'),
-        'exe_cipd_version': bbv2.Value(stringValue: 'refs/heads/main'),
-        'recipe': bbv2.Value(stringValue: 'devicelab/devicelab'),
-      });
-      expect(dimensions.length, 1);
-      expect(dimensions[0].key, 'os');
-      expect(dimensions[0].value, 'abc');
-    });
-
-    test('Schedule builds no-ops when targets list is empty', () async {
-      await service.scheduleTryBuilds(
-        pullRequest: pullRequest,
-        targets: <Target>[],
-      );
-      verifyNever(mockGithubChecksUtil.createCheckRun(any, any, any, any));
-    });
-  });
-
-  group('schedulePostsubmitBuilds', () {
-    setUp(() {
-      cache = CacheService(inMemory: true);
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
-      pubsub = FakePubSub();
-      service = LuciBuildServiceV2(
-        config: FakeConfig(),
-        cache: cache,
-        buildBucketV2Client: mockBuildBucketV2Client,
-        githubChecksUtil: mockGithubChecksUtil,
-        pubsub: pubsub,
-      );
-    });
-
-    test('schedule packages postsubmit builds successfully', () async {
-      final Commit commit = generateCommit(0);
-      when(mockGithubChecksUtil.createCheckRun(any, Config.packagesSlug, any, 'Linux 1'))
-          .thenAnswer((_) async => generateCheckRun(1));
-      when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
-        return bbv2.ListBuildersResponse(
-          builders: [
-            bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux 1')),
-          ],
-        );
-      });
-      final Tuple<Target, Task, int> toBeScheduled = Tuple<Target, Task, int>(
-        generateTarget(
-          1,
-          properties: <String, String>{
-            'recipe': 'devicelab/devicelab',
-            'os': 'debian-10.12',
-          },
-          slug: Config.packagesSlug,
-        ),
-        generateTask(1),
-        LuciBuildServiceV2.kDefaultPriority,
-      );
-      await service.schedulePostsubmitBuilds(
-        commit: commit,
-        toBeScheduled: <Tuple<Target, Task, int>>[
-          toBeScheduled,
-        ],
-      );
-      // Only one batch request should be published
-      expect(pubsub.messages.length, 1);
-
-      final bbv2.BatchRequest request = bbv2.BatchRequest().createEmptyInstance();
-      request.mergeFromProto3Json(pubsub.messages.single);
-      expect(request.requests.single.scheduleBuild, isNotNull);
-
-      final bbv2.ScheduleBuildRequest scheduleBuild = request.requests.single.scheduleBuild;
-      expect(scheduleBuild.builder.bucket, 'prod');
-      expect(scheduleBuild.builder.builder, 'Linux 1');
-      expect(scheduleBuild.notify.pubsubTopic, 'projects/flutter-dashboard/topics/build-bucket-postsubmit');
-
-      final Map<String, dynamic> userDataMap = UserData.decodeUserDataBytes(scheduleBuild.notify.userData);
-
-      expect(userDataMap, <String, dynamic>{
-        'commit_key': 'flutter/flutter/master/1',
-        'task_key': '1',
-        'check_run_id': 1,
-        'commit_sha': '0',
-        'commit_branch': 'master',
-        'builder_name': 'Linux 1',
-        'repo_owner': 'flutter',
-        'repo_name': 'packages',
-        'firestore_commit_document_name': '0',
-        'firestore_task_document_name': '0_task1_1',
-      });
-
-      final Map<String, bbv2.Value> properties = scheduleBuild.properties.fields;
-      expect(properties, <String, bbv2.Value>{
-        'dependencies': bbv2.Value(listValue: bbv2.ListValue()),
-        'bringup': bbv2.Value(boolValue: false),
-        'git_branch': bbv2.Value(stringValue: 'master'),
-        'exe_cipd_version': bbv2.Value(stringValue: 'refs/heads/master'),
-        'os': bbv2.Value(stringValue: 'debian-10.12'),
-        'recipe': bbv2.Value(stringValue: 'devicelab/devicelab'),
-      });
-
-      expect(scheduleBuild.exe, bbv2.Executable(cipdVersion: 'refs/heads/master'));
-      expect(scheduleBuild.dimensions, isNotEmpty);
-      expect(
-        scheduleBuild.dimensions.singleWhere((bbv2.RequestedDimension dimension) => dimension.key == 'os').value,
-        'debian-10.12',
-      );
-    });
-
-    test('schedule postsubmit builds with correct userData for checkRuns', () async {
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
-          .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
-      final Commit commit = generateCommit(0, repo: 'packages');
-      when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
-        return bbv2.ListBuildersResponse(
-          builders: [
-            bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux 1')),
-          ],
-        );
-      });
-      final Tuple<Target, Task, int> toBeScheduled = Tuple<Target, Task, int>(
-        generateTarget(
-          1,
-          properties: <String, String>{
-            'os': 'debian-10.12',
-          },
-          slug: RepositorySlug('flutter', 'packages'),
-        ),
-        generateTask(1),
-        LuciBuildServiceV2.kDefaultPriority,
-      );
-      await service.schedulePostsubmitBuilds(
-        commit: commit,
-        toBeScheduled: <Tuple<Target, Task, int>>[
-          toBeScheduled,
-        ],
-      );
-      // Only one batch request should be published
-      expect(pubsub.messages.length, 1);
-
-      final bbv2.BatchRequest request = bbv2.BatchRequest().createEmptyInstance();
-      request.mergeFromProto3Json(pubsub.messages.single);
-      expect(request.requests.single.scheduleBuild, isNotNull);
-
-      final bbv2.ScheduleBuildRequest scheduleBuild = request.requests.single.scheduleBuild;
-      expect(scheduleBuild.builder.bucket, 'prod');
-      expect(scheduleBuild.builder.builder, 'Linux 1');
-      expect(scheduleBuild.notify.pubsubTopic, 'projects/flutter-dashboard/topics/build-bucket-postsubmit');
-
-      final Map<String, dynamic> userData = UserData.decodeUserDataBytes(scheduleBuild.notify.userData);
-
-      expect(userData, <String, dynamic>{
-        'commit_key': 'flutter/flutter/master/1',
-        'task_key': '1',
-        'check_run_id': 1,
-        'commit_sha': '0',
-        'commit_branch': 'master',
-        'builder_name': 'Linux 1',
-        'repo_owner': 'flutter',
-        'repo_name': 'packages',
-        'firestore_commit_document_name': '0',
-        'firestore_task_document_name': '0_task1_1',
-      });
-    });
-
-    test('return the orignal list when hitting buildbucket exception', () async {
-      final Commit commit = generateCommit(0, repo: 'packages');
-      when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
-        throw const BuildBucketException(1, 'error');
-      });
-      final Tuple<Target, Task, int> toBeScheduled = Tuple<Target, Task, int>(
-        generateTarget(
-          1,
-          properties: <String, String>{
-            'os': 'debian-10.12',
-          },
-          slug: RepositorySlug('flutter', 'packages'),
-        ),
-        generateTask(1),
-        LuciBuildServiceV2.kDefaultPriority,
-      );
-      final List<Tuple<Target, Task, int>> results = await service.schedulePostsubmitBuilds(
-        commit: commit,
-        toBeScheduled: <Tuple<Target, Task, int>>[
-          toBeScheduled,
-        ],
-      );
-      expect(results, <Tuple<Target, Task, int>>[
-        toBeScheduled,
-      ]);
-    });
-
-    test('reschedule using checkrun event fails gracefully', () async {
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
-          .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
-
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[],
-              ),
-            ),
-          ],
-        );
-      });
-
-      final pushMessage = generateCheckRunEvent(action: 'created', numberOfPullRequests: 1);
-      final Map<String, dynamic> jsonMap = json.decode(pushMessage.data!);
-      final Map<String, dynamic> jsonSubMap = json.decode(jsonMap['2']);
-      final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(jsonSubMap);
-
-      expect(
-        () async => service.reschedulePostsubmitBuildUsingCheckRunEvent(
-          checkRunEvent,
-          commit: generateCommit(0),
-          task: generateTask(0),
-          target: generateTarget(0),
-        ),
-        throwsA(const TypeMatcher<NoBuildFoundException>()),
-      );
-    });
-
-    test('do not create postsubmit checkrun for bringup: true target', () async {
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
-          .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
-      final Commit commit = generateCommit(0, repo: Config.packagesSlug.name);
-      when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
-        return bbv2.ListBuildersResponse(
-          builders: [
-            bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux 1')),
-          ],
-        );
-      });
-      final Tuple<Target, Task, int> toBeScheduled = Tuple<Target, Task, int>(
-        generateTarget(
-          1,
-          properties: <String, String>{
-            'os': 'debian-10.12',
-          },
-          bringup: true,
-          slug: Config.packagesSlug,
-        ),
-        generateTask(1, parent: commit),
-        LuciBuildServiceV2.kDefaultPriority,
-      );
-      await service.schedulePostsubmitBuilds(
-        commit: commit,
-        toBeScheduled: <Tuple<Target, Task, int>>[
-          toBeScheduled,
-        ],
-      );
-      // Only one batch request should be published
-      expect(pubsub.messages.length, 1);
-
-      final bbv2.BatchRequest request = bbv2.BatchRequest().createEmptyInstance();
-      request.mergeFromProto3Json(pubsub.messages.single);
-      expect(request.requests.single.scheduleBuild, isNotNull);
-
-      final bbv2.ScheduleBuildRequest scheduleBuild = request.requests.single.scheduleBuild;
-      expect(scheduleBuild.builder.bucket, 'staging');
-      expect(scheduleBuild.builder.builder, 'Linux 1');
-      expect(scheduleBuild.notify.pubsubTopic, 'projects/flutter-dashboard/topics/build-bucket-postsubmit');
-      final Map<String, dynamic> userData = UserData.decodeUserDataBytes(scheduleBuild.notify.userData);
-      // No check run related data.
-      expect(userData, <String, dynamic>{
-        'commit_key': 'flutter/packages/master/0',
-        'task_key': '1',
-        'firestore_commit_document_name': '0',
-        'firestore_task_document_name': '0_task1_1',
-      });
-    });
-
-    test('Skip non-existing builder', () async {
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
-          .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
-      final Commit commit = generateCommit(0);
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
-          .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 2'));
-      when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
-        return bbv2.ListBuildersResponse(
-          builders: [
-            bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux 2')),
-          ],
-        );
-      });
-      final Tuple<Target, Task, int> toBeScheduled1 = Tuple<Target, Task, int>(
-        generateTarget(
-          1,
-          properties: <String, String>{
-            'os': 'debian-10.12',
-          },
-        ),
-        generateTask(1),
-        LuciBuildService.kDefaultPriority,
-      );
-      final Tuple<Target, Task, int> toBeScheduled2 = Tuple<Target, Task, int>(
-        generateTarget(
-          2,
-          properties: <String, String>{
-            'os': 'debian-10.12',
-          },
-        ),
-        generateTask(1),
-        LuciBuildService.kDefaultPriority,
-      );
-      await service.schedulePostsubmitBuilds(
-        commit: commit,
-        toBeScheduled: <Tuple<Target, Task, int>>[
-          toBeScheduled1,
-          toBeScheduled2,
-        ],
-      );
-      expect(pubsub.messages.length, 1);
-      final bbv2.BatchRequest request = bbv2.BatchRequest().createEmptyInstance();
-      request.mergeFromProto3Json(pubsub.messages.single);
-      // Only existing builder: `Linux 2` is scheduled.
-      expect(request.requests.length, 1);
-      expect(request.requests.single.scheduleBuild, isNotNull);
-      final bbv2.ScheduleBuildRequest scheduleBuild = request.requests.single.scheduleBuild;
-      expect(scheduleBuild.builder.bucket, 'prod');
-      expect(scheduleBuild.builder.builder, 'Linux 2');
-    });
-  });
-
-  group('schedulePresubmitBuilds', () {
-    setUp(() {
-      cache = CacheService(inMemory: true);
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
-      pubsub = FakePubSub();
-      service = LuciBuildServiceV2(
-        config: FakeConfig(),
-        cache: cache,
-        buildBucketV2Client: mockBuildBucketV2Client,
-        githubChecksUtil: mockGithubChecksUtil,
-        pubsub: pubsub,
-      );
-    });
-
-    test('reschedule using checkrun event', () async {
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
-          .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
-
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[
-                  generateBbv2Build(
-                    Int64(1),
-                    name: 'Linux',
-                    status: bbv2.Status.ENDED_MASK,
-                    tags: <bbv2.StringPair>[
-                      bbv2.StringPair(key: 'buildset', value: 'pr/git/123'),
-                      bbv2.StringPair(key: 'cipd_version', value: 'refs/heads/main'),
-                      bbv2.StringPair(key: 'github_link', value: 'https://github.com/flutter/flutter/pull/1'),
-                    ],
-                    input: bbv2.Build_Input(properties: bbv2.Struct(fields: {'test': bbv2.Value(stringValue: 'abc')})),
-                  ),
-                ],
-              ),
-            ),
-          ],
-        );
-      });
-      when(mockBuildBucketV2Client.scheduleBuild(any)).thenAnswer((_) async => generateBbv2Build(Int64(1)));
-
-      final pushMessage = generateCheckRunEvent(action: 'created', numberOfPullRequests: 1);
-      final Map<String, dynamic> jsonMap = json.decode(pushMessage.data!);
-      final Map<String, dynamic> jsonSubMap = json.decode(jsonMap['2']);
-      final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(jsonSubMap);
-
-      await service.reschedulePresubmitBuildUsingCheckRunEvent(
-        checkRunEvent: checkRunEvent,
-      );
-
-      final List<dynamic> captured = verify(
-        mockBuildBucketV2Client.scheduleBuild(
-          captureAny,
-        ),
-      ).captured;
-      expect(captured.length, 1);
-
-      final bbv2.ScheduleBuildRequest scheduleBuildRequest = captured[0] as bbv2.ScheduleBuildRequest;
-
-      final Map<String, dynamic> userData = UserData.decodeUserDataBytes(scheduleBuildRequest.notify.userData);
-
-      expect(userData, <String, dynamic>{
-        'check_run_id': 1,
-        'commit_branch': 'master',
-        'commit_sha': 'ec26c3e57ca3a959ca5aad62de7213c562f8c821',
-        'repo_owner': 'flutter',
-        'repo_name': 'flutter',
-        'user_agent': 'flutter-cocoon',
-      });
-
-      final Map<String, dynamic> expectedProperties = {};
-      expectedProperties['overrides'] = ['override: test'];
-      final bbv2.Struct propertiesStruct = bbv2.Struct().createEmptyInstance();
-      propertiesStruct.mergeFromProto3Json(expectedProperties);
-
-      final Map<String, bbv2.Value> properties = scheduleBuildRequest.properties.fields;
-      expect(properties['overrides'], propertiesStruct.fields['overrides']);
-    });
-  });
-
-  group('cancelBuilds', () {
-    setUp(() {
-      cache = CacheService(inMemory: true);
-      config = FakeConfig();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
-      pubsub = FakePubSub();
-      service = LuciBuildServiceV2(
-        config: config,
-        cache: cache,
-        buildBucketV2Client: mockBuildBucketV2Client,
-        pubsub: pubsub,
-      );
-      slug = RepositorySlug('flutter', 'cocoon');
-    });
-
-    test('Cancel builds when build list is empty', () async {
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[],
-        );
-      });
-      await service.cancelBuilds(pullRequest: pullRequest, reason: 'new builds');
-      // This is okay, it is getting called twice when it runs cancel builds
-      // because the call is no longer being short-circuited. It calls batch in
-      // tryBuildsForPullRequest and it calls in the top level cancelBuilds
-      // function.
-      verify(mockBuildBucketV2Client.batch(any)).called(1);
-    });
-
-    test('Cancel builds that are scheduled', () async {
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[
-                  generateBbv2Build(Int64(998), name: 'Linux', status: bbv2.Status.STARTED),
-                ],
-              ),
-            ),
-          ],
-        );
-      });
-      await service.cancelBuilds(pullRequest: pullRequest, reason: 'new builds');
-
-      final List<dynamic> captured = verify(
-        mockBuildBucketV2Client.batch(
-          captureAny,
-        ),
-      ).captured;
-
-      final List<bbv2.BatchRequest_Request> capturedBatchRequests = [];
-      for (dynamic cap in captured) {
-        capturedBatchRequests.add((cap as bbv2.BatchRequest).requests.first);
-      }
-
-      final bbv2.SearchBuildsRequest searchBuildRequest =
-          capturedBatchRequests.firstWhere((req) => req.hasSearchBuilds()).searchBuilds;
-      final bbv2.CancelBuildRequest cancelBuildRequest =
-          capturedBatchRequests.firstWhere((req) => req.hasCancelBuild()).cancelBuild;
-      expect(searchBuildRequest, isNotNull);
-      expect(cancelBuildRequest, isNotNull);
-
-      expect(cancelBuildRequest.id, Int64(998));
-      expect(cancelBuildRequest.summaryMarkdown, 'new builds');
-    });
-  });
-
-  group('failedBuilds', () {
-    setUp(() {
-      cache = CacheService(inMemory: true);
-      githubService = FakeGithubService();
-      config = FakeConfig(githubService: githubService);
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
-      pubsub = FakePubSub();
-      service = LuciBuildServiceV2(
-        config: config,
-        cache: cache,
-        buildBucketV2Client: mockBuildBucketV2Client,
-        pubsub: pubsub,
-      );
-      slug = RepositorySlug('flutter', 'flutter');
-    });
-
-    test('Failed builds from an empty list', () async {
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[],
-        );
-      });
-      final List<bbv2.Build?> result = await service.failedBuilds(pullRequest: pullRequest, targets: <Target>[]);
-      expect(result, isEmpty);
-    });
-
-    test('Failed builds from a list of builds with failures', () async {
-      when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
-        return bbv2.BatchResponse(
-          responses: <bbv2.BatchResponse_Response>[
-            bbv2.BatchResponse_Response(
-              searchBuilds: bbv2.SearchBuildsResponse(
-                builds: <bbv2.Build>[
-                  generateBbv2Build(Int64(998), name: 'Linux 1', status: bbv2.Status.FAILURE),
-                ],
-              ),
-            ),
-          ],
-        );
-      });
-      final List<bbv2.Build?> result =
-          await service.failedBuilds(pullRequest: pullRequest, targets: <Target>[generateTarget(1)]);
-      expect(result, hasLength(1));
-    });
-  });
-
-  group('rescheduleBuild', () {
-    late bbv2.BuildsV2PubSub rescheduleBuild;
-
-    setUp(() {
-      cache = CacheService(inMemory: true);
-      config = FakeConfig();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
-      pubsub = FakePubSub();
-      service = LuciBuildServiceV2(
-        config: config,
-        cache: cache,
-        buildBucketV2Client: mockBuildBucketV2Client,
-        pubsub: pubsub,
-      );
-      rescheduleBuild = createBuild(Int64(1), status: bbv2.Status.FAILURE, builder: 'Linux Host Engine');
-    });
-
-    test('Reschedule an existing build', () async {
-      when(mockBuildBucketV2Client.scheduleBuild(any)).thenAnswer((_) async => generateBbv2Build(Int64(1)));
-      final build = await service.rescheduleBuild(
-        builderName: 'mybuild',
-        build: rescheduleBuild.build,
-        rescheduleAttempt: 2,
-        userDataMap: {},
-      );
-      expect(build.id, Int64(1));
-      expect(build.status, bbv2.Status.SUCCESS);
-      final List<dynamic> captured = verify(mockBuildBucketV2Client.scheduleBuild(captureAny)).captured;
-      expect(captured.length, 1);
-
-      final bbv2.ScheduleBuildRequest scheduleBuildRequest = captured[0];
-      expect(scheduleBuildRequest, isNotNull);
-      final List<bbv2.StringPair> tags = scheduleBuildRequest.tags;
-      final bbv2.StringPair attemptPair = tags.firstWhere((element) => element.key == 'current_attempt');
-      expect(attemptPair.value, '2');
-    });
-  });
-
-  group('checkRerunBuilder', () {
-    late Commit commit;
-    late Commit totCommit;
-    late DatastoreService datastore;
-    late MockGithubChecksUtil mockGithubChecksUtil;
-    late MockFirestoreService mockFirestoreService;
-    firestore.Task? firestoreTask;
-    firestore_commit.Commit? firestoreCommit;
-    setUp(() {
-      cache = CacheService(inMemory: true);
-      config = FakeConfig();
-      firestoreTask = null;
-      firestoreCommit = null;
-      mockGithubChecksUtil = MockGithubChecksUtil();
-      mockFirestoreService = MockFirestoreService();
-      mockBuildBucketV2Client = MockBuildBucketV2Client();
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output')))
-          .thenAnswer((realInvocation) async => generateCheckRun(1));
-      when(
-        mockFirestoreService.batchWriteDocuments(
-          captureAny,
-          captureAny,
-        ),
-      ).thenAnswer((Invocation invocation) {
-        return Future<BatchWriteResponse>.value(BatchWriteResponse());
-      });
-      when(
-        mockFirestoreService.getDocument(
-          captureAny,
-        ),
-      ).thenAnswer((Invocation invocation) {
-        return Future<firestore_commit.Commit>.value(
-          firestoreCommit,
-        );
-      });
-      when(
-        mockFirestoreService.queryRecentCommits(
-          limit: captureAnyNamed('limit'),
-          slug: captureAnyNamed('slug'),
-          branch: captureAnyNamed('branch'),
-        ),
-      ).thenAnswer((Invocation invocation) {
-        return Future<List<firestore_commit.Commit>>.value(
-          <firestore_commit.Commit>[firestoreCommit!],
-        );
-      });
-      pubsub = FakePubSub();
-      service = LuciBuildServiceV2(
-        config: config,
-        cache: cache,
-        buildBucketV2Client: mockBuildBucketV2Client,
-        githubChecksUtil: mockGithubChecksUtil,
-        pubsub: pubsub,
-      );
-      datastore = DatastoreService(config.db, 5);
-    });
-
-    test('Pass repo and properties correctly', () async {
-      firestoreTask = generateFirestoreTask(1, attempts: 1, status: firestore.Task.statusFailed);
-      firestoreCommit = generateFirestoreCommit(1);
-      totCommit = generateCommit(1, repo: 'engine', branch: 'main');
-      config.db.values[totCommit.key] = totCommit;
-      config.maxLuciTaskRetriesValue = 1;
-      final Task task = generateTask(
-        1,
-        status: Task.statusFailed,
-        parent: totCommit,
-        buildNumber: 1,
-      );
-      final Target target = generateTarget(1);
-      expect(task.attempts, 1);
-      expect(task.status, Task.statusFailed);
-      final bool rerunFlag = await service.checkRerunBuilder(
-        commit: totCommit,
-        task: task,
-        target: target,
-        datastore: datastore,
-        firestoreService: mockFirestoreService,
-        taskDocument: firestoreTask!,
-      );
-      expect(pubsub.messages.length, 1);
-
-      final bbv2.BatchRequest request = bbv2.BatchRequest().createEmptyInstance();
-      request.mergeFromProto3Json(pubsub.messages.single);
-      expect(request, isNotNull);
-      final bbv2.ScheduleBuildRequest scheduleBuildRequest = request.requests.first.scheduleBuild;
-
-      final Map<String, bbv2.Value> properties = scheduleBuildRequest.properties.fields;
-      for (String key in Config.defaultProperties.keys) {
-        expect(properties.containsKey(key), true);
-      }
-      expect(scheduleBuildRequest.priority, LuciBuildService.kRerunPriority);
-      expect(scheduleBuildRequest.gitilesCommit.project, 'mirrors/engine');
-      expect(scheduleBuildRequest.tags.firstWhere((tag) => tag.key == 'trigger_type').value, 'auto_retry');
-      expect(rerunFlag, isTrue);
-      expect(task.attempts, 2);
-      expect(task.status, Task.statusInProgress);
-    });
-
-    test('Rerun a test failed builder', () async {
-      firestoreTask = generateFirestoreTask(1, attempts: 1, status: firestore.Task.statusFailed);
-      firestoreCommit = generateFirestoreCommit(1);
-      totCommit = generateCommit(1);
-      config.db.values[totCommit.key] = totCommit;
-      config.maxLuciTaskRetriesValue = 1;
-      final Task task = generateTask(
-        1,
-        status: Task.statusFailed,
-        parent: totCommit,
-        buildNumber: 1,
-      );
-      final Target target = generateTarget(1);
-      final bool rerunFlag = await service.checkRerunBuilder(
-        commit: totCommit,
-        task: task,
-        target: target,
-        datastore: datastore,
-        firestoreService: mockFirestoreService,
-        taskDocument: firestoreTask!,
-      );
-      expect(rerunFlag, isTrue);
-    });
-
-    test('Rerun an infra failed builder', () async {
-      firestoreTask = generateFirestoreTask(1, attempts: 1, status: firestore.Task.statusInfraFailure);
-      firestoreCommit = generateFirestoreCommit(1);
-      totCommit = generateCommit(1);
-      config.db.values[totCommit.key] = totCommit;
-      config.maxLuciTaskRetriesValue = 1;
-      final Task task = generateTask(
-        1,
-        status: Task.statusInfraFailure,
-        parent: totCommit,
-        buildNumber: 1,
-      );
-      final Target target = generateTarget(1);
-      final bool rerunFlag = await service.checkRerunBuilder(
-        commit: totCommit,
-        task: task,
-        target: target,
-        datastore: datastore,
-        firestoreService: mockFirestoreService,
-        taskDocument: firestoreTask!,
-      );
-      expect(rerunFlag, isTrue);
-    });
-
-    test('Skip rerun a failed test when task status update hit exception', () async {
-      firestoreTask = generateFirestoreTask(1, attempts: 1, status: firestore.Task.statusInfraFailure);
-      when(
-        mockFirestoreService.batchWriteDocuments(
-          captureAny,
-          captureAny,
-        ),
-      ).thenAnswer((Invocation invocation) {
-        throw InternalError();
-      });
-      firestoreCommit = generateFirestoreCommit(1);
-      totCommit = generateCommit(1);
-      config.db.values[totCommit.key] = totCommit;
-      config.maxLuciTaskRetriesValue = 1;
-      final Task task = generateTask(
-        1,
-        status: Task.statusFailed,
-        parent: totCommit,
-        buildNumber: 1,
-      );
-      final Target target = generateTarget(1);
-      final bool rerunFlag = await service.checkRerunBuilder(
-        commit: totCommit,
-        task: task,
-        target: target,
-        datastore: datastore,
-        firestoreService: mockFirestoreService,
-        taskDocument: firestoreTask!,
-      );
-      expect(rerunFlag, isFalse);
-      expect(pubsub.messages.length, 0);
-    });
-
-    test('Do not rerun a successful builder', () async {
-      firestoreTask = generateFirestoreTask(1, attempts: 1);
-      totCommit = generateCommit(1);
-      config.db.values[totCommit.key] = totCommit;
-      config.maxLuciTaskRetriesValue = 1;
-      final Task task = generateTask(
-        1,
-        status: Task.statusSucceeded,
-        parent: totCommit,
-        buildNumber: 1,
-      );
-      final Target target = generateTarget(1);
-      final bool rerunFlag = await service.checkRerunBuilder(
-        commit: totCommit,
-        task: task,
-        target: target,
-        datastore: datastore,
-        firestoreService: mockFirestoreService,
-        taskDocument: firestoreTask!,
-      );
-      expect(rerunFlag, isFalse);
-    });
-
-    test('Do not rerun a builder exceeding retry limit', () async {
-      firestoreTask = generateFirestoreTask(1, attempts: 1);
-      totCommit = generateCommit(1);
-      config.db.values[totCommit.key] = totCommit;
-      config.maxLuciTaskRetriesValue = 1;
-      final Task task = generateTask(
-        1,
-        status: Task.statusInfraFailure,
-        parent: totCommit,
-        buildNumber: 1,
-        attempts: 2,
-      );
-      final Target target = generateTarget(1);
-      final bool rerunFlag = await service.checkRerunBuilder(
-        commit: totCommit,
-        task: task,
-        target: target,
-        datastore: datastore,
-        firestoreService: mockFirestoreService,
-        taskDocument: firestoreTask!,
-      );
-      expect(rerunFlag, isFalse);
-    });
-
-    test('Do not rerun a builder when not tip of tree', () async {
-      firestoreTask = generateFirestoreTask(1, attempts: 1);
-      totCommit = generateCommit(2, sha: 'def');
-      commit = generateCommit(1, sha: 'abc');
-      config.db.values[totCommit.key] = totCommit;
-      config.db.values[commit.key] = commit;
-      config.maxLuciTaskRetriesValue = 1;
-      final Task task = generateTask(
-        1,
-        status: Task.statusInfraFailure,
-        parent: commit,
-        buildNumber: 1,
-      );
-      final Target target = generateTarget(1);
-      final bool rerunFlag = await service.checkRerunBuilder(
-        commit: commit,
-        task: task,
-        target: target,
-        datastore: datastore,
-        firestoreService: mockFirestoreService,
-        taskDocument: firestoreTask!,
-      );
-      expect(rerunFlag, isFalse);
-    });
-
-    test('insert retried task document to firestore', () async {
-      firestoreTask = generateFirestoreTask(1, attempts: 1, status: firestore.Task.statusInfraFailure);
-      firestoreCommit = generateFirestoreCommit(1);
-      totCommit = generateCommit(1);
-      config.db.values[totCommit.key] = totCommit;
-      config.maxLuciTaskRetriesValue = 1;
-      final Task task = generateTask(
-        1,
-        status: Task.statusInfraFailure,
-        parent: totCommit,
-        buildNumber: 1,
-      );
-      final Target target = generateTarget(1);
-      expect(firestoreTask!.attempts, 1);
-      final bool rerunFlag = await service.checkRerunBuilder(
-        commit: totCommit,
-        task: task,
-        target: target,
-        datastore: datastore,
-        firestoreService: mockFirestoreService,
-        taskDocument: firestoreTask!,
-      );
-      expect(rerunFlag, isTrue);
-
-      expect(firestoreTask!.attempts, 2);
-      final List<dynamic> captured = verify(mockFirestoreService.batchWriteDocuments(captureAny, captureAny)).captured;
-      expect(captured.length, 2);
-      final BatchWriteRequest batchWriteRequest = captured[0] as BatchWriteRequest;
-      expect(batchWriteRequest.writes!.length, 1);
-      final Document insertedTaskDocument = batchWriteRequest.writes![0].update!;
-      expect(insertedTaskDocument, firestoreTask);
-      expect(firestoreTask!.status, firestore.Task.statusInProgress);
-    });
-  });
-}
diff --git a/app_dart/test/service/scheduler_test.dart b/app_dart/test/service/scheduler_test.dart
index 115d616..83935e8 100644
--- a/app_dart/test/service/scheduler_test.dart
+++ b/app_dart/test/service/scheduler_test.dart
@@ -1195,7 +1195,6 @@
 
       test('retries only triggers failed builds only', () async {
         final MockBuildBucketClient mockBuildbucket = MockBuildBucketClient();
-        final MockBuildBucketV2Client mockBuildBucketV2Client = MockBuildBucketV2Client();
         buildStatusService =
             FakeBuildStatusService(commitStatuses: <CommitStatus>[CommitStatus(generateCommit(1), const <Stage>[])]);
         final FakePubSub pubsub = FakePubSub();
@@ -1210,7 +1209,6 @@
             config: config,
             githubChecksUtil: mockGithubChecksUtil,
             buildbucket: mockBuildbucket,
-            buildBucketV2Client: mockBuildBucketV2Client,
             gerritService: FakeGerritService(branchesValue: <String>['master']),
             pubsub: pubsub,
           ),
diff --git a/app_dart/test/service/scheduler_v2_test.dart b/app_dart/test/service/scheduler_v2_test.dart
deleted file mode 100644
index a09cf12..0000000
--- a/app_dart/test/service/scheduler_v2_test.dart
+++ /dev/null
@@ -1,1377 +0,0 @@
-// Copyright 2021 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/src/foundation/utils.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/appengine/stage.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/ci_yaml/target.dart';
-import 'package:cocoon_service/src/model/github/checks.dart' as cocoon_checks;
-import 'package:cocoon_service/src/service/build_status_provider.dart';
-import 'package:cocoon_service/src/service/cache_service.dart';
-import 'package:cocoon_service/src/service/config.dart';
-import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:gcloud/db.dart' as gcloud_db;
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart';
-import 'package:googleapis/bigquery/v2.dart';
-import 'package:googleapis/firestore/v1.dart' hide Status;
-import 'package:http/http.dart' as http;
-import 'package:http/testing.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../model/github/checks_test_data.dart';
-import '../src/datastore/fake_config.dart';
-import '../src/datastore/fake_datastore.dart';
-import '../src/service/fake_build_status_provider.dart';
-import '../src/request_handling/fake_pubsub.dart';
-import '../src/service/fake_gerrit_service.dart';
-import '../src/service/fake_github_service.dart';
-import '../src/service/fake_luci_build_service_v2.dart';
-import '../src/utilities/entity_generators.dart';
-import '../src/utilities/mocks.dart';
-
-const String singleCiYaml = r'''
-enabled_branches:
-  - master
-  - main
-  - flutter-\d+\.\d+-candidate\.\d+
-targets:
-  - name: Linux A
-    properties:
-      custom: abc
-  - name: Linux B
-    enabled_branches:
-      - stable
-    scheduler: luci
-  - name: Linux runIf
-    runIf:
-      - .ci.yaml
-      - dev/**
-  - name: Google Internal Roll
-    postsubmit: true
-    presubmit: false
-    scheduler: google_internal
-''';
-
-void main() {
-  late CacheService cache;
-  late FakeConfig config;
-  late FakeDatastoreDB db;
-  late FakeBuildStatusService buildStatusService;
-  late MockClient httpClient;
-  late MockFirestoreService mockFirestoreService;
-  late MockGithubChecksUtil mockGithubChecksUtil;
-  late SchedulerV2 scheduler;
-
-  final PullRequest pullRequest = generatePullRequest(id: 42);
-
-  Commit shaToCommit(String sha, {String branch = 'master'}) {
-    return Commit(
-      key: db.emptyKey.append(Commit, id: 'flutter/flutter/$branch/$sha'),
-      repository: 'flutter/flutter',
-      sha: sha,
-      branch: branch,
-      timestamp: int.parse(sha),
-    );
-  }
-
-  group('Scheduler', () {
-    setUp(() {
-      final MockTabledataResource tabledataResource = MockTabledataResource();
-      when(tabledataResource.insertAll(any, any, any, any)).thenAnswer((_) async {
-        return TableDataInsertAllResponse();
-      });
-
-      cache = CacheService(inMemory: true);
-      db = FakeDatastoreDB();
-      mockFirestoreService = MockFirestoreService();
-      buildStatusService = FakeBuildStatusService(
-        commitStatuses: <CommitStatus>[
-          CommitStatus(generateCommit(1), const <Stage>[]),
-          CommitStatus(generateCommit(1, branch: 'main', repo: Config.engineSlug.name), const <Stage>[]),
-        ],
-      );
-      config = FakeConfig(
-        tabledataResource: tabledataResource,
-        dbValue: db,
-        githubService: FakeGithubService(),
-        githubClient: MockGitHub(),
-        firestoreService: mockFirestoreService,
-        supportedReposValue: <RepositorySlug>{
-          Config.engineSlug,
-          Config.flutterSlug,
-        },
-      );
-      httpClient = MockClient((http.Request request) async {
-        if (request.url.path.contains('.ci.yaml')) {
-          return http.Response(singleCiYaml, 200);
-        }
-        throw Exception('Failed to find ${request.url.path}');
-      });
-
-      mockGithubChecksUtil = MockGithubChecksUtil();
-      // Generate check runs based on the name hash code
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output')))
-          .thenAnswer((Invocation invocation) async => generateCheckRun(invocation.positionalArguments[2].hashCode));
-      scheduler = SchedulerV2(
-        cache: cache,
-        config: config,
-        datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
-        buildStatusProvider: (_, __) => buildStatusService,
-        githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-        httpClientProvider: () => httpClient,
-        luciBuildService: FakeLuciBuildServiceV2(
-          config: config,
-          githubChecksUtil: mockGithubChecksUtil,
-          gerritService: FakeGerritService(
-            branchesValue: <String>['master', 'main'],
-          ),
-        ),
-      );
-
-      when(mockGithubChecksUtil.createCheckRun(any, any, any, any)).thenAnswer((_) async {
-        return CheckRun.fromJson(const <String, dynamic>{
-          'id': 1,
-          'started_at': '2020-05-10T02:49:31Z',
-          'check_suite': <String, dynamic>{'id': 2},
-        });
-      });
-    });
-
-    group('add commits', () {
-      final FakePubSub pubsub = FakePubSub();
-      List<Commit> createCommitList(
-        List<String> shas, {
-        String repo = 'flutter',
-        String branch = 'master',
-      }) {
-        return List<Commit>.generate(
-          shas.length,
-          (int index) => Commit(
-            author: 'Username',
-            authorAvatarUrl: 'http://example.org/avatar.jpg',
-            branch: branch,
-            key: db.emptyKey.append(Commit, id: 'flutter/$repo/$branch/${shas[index]}'),
-            message: 'commit message',
-            repository: 'flutter/$repo',
-            sha: shas[index],
-            timestamp: DateTime.fromMillisecondsSinceEpoch(int.parse(shas[index])).millisecondsSinceEpoch,
-          ),
-        );
-      }
-
-      test('succeeds when GitHub returns no commits', () async {
-        await scheduler.addCommits(<Commit>[]);
-        expect(db.values, isEmpty);
-      });
-
-      test('inserts all relevant fields of the commit', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        config.supportedBranchesValue = <String>['master'];
-        expect(db.values.values.whereType<Commit>().length, 0);
-        await scheduler.addCommits(createCommitList(<String>['1']));
-        expect(db.values.values.whereType<Commit>().length, 1);
-        final Commit commit = db.values.values.whereType<Commit>().single;
-        expect(commit.repository, 'flutter/flutter');
-        expect(commit.branch, 'master');
-        expect(commit.sha, '1');
-        expect(commit.timestamp, 1);
-        expect(commit.author, 'Username');
-        expect(commit.authorAvatarUrl, 'http://example.org/avatar.jpg');
-        expect(commit.message, 'commit message');
-      });
-
-      test('skips scheduling for unsupported repos', () async {
-        config.supportedBranchesValue = <String>['master'];
-        await scheduler.addCommits(createCommitList(<String>['1'], repo: 'not-supported'));
-        expect(db.values.values.whereType<Commit>().length, 0);
-      });
-
-      test('skips commits for which transaction commit fails', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        config.supportedBranchesValue = <String>['master'];
-
-        // Existing commits should not be duplicated.
-        final Commit commit = shaToCommit('1');
-        db.values[commit.key] = commit;
-
-        db.onCommit = (List<gcloud_db.Model<dynamic>> inserts, List<gcloud_db.Key<dynamic>> deletes) {
-          if (inserts.whereType<Commit>().where((Commit commit) => commit.sha == '3').isNotEmpty) {
-            throw StateError('Commit failed');
-          }
-        };
-        // Commits are expect from newest to oldest timestamps
-        await scheduler.addCommits(createCommitList(<String>['2', '3', '4']));
-        expect(db.values.values.whereType<Commit>().length, 3);
-        // The 2 new commits are scheduled 3 tasks, existing commit has none.
-        expect(db.values.values.whereType<Task>().length, 2 * 3);
-        // Check commits were added, but 3 was not
-        expect(db.values.values.whereType<Commit>().map<String>(toSha), containsAll(<String>['1', '2', '4']));
-        expect(db.values.values.whereType<Commit>().map<String>(toSha), isNot(contains('3')));
-      });
-
-      test('skips commits for which task transaction fails', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        config.supportedBranchesValue = <String>['master'];
-
-        // Existing commits should not be duplicated.
-        final Commit commit = shaToCommit('1');
-        db.values[commit.key] = commit;
-
-        db.onCommit = (List<gcloud_db.Model<dynamic>> inserts, List<gcloud_db.Key<dynamic>> deletes) {
-          if (inserts.whereType<Task>().where((Task task) => task.createTimestamp == 3).isNotEmpty) {
-            throw StateError('Task failed');
-          }
-        };
-        // Commits are expect from newest to oldest timestamps
-        await scheduler.addCommits(createCommitList(<String>['2', '3', '4']));
-        expect(db.values.values.whereType<Commit>().length, 3);
-        // The 2 new commits are scheduled 3 tasks, existing commit has none.
-        expect(db.values.values.whereType<Task>().length, 2 * 3);
-        // Check commits were added, but 3 was not
-        expect(db.values.values.whereType<Commit>().map<String>(toSha), containsAll(<String>['1', '2', '4']));
-        expect(db.values.values.whereType<Commit>().map<String>(toSha), isNot(contains('3')));
-      });
-
-      test('schedules cocoon based targets', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        final MockLuciBuildServiceV2 luciBuildService = MockLuciBuildServiceV2();
-        when(
-          luciBuildService.schedulePostsubmitBuilds(
-            commit: anyNamed('commit'),
-            toBeScheduled: captureAnyNamed('toBeScheduled'),
-          ),
-        ).thenAnswer((_) => Future<List<Tuple<Target, Task, int>>>.value(<Tuple<Target, Task, int>>[]));
-        buildStatusService = FakeBuildStatusService(
-          commitStatuses: <CommitStatus>[
-            CommitStatus(generateCommit(1, repo: 'engine', branch: 'main'), const <Stage>[]),
-          ],
-        );
-        scheduler = SchedulerV2(
-          cache: cache,
-          config: config,
-          buildStatusProvider: (_, __) => buildStatusService,
-          datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
-          githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-          httpClientProvider: () => httpClient,
-          luciBuildService: luciBuildService,
-        );
-
-        await scheduler.addCommits(createCommitList(<String>['1'], repo: 'engine', branch: 'main'));
-        final List<dynamic> captured = verify(
-          luciBuildService.schedulePostsubmitBuilds(
-            commit: anyNamed('commit'),
-            toBeScheduled: captureAnyNamed('toBeScheduled'),
-          ),
-        ).captured;
-        final List<dynamic> toBeScheduled = captured.first as List<dynamic>;
-        expect(toBeScheduled.length, 2);
-        final Iterable<Tuple<Target, Task, int>> tuples =
-            toBeScheduled.map((dynamic tuple) => tuple as Tuple<Target, Task, int>);
-        final Iterable<String> scheduledTargetNames =
-            tuples.map((Tuple<Target, Task, int> tuple) => tuple.second.name!);
-        expect(scheduledTargetNames, ['Linux A', 'Linux runIf']);
-        // Tasks triggered by cocoon are marked as in progress
-        final Iterable<Task> tasks = db.values.values.whereType<Task>();
-        expect(tasks.singleWhere((Task task) => task.name == 'Linux A').status, Task.statusInProgress);
-      });
-
-      test('schedules cocoon based targets - multiple batch requests', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        final MockBuildBucketV2Client mockBuildBucketV2Client = MockBuildBucketV2Client();
-        final FakeLuciBuildServiceV2 luciBuildServiceV2 = FakeLuciBuildServiceV2(
-          config: config,
-          buildBucketV2Client: mockBuildBucketV2Client,
-          gerritService: FakeGerritService(),
-          githubChecksUtil: mockGithubChecksUtil,
-          pubsub: pubsub,
-        );
-        when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output')))
-            .thenAnswer((_) async => generateCheckRun(1, name: 'Linux A'));
-
-        when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
-          return bbv2.ListBuildersResponse(
-            builders: [
-              bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux A')),
-              bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux runIf')),
-            ],
-          );
-        });
-        buildStatusService = FakeBuildStatusService(
-          commitStatuses: <CommitStatus>[
-            CommitStatus(generateCommit(1, repo: 'engine', branch: 'main'), const <Stage>[]),
-          ],
-        );
-        config.batchSizeValue = 1;
-        scheduler = SchedulerV2(
-          cache: cache,
-          config: config,
-          buildStatusProvider: (_, __) => buildStatusService,
-          datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
-          githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-          httpClientProvider: () => httpClient,
-          luciBuildService: luciBuildServiceV2,
-        );
-
-        await scheduler.addCommits(createCommitList(<String>['1'], repo: 'engine', branch: 'main'));
-        expect(pubsub.messages.length, 2);
-      });
-    });
-
-    group('add pull request', () {
-      test('creates expected commit', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        final PullRequest mergedPr = generatePullRequest();
-        await scheduler.addPullRequest(mergedPr);
-
-        expect(db.values.values.whereType<Commit>().length, 1);
-        final Commit commit = db.values.values.whereType<Commit>().single;
-        expect(commit.repository, 'flutter/flutter');
-        expect(commit.branch, 'master');
-        expect(commit.sha, 'abc');
-        expect(commit.timestamp, 1);
-        expect(commit.author, 'dash');
-        expect(commit.authorAvatarUrl, 'dashatar');
-        expect(commit.message, 'example message');
-
-        final List<dynamic> captured = verify(mockFirestoreService.writeViaTransaction(captureAny)).captured;
-        expect(captured.length, 1);
-        final List<Write> commitResponse = captured[0] as List<Write>;
-        expect(commitResponse.length, 4);
-      });
-
-      test('schedules tasks against merged PRs', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        final PullRequest mergedPr = generatePullRequest();
-        await scheduler.addPullRequest(mergedPr);
-
-        expect(db.values.values.whereType<Commit>().length, 1);
-        expect(db.values.values.whereType<Task>().length, 3);
-      });
-
-      test('guarantees scheduling of tasks against merged release branch PR', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        final PullRequest mergedPr = generatePullRequest(branch: 'flutter-3.2-candidate.5');
-        await scheduler.addPullRequest(mergedPr);
-
-        expect(db.values.values.whereType<Commit>().length, 1);
-        expect(db.values.values.whereType<Task>().length, 3);
-        // Ensure all tasks have been marked in progress
-        expect(db.values.values.whereType<Task>().where((Task task) => task.status == Task.statusNew), isEmpty);
-      });
-
-      test('guarantees scheduling of tasks against merged engine PR', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        final PullRequest mergedPr = generatePullRequest(
-          repo: Config.engineSlug.name,
-          branch: Config.defaultBranch(Config.engineSlug),
-        );
-        await scheduler.addPullRequest(mergedPr);
-
-        expect(db.values.values.whereType<Commit>().length, 1);
-        expect(db.values.values.whereType<Task>().length, 3);
-        // Ensure all tasks under cocoon scheduler have been marked in progress
-        expect(db.values.values.whereType<Task>().where((Task task) => task.status == Task.statusInProgress).length, 2);
-      });
-
-      test('Release candidate branch commit filters builders not in default branch', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        const String totCiYaml = r'''
-enabled_branches:
-  - main
-  - flutter-\d+\.\d+-candidate\.\d+
-targets:
-  - name: Linux A
-    properties:
-      custom: abc
-''';
-        httpClient = MockClient((http.Request request) async {
-          if (request.url.path == '/flutter/engine/abc/.ci.yaml') {
-            return http.Response(totCiYaml, HttpStatus.ok);
-          }
-          if (request.url.path == '/flutter/engine/1/.ci.yaml') {
-            return http.Response(singleCiYaml, HttpStatus.ok);
-          }
-          print(request.url.path);
-          throw Exception('Failed to find ${request.url.path}');
-        });
-        scheduler = SchedulerV2(
-          cache: cache,
-          config: config,
-          datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
-          buildStatusProvider: (_, __) => buildStatusService,
-          githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-          httpClientProvider: () => httpClient,
-          luciBuildService: FakeLuciBuildServiceV2(
-            config: config,
-            githubChecksUtil: mockGithubChecksUtil,
-            gerritService: FakeGerritService(
-              branchesValue: <String>['master', 'main'],
-            ),
-          ),
-        );
-
-        final PullRequest mergedPr = generatePullRequest(
-          repo: Config.engineSlug.name,
-          branch: 'flutter-3.10-candidate.1',
-        );
-        await scheduler.addPullRequest(mergedPr);
-
-        final List<Task> tasks = db.values.values.whereType<Task>().toList();
-        expect(db.values.values.whereType<Commit>().length, 1);
-        expect(tasks, hasLength(1));
-        expect(tasks.first.name, 'Linux A');
-        // Ensure all tasks under cocoon scheduler have been marked in progress
-        expect(db.values.values.whereType<Task>().where((Task task) => task.status == Task.statusInProgress).length, 1);
-      });
-
-      test('does not schedule tasks against non-merged PRs', () async {
-        final PullRequest notMergedPr = generatePullRequest(merged: false);
-        await scheduler.addPullRequest(notMergedPr);
-
-        expect(db.values.values.whereType<Commit>().map<String>(toSha).length, 0);
-        expect(db.values.values.whereType<Task>().length, 0);
-      });
-
-      test('does not schedule tasks against already added PRs', () async {
-        // Existing commits should not be duplicated.
-        final Commit commit = shaToCommit('1');
-        db.values[commit.key] = commit;
-
-        final PullRequest alreadyLandedPr = generatePullRequest(sha: '1');
-        await scheduler.addPullRequest(alreadyLandedPr);
-
-        expect(db.values.values.whereType<Commit>().map<String>(toSha).length, 1);
-        // No tasks should be scheduled as that is done on commit insert.
-        expect(db.values.values.whereType<Task>().length, 0);
-      });
-
-      test('creates expected commit from release branch PR', () async {
-        when(
-          mockFirestoreService.writeViaTransaction(
-            captureAny,
-          ),
-        ).thenAnswer((Invocation invocation) {
-          return Future<CommitResponse>.value(CommitResponse());
-        });
-        final PullRequest mergedPr = generatePullRequest(branch: '1.26');
-        await scheduler.addPullRequest(mergedPr);
-
-        expect(db.values.values.whereType<Commit>().length, 1);
-        final Commit commit = db.values.values.whereType<Commit>().single;
-        expect(commit.repository, 'flutter/flutter');
-        expect(commit.branch, '1.26');
-        expect(commit.sha, 'abc');
-        expect(commit.timestamp, 1);
-        expect(commit.author, 'dash');
-        expect(commit.authorAvatarUrl, 'dashatar');
-        expect(commit.message, 'example message');
-      });
-    });
-
-    group('process check run', () {
-      test('rerequested ci.yaml check retriggers presubmit', () async {
-        final MockGithubService mockGithubService = MockGithubService();
-        final MockGitHub mockGithubClient = MockGitHub();
-        buildStatusService =
-            FakeBuildStatusService(commitStatuses: <CommitStatus>[CommitStatus(generateCommit(1), const <Stage>[])]);
-        config = FakeConfig(
-          githubService: mockGithubService,
-          firestoreService: mockFirestoreService,
-        );
-        scheduler = SchedulerV2(
-          cache: cache,
-          config: config,
-          buildStatusProvider: (_, __) => buildStatusService,
-          githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-          httpClientProvider: () => httpClient,
-          luciBuildService: FakeLuciBuildServiceV2(
-            config: config,
-            githubChecksUtil: mockGithubChecksUtil,
-          ),
-        );
-        when(mockGithubService.github).thenReturn(mockGithubClient);
-        when(mockGithubService.searchIssuesAndPRs(any, any, sort: anyNamed('sort'), pages: anyNamed('pages')))
-            .thenAnswer((_) async => [generateIssue(3)]);
-        when(mockGithubChecksUtil.listCheckSuitesForRef(any, any, ref: anyNamed('ref'))).thenAnswer(
-          (_) async => [
-            // From check_run.check_suite.id in [checkRunString].
-            generateCheckSuite(668083231),
-          ],
-        );
-        when(mockGithubService.getPullRequest(any, any)).thenAnswer((_) async => generatePullRequest());
-        when(mockGithubService.listFiles(any)).thenAnswer((_) async => ['abc/def']);
-        when(
-          mockGithubChecksUtil.createCheckRun(
-            any,
-            any,
-            any,
-            any,
-            output: anyNamed('output'),
-          ),
-        ).thenAnswer((_) async {
-          return CheckRun.fromJson(const <String, dynamic>{
-            'id': 1,
-            'started_at': '2020-05-10T02:49:31Z',
-            'name': Scheduler.kCiYamlCheckName,
-            'check_suite': <String, dynamic>{'id': 2},
-          });
-        });
-        final Map<String, dynamic> checkRunEventJson = jsonDecode(checkRunString) as Map<String, dynamic>;
-        checkRunEventJson['check_run']['name'] = Scheduler.kCiYamlCheckName;
-        final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(checkRunEventJson);
-        expect(await scheduler.processCheckRun(checkRunEvent), true);
-        verify(
-          mockGithubChecksUtil.createCheckRun(
-            any,
-            any,
-            any,
-            Scheduler.kCiYamlCheckName,
-            output: anyNamed('output'),
-          ),
-        );
-        // Verfies Linux A was created
-        verify(mockGithubChecksUtil.createCheckRun(any, any, any, any)).called(1);
-      });
-
-      // test('rerequested presubmit check triggers presubmit build', () async {
-      //   // Note that we're not inserting any commits into the db, because
-      //   // only postsubmit commits are stored in the datastore.
-      //   config = FakeConfig(dbValue: db);
-      //   db = FakeDatastoreDB();
-
-      //   // Set up mock buildbucket to validate which bucket is requested.
-      //   final MockBuildBucketV2Client mockBuildbucket = MockBuildBucketV2Client();
-
-      //   when(mockBuildbucket.batch(any)).thenAnswer((i) async {
-      //     return FakeBuildBucketV2Client().batch(i.positionalArguments[0]);
-      //   });
-
-      //   when(mockBuildbucket.scheduleBuild(any, buildBucketUri: anyNamed('buildBucketUri')))
-      //       .thenAnswer((realInvocation) async {
-      //     final ScheduleBuildRequest scheduleBuildRequest = realInvocation.positionalArguments[0];
-      //     // Ensure this is an attempt to schedule a presubmit build by
-      //     // verifying that bucket == 'try'.
-      //     expect(scheduleBuildRequest.builderId.bucket, equals('try'));
-      //     return bbv2.Build(builder: bbv2.BuilderID(), id: Int64());
-      //   });
-
-      //   scheduler = SchedulerV2(
-      //     cache: cache,
-      //     config: config,
-      //     githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-      //     luciBuildService: FakeLuciBuildServiceV2(
-      //       config: config,
-      //       githubChecksUtil: mockGithubChecksUtil,
-      //       buildBucketV2Client: mockBuildbucket,
-      //     ),
-      //   );
-
-      //   final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(
-      //     jsonDecode(checkRunString) as Map<String, dynamic>,
-      //   );
-
-      //   expect(await scheduler.processCheckRun(checkRunEvent), true);
-
-      //   verify(mockBuildbucket.scheduleBuild(any, buildBucketUri: anyNamed('buildBucketUri'))).called(1);
-      //   verify(mockGithubChecksUtil.createCheckRun(any, any, any, any)).called(1);
-      // });
-
-//       test('rerequested postsubmit check triggers postsubmit build', () async {
-//         // Set up datastore with postsubmit entities matching [checkRunString].
-//         db = FakeDatastoreDB();
-//         config = FakeConfig(
-//           dbValue: db,
-//           postsubmitSupportedReposValue: {RepositorySlug('abc', 'cocoon')},
-//           firestoreService: mockFirestoreService,
-//         );
-//         final Commit commit = generateCommit(
-//           1,
-//           sha: '66d6bd9a3f79a36fe4f5178ccefbc781488a596c',
-//           branch: 'independent_agent',
-//           owner: 'abc',
-//           repo: 'cocoon',
-//         );
-//         final Commit commitToT = generateCommit(
-//           1,
-//           sha: '66d6bd9a3f79a36fe4f5178ccefbc781488a592c',
-//           branch: 'master',
-//           owner: 'abc',
-//           repo: 'cocoon',
-//         );
-//         config.db.values[commit.key] = commit;
-//         config.db.values[commitToT.key] = commitToT;
-//         final Task task = generateTask(1, name: 'test1', parent: commit);
-//         config.db.values[task.key] = task;
-
-//         // Set up ci.yaml with task name and branch name from [checkRunString].
-//         httpClient = MockClient((http.Request request) async {
-//           if (request.url.path.contains('.ci.yaml')) {
-//             return http.Response(
-//               r'''
-// enabled_branches:
-//   - independent_agent
-//   - master
-// targets:
-//   - name: test1
-// ''',
-//               200,
-//             );
-//           }
-//           throw Exception('Failed to find ${request.url.path}');
-//         });
-
-//         // Set up mock buildbucket to validate which bucket is requested.
-//         final MockBuildBucketV2Client mockBuildbucket = MockBuildBucketV2Client();
-//         when(mockBuildbucket.batch(any)).thenAnswer((i) async {
-//           return FakeBuildBucketV2Client().batch(i.positionalArguments[0]);
-//         });
-//         when(mockBuildbucket.scheduleBuild(any, buildBucketUri: anyNamed('buildBucketUri')))
-//             .thenAnswer((realInvocation) async {
-//           final ScheduleBuildRequest scheduleBuildRequest = realInvocation.positionalArguments[0];
-//           // Ensure this is an attempt to schedule a postsubmit build by
-//           // verifying that bucket == 'prod'.
-//           expect(scheduleBuildRequest.builderId.bucket, equals('prod'));
-//           return bbv2.Build(builder: bbv2.BuilderID(), id: Int64());
-//         });
-
-//         scheduler = SchedulerV2(
-//           cache: cache,
-//           config: config,
-//           githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-//           httpClientProvider: () => httpClient,
-//           luciBuildService: FakeLuciBuildServiceV2(
-//             config: config,
-//             githubChecksUtil: mockGithubChecksUtil,
-//             buildBucketV2Client: mockBuildbucket,
-//             gerritService: FakeGerritService(
-//               branchesValue: <String>['master', 'main'],
-//             ),
-//           ),
-//         );
-//         final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(
-//           jsonDecode(checkRunString) as Map<String, dynamic>,
-//         );
-//         expect(await scheduler.processCheckRun(checkRunEvent), true);
-//         verify(mockBuildbucket.scheduleBuild(any, buildBucketUri: anyNamed('buildBucketUri'))).called(1);
-//         verify(mockGithubChecksUtil.createCheckRun(any, any, any, any)).called(1);
-//       });
-
-      // test('rerequested does not fail on empty pull request list', () async {
-      //   when(mockGithubChecksUtil.createCheckRun(any, any, any, any)).thenAnswer((_) async {
-      //     return CheckRun.fromJson(const <String, dynamic>{
-      //       'id': 1,
-      //       'started_at': '2020-05-10T02:49:31Z',
-      //       'check_suite': <String, dynamic>{'id': 2},
-      //     });
-      //   });
-      //   final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(
-      //     jsonDecode(checkRunWithEmptyPullRequests) as Map<String, dynamic>,
-      //   );
-      //   expect(await scheduler.processCheckRun(checkRunEvent), true);
-      //   verify(mockGithubChecksUtil.createCheckRun(any, any, any, any)).called(1);
-      // });
-    });
-
-    group('presubmit', () {
-      test('gets only enabled .ci.yaml builds', () async {
-        httpClient = MockClient((http.Request request) async {
-          if (request.url.path.contains('.ci.yaml')) {
-            return http.Response(
-              '''
-enabled_branches:
-  - master
-targets:
-  - name: Linux A
-    presubmit: true
-    scheduler: luci
-  - name: Linux B
-    scheduler: luci
-    enabled_branches:
-      - stable
-    presubmit: true
-  - name: Linux C
-    scheduler: luci
-    enabled_branches:
-      - master
-    presubmit: true
-  - name: Linux D
-    scheduler: luci
-    bringup: true
-    presubmit: true
-  - name: Google-internal roll
-    scheduler: google_internal
-    enabled_branches:
-      - master
-    presubmit: true
-          ''',
-              200,
-            );
-          }
-          throw Exception('Failed to find ${request.url.path}');
-        });
-        final List<Target> presubmitTargets = await scheduler.getPresubmitTargets(pullRequest);
-        expect(
-          presubmitTargets.map((Target target) => target.value.name).toList(),
-          containsAll(<String>['Linux A', 'Linux C']),
-        );
-      });
-
-      group('treats postsubmit as presubmit if a label is present', () {
-        final IssueLabel runAllTests = IssueLabel(name: 'test: all');
-        setUp(() async {
-          httpClient = MockClient((http.Request request) async {
-            if (request.url.path.contains('.ci.yaml')) {
-              return http.Response(
-                '''
-  enabled_branches:
-    - main
-    - master
-  targets:
-    - name: Linux Presubmit
-      presubmit: true
-      scheduler: luci
-    - name: Linux Conditional Presubmit (runIf)
-      presubmit: true
-      scheduler: luci
-      runIf:
-        - .ci.yaml
-        - DEPS
-        - dev/run_if/**
-    - name: Linux Conditional Presubmit (runIfNot)
-      presubmit: true
-      scheduler: luci
-      runIfNot:
-        - dev/run_if_not/**
-    - name: Linux Postsubmit
-      presubmit: false
-      scheduler: luci
-    - name: Linux Cache
-      presubmit: false
-      scheduler: luci
-      properties:
-        cache_name: "builder"
-  ''',
-                200,
-              );
-            }
-            throw Exception('Failed to find ${request.url.path}');
-          });
-        });
-
-        test('with a specific label in the flutter/engine repo', () async {
-          final enginePr = generatePullRequest(
-            branch: Config.defaultBranch(Config.engineSlug),
-            labels: <IssueLabel>[runAllTests],
-            repo: Config.engineSlug.name,
-          );
-          final List<Target> presubmitTargets = await scheduler.getPresubmitTargets(enginePr);
-          expect(
-            presubmitTargets.map((Target target) => target.value.name).toList(),
-            <String>[
-              // Always runs.
-              'Linux Presubmit',
-              // test: all label is present, so runIf is skipped.
-              'Linux Conditional Presubmit (runIf)',
-              'Linux Conditional Presubmit (runIfNot)',
-              // test: all label is present, so postsubmit is treated as presubmit.
-              'Linux Postsubmit',
-            ],
-          );
-        });
-
-        test('with a specific label in the flutter/flutter repo', () async {
-          final frameworkPr = generatePullRequest(
-            branch: Config.defaultBranch(Config.flutterSlug),
-            labels: <IssueLabel>[runAllTests],
-            repo: Config.flutterSlug.name,
-          );
-          final List<Target> presubmitTargets = await scheduler.getPresubmitTargets(frameworkPr);
-          expect(
-            presubmitTargets.map((Target target) => target.value.name).toList(),
-            <String>[
-              // Always runs.
-              'Linux Presubmit',
-              'Linux Conditional Presubmit (runIfNot)',
-            ],
-          );
-        });
-
-        test('without a specific label', () async {
-          final enginePr = generatePullRequest(
-            branch: Config.defaultBranch(Config.engineSlug),
-            labels: <IssueLabel>[],
-            repo: Config.engineSlug.name,
-          );
-          final List<Target> presubmitTargets = await scheduler.getPresubmitTargets(enginePr);
-          expect(
-            presubmitTargets.map((Target target) => target.value.name).toList(),
-            (<String>[
-              // Always runs.
-              'Linux Presubmit',
-              'Linux Conditional Presubmit (runIfNot)',
-            ]),
-          );
-        });
-      });
-
-      test('checks for release branches', () async {
-        const String branch = 'flutter-1.24-candidate.1';
-        httpClient = MockClient((http.Request request) async {
-          if (request.url.path.contains('.ci.yaml')) {
-            return http.Response(
-              '''
-enabled_branches:
-  - master
-targets:
-  - name: Linux A
-    presubmit: true
-    scheduler: luci
-          ''',
-              200,
-            );
-          }
-          throw Exception('Failed to find ${request.url.path}');
-        });
-        expect(
-          scheduler.getPresubmitTargets(generatePullRequest(branch: branch)),
-          throwsA(predicate((Exception e) => e.toString().contains('$branch is not enabled'))),
-        );
-      });
-
-      test('checks for release branch regex', () async {
-        const String branch = 'flutter-1.24-candidate.1';
-        httpClient = MockClient((http.Request request) async {
-          if (request.url.path.contains('.ci.yaml')) {
-            return http.Response(
-              '''
-enabled_branches:
-  - main
-  - master
-  - flutter-\\d+.\\d+-candidate.\\d+
-targets:
-  - name: Linux A
-    scheduler: luci
-          ''',
-              200,
-            );
-          }
-          throw Exception('Failed to find ${request.url.path}');
-        });
-        final List<Target> targets = await scheduler.getPresubmitTargets(generatePullRequest(branch: branch));
-        expect(targets.single.value.name, 'Linux A');
-      });
-
-      test('triggers expected presubmit build checks', () async {
-        await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
-        expect(
-          verify(mockGithubChecksUtil.createCheckRun(any, any, any, captureAny, output: captureAnyNamed('output')))
-              .captured,
-          <dynamic>[
-            Scheduler.kCiYamlCheckName,
-            const CheckRunOutput(
-              title: Scheduler.kCiYamlCheckName,
-              summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
-            ),
-            'Linux A',
-            null,
-            // Linux runIf is not run as this is for tip of tree and the files weren't affected
-          ],
-        );
-      });
-
-      test('Do not schedule other targets on revert request.', () async {
-        final PullRequest releasePullRequest = generatePullRequest(
-          labels: [IssueLabel(name: 'revert of')],
-        );
-
-        releasePullRequest.user = User(login: 'auto-submit[bot]');
-
-        await scheduler.triggerPresubmitTargets(pullRequest: releasePullRequest);
-        expect(
-          verify(mockGithubChecksUtil.createCheckRun(any, any, any, captureAny, output: captureAnyNamed('output')))
-              .captured,
-          <dynamic>[
-            Scheduler.kCiYamlCheckName,
-            // No other targets should be created.
-            const CheckRunOutput(
-              title: Scheduler.kCiYamlCheckName,
-              summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
-            ),
-          ],
-        );
-      });
-
-      test('filters out presubmit targets that do not exist in main and do not filter targets not in main', () async {
-        const String singleCiYaml = r'''
-enabled_branches:
-  - master
-  - main
-  - flutter-\d+\.\d+-candidate\.\d+
-targets:
-  - name: Linux A
-    properties:
-      custom: abc
-  - name: Linux B
-    enabled_branches:
-      - flutter-\d+\.\d+-candidate\.\d+
-    scheduler: luci
-  - name: Linux C
-    enabled_branches:
-      - main
-      - flutter-\d+\.\d+-candidate\.\d+
-    scheduler: luci
-''';
-        const String totCiYaml = r'''
-enabled_branches:
-  - main
-  - flutter-\d+\.\d+-candidate\.\d+
-targets:
-  - name: Linux A
-    bringup: true
-    properties:
-      custom: abc
-''';
-        httpClient = MockClient((http.Request request) async {
-          if (request.url.path == '/flutter/engine/1/.ci.yaml') {
-            return http.Response(totCiYaml, HttpStatus.ok);
-          }
-          if (request.url.path == '/flutter/engine/abc/.ci.yaml') {
-            return http.Response(singleCiYaml, HttpStatus.ok);
-          }
-          print(request.url.path);
-          throw Exception('Failed to find ${request.url.path}');
-        });
-        scheduler = SchedulerV2(
-          cache: cache,
-          config: config,
-          datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
-          buildStatusProvider: (_, __) => buildStatusService,
-          githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-          httpClientProvider: () => httpClient,
-          luciBuildService: FakeLuciBuildServiceV2(
-            config: config,
-            githubChecksUtil: mockGithubChecksUtil,
-            gerritService: FakeGerritService(
-              branchesValue: <String>['master', 'main'],
-            ),
-          ),
-        );
-        final PullRequest pr = generatePullRequest(
-          repo: Config.engineSlug.name,
-          branch: 'flutter-3.10-candidate.1',
-        );
-        final List<Target> targets = await scheduler.getPresubmitTargets(pr);
-        expect(
-          targets.map((Target target) => target.value.name).toList(),
-          containsAll(<String>['Linux A', 'Linux B']),
-        );
-      });
-
-      test('triggers all presubmit build checks when diff cannot be found', () async {
-        final MockGithubService mockGithubService = MockGithubService();
-        when(mockGithubService.listFiles(pullRequest))
-            .thenThrow(GitHubError(GitHub(), 'Requested Resource was Not Found'));
-        buildStatusService =
-            FakeBuildStatusService(commitStatuses: <CommitStatus>[CommitStatus(generateCommit(1), const <Stage>[])]);
-        scheduler = SchedulerV2(
-          cache: cache,
-          config: FakeConfig(
-            // tabledataResource: tabledataResource,
-            dbValue: db,
-            githubService: mockGithubService,
-            githubClient: MockGitHub(),
-            firestoreService: mockFirestoreService,
-          ),
-          buildStatusProvider: (_, __) => buildStatusService,
-          datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
-          githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-          httpClientProvider: () => httpClient,
-          luciBuildService: FakeLuciBuildServiceV2(
-            config: config,
-            githubChecksUtil: mockGithubChecksUtil,
-            gerritService: FakeGerritService(branchesValue: <String>['master']),
-          ),
-        );
-        await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
-        expect(
-          verify(mockGithubChecksUtil.createCheckRun(any, any, any, captureAny, output: captureAnyNamed('output')))
-              .captured,
-          <dynamic>[
-            Scheduler.kCiYamlCheckName,
-            const CheckRunOutput(
-              title: Scheduler.kCiYamlCheckName,
-              summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
-            ),
-            'Linux A',
-            null,
-            // runIf requires a diff in dev, so an error will cause it to be triggered
-            'Linux runIf',
-            null,
-          ],
-        );
-      });
-
-      test('triggers all presubmit targets on release branch pull request', () async {
-        final PullRequest releasePullRequest = generatePullRequest(
-          branch: 'flutter-1.24-candidate.1',
-        );
-        await scheduler.triggerPresubmitTargets(pullRequest: releasePullRequest);
-        expect(
-          verify(mockGithubChecksUtil.createCheckRun(any, any, any, captureAny, output: captureAnyNamed('output')))
-              .captured,
-          <dynamic>[
-            Scheduler.kCiYamlCheckName,
-            const CheckRunOutput(
-              title: Scheduler.kCiYamlCheckName,
-              summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
-            ),
-            'Linux A',
-            null,
-            'Linux runIf',
-            null,
-          ],
-        );
-      });
-
-      test('ci.yaml validation passes with default config', () async {
-        when(mockGithubChecksUtil.getCheckRun(any, any, any))
-            .thenAnswer((Invocation invocation) async => createCheckRun(id: 0));
-        await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
-        expect(
-          verify(
-            mockGithubChecksUtil.updateCheckRun(
-              any,
-              any,
-              any,
-              status: captureAnyNamed('status'),
-              conclusion: captureAnyNamed('conclusion'),
-              output: anyNamed('output'),
-            ),
-          ).captured,
-          <dynamic>[CheckRunStatus.completed, CheckRunConclusion.success],
-        );
-      });
-
-      test('ci.yaml validation fails with empty config', () async {
-        httpClient = MockClient((http.Request request) async {
-          if (request.url.path.contains('.ci.yaml')) {
-            return http.Response('', 200);
-          }
-          throw Exception('Failed to find ${request.url.path}');
-        });
-        await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
-        expect(
-          verify(
-            mockGithubChecksUtil.updateCheckRun(
-              any,
-              any,
-              any,
-              status: captureAnyNamed('status'),
-              conclusion: captureAnyNamed('conclusion'),
-              output: anyNamed('output'),
-            ),
-          ).captured,
-          <dynamic>[CheckRunStatus.completed, CheckRunConclusion.failure],
-        );
-      });
-
-      test('ci.yaml validation fails on not enabled branch', () async {
-        final PullRequest pullRequest = generatePullRequest(branch: 'not-valid');
-        await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
-        expect(
-          verify(
-            mockGithubChecksUtil.updateCheckRun(
-              any,
-              any,
-              any,
-              status: captureAnyNamed('status'),
-              conclusion: captureAnyNamed('conclusion'),
-              output: anyNamed('output'),
-            ),
-          ).captured,
-          <dynamic>[CheckRunStatus.completed, CheckRunConclusion.failure],
-        );
-      });
-
-      test('ci.yaml validation fails with config with unknown dependencies', () async {
-        httpClient = MockClient((http.Request request) async {
-          if (request.url.path.contains('.ci.yaml')) {
-            return http.Response(
-              '''
-enabled_branches:
-  - master
-targets:
-  - name: A
-    builder: Linux A
-    dependencies:
-      - B
-          ''',
-              200,
-            );
-          }
-          throw Exception('Failed to find ${request.url.path}');
-        });
-        await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
-        expect(
-          verify(
-            mockGithubChecksUtil.updateCheckRun(
-              any,
-              any,
-              any,
-              status: anyNamed('status'),
-              conclusion: anyNamed('conclusion'),
-              output: captureAnyNamed('output'),
-            ),
-          ).captured.first.text,
-          'FormatException: ERROR: A depends on B which does not exist',
-        );
-      });
-
-      // test('retries only triggers failed builds only', () async {
-      //   final MockBuildBucketV2Client mockBuildbucket = MockBuildBucketV2Client();
-      //   buildStatusService =
-      //       FakeBuildStatusService(commitStatuses: <CommitStatus>[CommitStatus(generateCommit(1), const <Stage>[])]);
-      //   final FakePubSub pubsub = FakePubSub();
-      //   scheduler = SchedulerV2(
-      //     cache: cache,
-      //     config: config,
-      //     datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
-      //     githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-      //     buildStatusProvider: (_, __) => buildStatusService,
-      //     httpClientProvider: () => httpClient,
-      //     luciBuildService: FakeLuciBuildServiceV2(
-      //       config: config,
-      //       githubChecksUtil: mockGithubChecksUtil,
-      //       buildBucketV2Client: mockBuildbucket,
-      //       gerritService: FakeGerritService(branchesValue: <String>['master']),
-      //       pubsub: pubsub,
-      //     ),
-      //   );
-      //   when(mockBuildbucket.batch(any)).thenAnswer(
-      //     (_) async => bbv2.BatchResponse(
-      //       responses: <bbv2.BatchResponse_Response>[
-      //         bbv2.BatchResponse_Response(
-      //           searchBuilds: bbv2.SearchBuildsResponse(
-      //             builds: <bbv2.Build>[
-      //               generateBuild(1000, name: 'Linux', bucket: 'try'),
-      //               generateBuild(2000, name: 'Linux Coverage', bucket: 'try'),
-      //               generateBuild(3000, name: 'Mac', bucket: 'try', status: Status.scheduled),
-      //               generateBuild(4000, name: 'Windows', bucket: 'try', status: Status.started),
-      //               generateBuild(5000, name: 'Linux A', bucket: 'try', status: Status.failure),
-      //             ],
-      //           ),
-      //         ),
-      //       ],
-      //     ),
-      //   );
-      //   when(mockBuildbucket.scheduleBuild(any))
-      //       .thenAnswer((_) async => generateBuild(5001, name: 'Linux A', bucket: 'try', status: Status.scheduled));
-      //   // Only Linux A should be retried
-      //   final Map<String, CheckRun> checkRuns = <String, CheckRun>{
-      //     'Linux': createCheckRun(name: 'Linux', id: 100),
-      //     'Linux Coverage': createCheckRun(name: 'Linux Coverage', id: 200),
-      //     'Mac': createCheckRun(name: 'Mac', id: 300, status: CheckRunStatus.queued),
-      //     'Windows': createCheckRun(name: 'Windows', id: 400, status: CheckRunStatus.inProgress),
-      //     'Linux A': createCheckRun(name: 'Linux A', id: 500),
-      //   };
-      //   when(mockGithubChecksUtil.allCheckRuns(any, any)).thenAnswer((_) async {
-      //     return checkRuns;
-      //   });
-
-      //   final CheckSuiteEvent checkSuiteEvent =
-      //       CheckSuiteEvent.fromJson(jsonDecode(checkSuiteTemplate('rerequested')) as Map<String, dynamic>);
-      //   await scheduler.retryPresubmitTargets(
-      //     pullRequest: pullRequest,
-      //     checkSuiteEvent: checkSuiteEvent,
-      //   );
-
-      //   expect(pubsub.messages.length, 1);
-      //   final BatchRequest batchRequest = pubsub.messages.single as BatchRequest;
-      //   expect(batchRequest.requests!.length, 1);
-      //   // Schedule build should have been sent
-      //   expect(batchRequest.requests!.single.scheduleBuild, isNotNull);
-      //   final ScheduleBuildRequest scheduleBuildRequest = batchRequest.requests!.single.scheduleBuild!;
-      //   // Verify expected parameters to schedule build
-      //   expect(scheduleBuildRequest.builderId.builder, 'Linux A');
-      //   expect(scheduleBuildRequest.properties!['custom'], 'abc');
-      // });
-
-      // test('pass github_build_label to properties', () async {
-      //   final MockBuildBucketClient mockBuildbucket = MockBuildBucketClient();
-      //   buildStatusService =
-      //       FakeBuildStatusService(commitStatuses: <CommitStatus>[CommitStatus(generateCommit(1), const <Stage>[])]);
-      //   final FakePubSub pubsub = FakePubSub();
-      //   scheduler = Scheduler(
-      //     cache: cache,
-      //     config: config,
-      //     datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
-      //     githubChecksService: GithubChecksService(config, githubChecksUtil: mockGithubChecksUtil),
-      //     buildStatusProvider: (_, __) => buildStatusService,
-      //     httpClientProvider: () => httpClient,
-      //     luciBuildService: FakeLuciBuildService(
-      //       config: config,
-      //       githubChecksUtil: mockGithubChecksUtil,
-      //       buildbucket: mockBuildbucket,
-      //       gerritService: FakeGerritService(branchesValue: <String>['master']),
-      //       pubsub: pubsub,
-      //     ),
-      //   );
-      //   when(mockBuildbucket.batch(any)).thenAnswer(
-      //     (_) async => BatchResponse(
-      //       responses: <Response>[
-      //         Response(
-      //           searchBuilds: SearchBuildsResponse(
-      //             builds: <Build>[
-      //               generateBuild(1000, name: 'Linux', bucket: 'try'),
-      //               generateBuild(2000, name: 'Linux Coverage', bucket: 'try'),
-      //               generateBuild(3000, name: 'Mac', bucket: 'try', status: Status.scheduled),
-      //               generateBuild(4000, name: 'Windows', bucket: 'try', status: Status.started),
-      //               generateBuild(5000, name: 'Linux A', bucket: 'try', status: Status.failure),
-      //             ],
-      //           ),
-      //         ),
-      //       ],
-      //     ),
-      //   );
-      //   when(mockBuildbucket.scheduleBuild(any))
-      //       .thenAnswer((_) async => generateBuild(5001, name: 'Linux A', bucket: 'try', status: Status.scheduled));
-      //   // Only Linux A should be retried
-      //   final Map<String, CheckRun> checkRuns = <String, CheckRun>{
-      //     'Linux': createCheckRun(name: 'Linux', id: 100),
-      //     'Linux Coverage': createCheckRun(name: 'Linux Coverage', id: 200),
-      //     'Mac': createCheckRun(name: 'Mac', id: 300, status: CheckRunStatus.queued),
-      //     'Windows': createCheckRun(name: 'Windows', id: 400, status: CheckRunStatus.inProgress),
-      //     'Linux A': createCheckRun(name: 'Linux A', id: 500),
-      //   };
-      //   when(mockGithubChecksUtil.allCheckRuns(any, any)).thenAnswer((_) async {
-      //     return checkRuns;
-      //   });
-
-      //   final CheckSuiteEvent checkSuiteEvent =
-      //       CheckSuiteEvent.fromJson(jsonDecode(checkSuiteTemplate('rerequested')) as Map<String, dynamic>);
-      //   await scheduler.retryPresubmitTargets(
-      //     pullRequest: pullRequest,
-      //     checkSuiteEvent: checkSuiteEvent,
-      //   );
-
-      //   expect(pubsub.messages.length, 1);
-      //   final BatchRequest batchRequest = pubsub.messages.single as BatchRequest;
-      //   expect(batchRequest.requests!.length, 1);
-      //   // Schedule build should have been sent
-      //   expect(batchRequest.requests!.single.scheduleBuild, isNotNull);
-      //   final ScheduleBuildRequest scheduleBuildRequest = batchRequest.requests!.single.scheduleBuild!;
-      //   // Verify expected parameters to schedule build
-      //   expect(scheduleBuildRequest.builderId.builder, 'Linux A');
-      //   expect(scheduleBuildRequest.properties!['custom'], 'abc');
-      // });
-
-      test('triggers only specificed targets', () async {
-        final List<Target> presubmitTargets = <Target>[generateTarget(1), generateTarget(2)];
-        final List<Target> presubmitTriggerTargets = scheduler.getTriggerList(presubmitTargets, <String>['Linux 1']);
-        expect(presubmitTriggerTargets.length, 1);
-      });
-
-      test('triggers all presubmit targets when trigger list is null', () async {
-        final List<Target> presubmitTargets = <Target>[generateTarget(1), generateTarget(2)];
-        final List<Target> presubmitTriggerTargets = scheduler.getTriggerList(presubmitTargets, null);
-        expect(presubmitTriggerTargets.length, 2);
-      });
-
-      test('triggers all presubmit targets when trigger list is empty', () async {
-        final List<Target> presubmitTargets = <Target>[generateTarget(1), generateTarget(2)];
-        final List<Target> presubmitTriggerTargets = scheduler.getTriggerList(presubmitTargets, <String>[]);
-        expect(presubmitTriggerTargets.length, 2);
-      });
-
-      test('triggers only targets that are contained in the trigger list', () async {
-        final List<Target> presubmitTargets = <Target>[generateTarget(1), generateTarget(2)];
-        final List<Target> presubmitTriggerTargets =
-            scheduler.getTriggerList(presubmitTargets, <String>['Linux 1', 'Linux 3']);
-        expect(presubmitTriggerTargets.length, 1);
-        expect(presubmitTargets[0].value.name, 'Linux 1');
-      });
-    });
-  });
-}
-
-CheckRun createCheckRun({String? name, required int id, CheckRunStatus status = CheckRunStatus.completed}) {
-  final int externalId = id * 2;
-  final String checkRunJson =
-      '{"name": "$name", "id": $id, "external_id": "{$externalId}", "status": "$status", "started_at": "2020-05-10T02:49:31Z", "head_sha": "the_sha", "check_suite": {"id": 456}}';
-  return CheckRun.fromJson(jsonDecode(checkRunJson) as Map<String, dynamic>);
-}
-
-String toSha(Commit commit) => commit.sha!;
-
-int toTimestamp(Commit commit) => commit.timestamp!;
diff --git a/app_dart/test/src/service/fake_luci_build_service.dart b/app_dart/test/src/service/fake_luci_build_service.dart
index 196447a..6650085 100644
--- a/app_dart/test/src/service/fake_luci_build_service.dart
+++ b/app_dart/test/src/service/fake_luci_build_service.dart
@@ -4,7 +4,6 @@
 
 import 'package:cocoon_service/src/foundation/github_checks_util.dart';
 import 'package:cocoon_service/src/request_handling/pubsub.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
 import 'package:cocoon_service/src/service/buildbucket.dart';
 import 'package:cocoon_service/src/service/cache_service.dart';
 import 'package:cocoon_service/src/service/gerrit_service.dart';
@@ -12,7 +11,6 @@
 
 import '../request_handling/fake_pubsub.dart';
 import '../utilities/mocks.dart';
-import 'fake_build_bucket_v2_client.dart';
 import 'fake_buildbucket.dart';
 import 'fake_gerrit_service.dart';
 
@@ -21,14 +19,12 @@
   FakeLuciBuildService({
     required super.config,
     BuildBucketClient? buildbucket,
-    BuildBucketV2Client? buildBucketV2Client,
     GithubChecksUtil? githubChecksUtil,
     GerritService? gerritService,
     PubSub? pubsub,
   }) : super(
           cache: CacheService(inMemory: true),
           buildBucketClient: buildbucket ?? FakeBuildBucketClient(),
-          buildBucketV2Client: buildBucketV2Client ?? FakeBuildBucketV2Client(),
           githubChecksUtil: githubChecksUtil ?? MockGithubChecksUtil(),
           gerritService: gerritService ?? FakeGerritService(),
           pubsub: pubsub ?? FakePubSub(),
diff --git a/app_dart/test/src/service/fake_luci_build_service_v2.dart b/app_dart/test/src/service/fake_luci_build_service_v2.dart
deleted file mode 100644
index 9e1e8ce..0000000
--- a/app_dart/test/src/service/fake_luci_build_service_v2.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2021 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/src/foundation/github_checks_util.dart';
-import 'package:cocoon_service/src/request_handling/pubsub.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
-import 'package:cocoon_service/src/service/cache_service.dart';
-import 'package:cocoon_service/src/service/gerrit_service.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-
-import '../request_handling/fake_pubsub.dart';
-import '../utilities/mocks.dart';
-import 'fake_build_bucket_v2_client.dart';
-import 'fake_gerrit_service.dart';
-
-/// Fake [LuciBuildService] for use in tests.
-class FakeLuciBuildServiceV2 extends LuciBuildServiceV2 {
-  FakeLuciBuildServiceV2({
-    required super.config,
-    BuildBucketV2Client? buildBucketV2Client,
-    GithubChecksUtil? githubChecksUtil,
-    GerritService? gerritService,
-    PubSub? pubsub,
-  }) : super(
-          cache: CacheService(inMemory: true),
-          buildBucketV2Client: buildBucketV2Client ?? FakeBuildBucketV2Client(),
-          githubChecksUtil: githubChecksUtil ?? MockGithubChecksUtil(),
-          gerritService: gerritService ?? FakeGerritService(),
-          pubsub: pubsub ?? FakePubSub(),
-        );
-}
diff --git a/app_dart/test/src/service/fake_scheduler_v2.dart b/app_dart/test/src/service/fake_scheduler_v2.dart
deleted file mode 100644
index d185218..0000000
--- a/app_dart/test/src/service/fake_scheduler_v2.dart
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright 2021 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/src/foundation/github_checks_util.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/ci_yaml/ci_yaml.dart';
-import 'package:cocoon_service/src/model/proto/protos.dart' as pb;
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
-import 'package:cocoon_service/src/service/cache_service.dart';
-import 'package:cocoon_service/src/service/config.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:github/github.dart';
-import 'package:retry/retry.dart';
-
-import '../utilities/entity_generators.dart';
-import 'fake_luci_build_service_v2.dart';
-
-/// Fake for [Scheduler] to use for tests that rely on it.
-class FakeSchedulerV2 extends SchedulerV2 {
-  FakeSchedulerV2({
-    this.ciYaml,
-    LuciBuildServiceV2? luciBuildService,
-    BuildBucketV2Client? buildbucket,
-    required super.config,
-    GithubChecksUtil? githubChecksUtil,
-  }) : super(
-          cache: CacheService(inMemory: true),
-          githubChecksService: GithubChecksServiceV2(
-            config,
-            githubChecksUtil: githubChecksUtil,
-          ),
-          luciBuildService: luciBuildService ??
-              FakeLuciBuildServiceV2(
-                config: config,
-                buildBucketV2Client: buildbucket,
-                githubChecksUtil: githubChecksUtil,
-              ),
-        );
-
-  final CiYaml _defaultConfig = emptyConfig;
-
-  /// [CiYaml] value to be injected on [getCiYaml].
-  CiYaml? ciYaml;
-
-  @override
-  Future<CiYaml> getCiYaml(
-    Commit commit, {
-    CiYaml? totCiYaml,
-    RetryOptions? retryOptions,
-    bool validate = false,
-  }) async =>
-      ciYaml ?? _defaultConfig;
-
-  @override
-  Future<Commit> generateTotCommit({required String branch, required RepositorySlug slug}) async {
-    return generateCommit(1);
-  }
-
-  int cancelPreSubmitTargetsCallCnt = 0;
-
-  int get cancelPreSubmitTargetsCallCount => cancelPreSubmitTargetsCallCnt;
-
-  void resetCancelPreSubmitTargetsCallCount() => cancelPreSubmitTargetsCallCnt = 0;
-
-  @override
-  Future<void> cancelPreSubmitTargets({
-    required PullRequest pullRequest,
-    String reason = 'Newer commit available',
-  }) async {
-    await super.cancelPreSubmitTargets(pullRequest: pullRequest);
-    cancelPreSubmitTargetsCallCnt++;
-  }
-
-  int triggerPresubmitTargetsCnt = 0;
-
-  int get triggerPresubmitTargetsCallCount => triggerPresubmitTargetsCnt;
-
-  void resetTriggerPresubmitTargetsCallCount() => triggerPresubmitTargetsCnt = 0;
-
-  @override
-  Future<void> triggerPresubmitTargets({
-    required PullRequest pullRequest,
-    String reason = 'Newer commit available',
-    List<String>? builderTriggerList,
-  }) async {
-    await super.triggerPresubmitTargets(pullRequest: pullRequest);
-    triggerPresubmitTargetsCnt++;
-  }
-
-  int addPullRequestCallCnt = 0;
-
-  int get addPullRequestCallCount {
-    return addPullRequestCallCnt;
-  }
-
-  void resetAddPullRequestCallCount() {
-    addPullRequestCallCnt = 0;
-  }
-
-  @override
-  Future<void> addPullRequest(
-    PullRequest pr,
-  ) async {
-    await super.addPullRequest(pr);
-    addPullRequestCallCnt++;
-  }
-}
-
-final CiYaml emptyConfig = CiYaml(
-  slug: Config.flutterSlug,
-  branch: Config.defaultBranch(Config.flutterSlug),
-  config: pb.SchedulerConfig(
-    enabledBranches: <String>[
-      Config.defaultBranch(Config.flutterSlug),
-    ],
-    targets: <pb.Target>[
-      pb.Target(
-        name: 'Linux A',
-        scheduler: pb.SchedulerSystem.luci,
-      ),
-    ],
-  ),
-);
-
-CiYaml exampleConfig = CiYaml(
-  slug: Config.flutterSlug,
-  branch: Config.defaultBranch(Config.flutterSlug),
-  config: pb.SchedulerConfig(
-    enabledBranches: <String>[
-      Config.defaultBranch(Config.flutterSlug),
-    ],
-    targets: <pb.Target>[
-      pb.Target(
-        name: 'Linux A',
-        scheduler: pb.SchedulerSystem.luci,
-      ),
-      pb.Target(
-        name: 'Mac A',
-        scheduler: pb.SchedulerSystem.luci,
-      ),
-      pb.Target(
-        name: 'Windows A',
-        scheduler: pb.SchedulerSystem.luci,
-      ),
-      pb.Target(
-        name: 'Google Internal Roll',
-        presubmit: false,
-        postsubmit: true,
-        scheduler: pb.SchedulerSystem.google_internal,
-      ),
-    ],
-  ),
-);
-
-CiYaml exampleBackfillConfig = CiYaml(
-  slug: Config.flutterSlug,
-  branch: Config.defaultBranch(Config.flutterSlug),
-  config: pb.SchedulerConfig(
-    enabledBranches: <String>[
-      Config.defaultBranch(Config.flutterSlug),
-    ],
-    targets: <pb.Target>[
-      pb.Target(
-        name: 'Linux A',
-        scheduler: pb.SchedulerSystem.luci,
-        postsubmit: true,
-        properties: {'backfill': 'true'},
-      ),
-      pb.Target(
-        name: 'Mac A',
-        scheduler: pb.SchedulerSystem.luci,
-        postsubmit: true,
-      ),
-      pb.Target(
-        name: 'Windows A',
-        scheduler: pb.SchedulerSystem.luci,
-        postsubmit: true,
-        properties: {'backfill': 'false'},
-      ),
-    ],
-  ),
-);
-
-CiYaml examplePresubmitRescheduleConfig = CiYaml(
-  slug: Config.flutterSlug,
-  branch: Config.defaultBranch(Config.flutterSlug),
-  config: pb.SchedulerConfig(
-    enabledBranches: <String>[
-      Config.defaultBranch(Config.flutterSlug),
-    ],
-    targets: <pb.Target>[
-      pb.Target(
-        name: 'Linux A',
-      ),
-      pb.Target(
-        name: 'Linux B',
-        postsubmit: true,
-        properties: {'presubmit_retry': '1'},
-      ),
-    ],
-  ),
-);
-
-final CiYaml batchPolicyConfig = CiYaml(
-  slug: Config.flutterSlug,
-  branch: Config.defaultBranch(Config.flutterSlug),
-  config: pb.SchedulerConfig(
-    enabledBranches: <String>[
-      Config.defaultBranch(Config.flutterSlug),
-    ],
-    targets: <pb.Target>[
-      pb.Target(
-        name: 'Linux_android A',
-      ),
-      pb.Target(
-        name: 'Linux_android B',
-      ),
-      pb.Target(
-        name: 'Linux_android C',
-      ),
-    ],
-  ),
-);
-
-final CiYaml unsupportedPostsubmitCheckrunConfig = CiYaml(
-  slug: Config.flutterSlug,
-  branch: Config.defaultBranch(Config.flutterSlug),
-  config: pb.SchedulerConfig(
-    enabledBranches: <String>[
-      Config.defaultBranch(Config.flutterSlug),
-    ],
-    targets: <pb.Target>[
-      pb.Target(
-        name: 'Linux flutter',
-      ),
-    ],
-  ),
-);
-
-final CiYaml nonBringupPackagesConfig = CiYaml(
-  slug: Config.packagesSlug,
-  branch: Config.defaultBranch(Config.packagesSlug),
-  config: pb.SchedulerConfig(
-    enabledBranches: <String>[
-      Config.defaultBranch(Config.packagesSlug),
-    ],
-    targets: <pb.Target>[
-      pb.Target(
-        name: 'Linux nonbringup',
-      ),
-    ],
-  ),
-);
-
-final CiYaml bringupPackagesConfig = CiYaml(
-  slug: Config.packagesSlug,
-  branch: Config.defaultBranch(Config.packagesSlug),
-  config: pb.SchedulerConfig(
-    enabledBranches: <String>[
-      Config.defaultBranch(Config.packagesSlug),
-    ],
-    targets: <pb.Target>[
-      pb.Target(
-        name: 'Linux bringup',
-        bringup: true,
-      ),
-    ],
-  ),
-);
-
-final CiYaml totCiYaml = CiYaml(
-  slug: Config.flutterSlug,
-  branch: Config.defaultBranch(Config.flutterSlug),
-  config: pb.SchedulerConfig(
-    enabledBranches: <String>[
-      Config.defaultBranch(Config.flutterSlug),
-    ],
-    targets: <pb.Target>[
-      pb.Target(
-        name: 'Linux_android B',
-      ),
-      pb.Target(
-        name: 'Linux_android C',
-      ),
-    ],
-  ),
-);
-
-final CiYaml notInToTConfig = CiYaml(
-  slug: Config.flutterSlug,
-  branch: Config.defaultBranch(Config.flutterSlug),
-  config: pb.SchedulerConfig(
-    enabledBranches: <String>[
-      Config.defaultBranch(Config.flutterSlug),
-    ],
-    targets: <pb.Target>[
-      pb.Target(
-        name: 'Linux_android A',
-      ),
-    ],
-  ),
-  totConfig: totCiYaml,
-);
diff --git a/app_dart/test/src/utilities/build_bucket_v2_messages.dart b/app_dart/test/src/utilities/build_bucket_v2_messages.dart
deleted file mode 100644
index 8b6a812..0000000
--- a/app_dart/test/src/utilities/build_bucket_v2_messages.dart
+++ /dev/null
@@ -1,1654 +0,0 @@
-// Copyright 2024 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/src/model/luci/pubsub_message_v2.dart';
-import 'package:cocoon_service/src/model/luci/user_data.dart';
-import 'package:fixnum/fixnum.dart';
-
-PushMessageV2 createPushMessageV2(
-  Int64 id, {
-  String? project = 'flutter',
-  String? bucket = 'try',
-  String? builder = 'Windows Engine Drone',
-  int? number = 259942,
-  bbv2.Status? status = bbv2.Status.SCHEDULED,
-  Map<String, dynamic>? userData = const {},
-  bool? addBuildSet = true,
-}) {
-  final bbv2.PubSubCallBack pubSubCallBack = createPubSubCallBack(
-    id,
-    project: project,
-    bucket: bucket,
-    builder: builder,
-    number: number,
-    status: status,
-    userData: userData,
-    addBuildSet: addBuildSet,
-  );
-
-  final Map<String, dynamic> pubSubCallBackMap = pubSubCallBack.toProto3Json() as Map<String, dynamic>;
-
-  final String pubSubCallBackString = jsonEncode(pubSubCallBackMap);
-
-  return PushMessageV2(data: pubSubCallBackString);
-}
-
-bbv2.PubSubCallBack createPubSubCallBack(
-  Int64 id, {
-  String? project = 'flutter',
-  String? bucket = 'try',
-  String? builder = 'Windows Engine Drone',
-  int? number = 259942,
-  bbv2.Status? status = bbv2.Status.SCHEDULED,
-  Map<String, dynamic>? userData = const {},
-  bool? addBuildSet = true,
-}) {
-  // this contains BuildsV2PubSub and UserData (List<int>).
-  final bbv2.BuildsV2PubSub buildsV2PubSub = createBuild(
-    id,
-    project: project,
-    bucket: bucket,
-    builder: builder,
-    number: number,
-    status: status,
-    addBuildSet: addBuildSet,
-  );
-  final List<int>? userDataBytes = UserData.encodeUserDataToBytes(userData!);
-  return bbv2.PubSubCallBack(buildPubsub: buildsV2PubSub, userData: userDataBytes);
-}
-
-bbv2.BuildsV2PubSub createBuild(
-  Int64 id, {
-  String? project = 'flutter',
-  String? bucket = 'try',
-  String? builder = 'Windows Engine Drone',
-  int? number = 259942,
-  bbv2.Status? status = bbv2.Status.SCHEDULED,
-  bool? addBuildSet = true,
-}) {
-  final bbv2.BuildsV2PubSub build = bbv2.BuildsV2PubSub().createEmptyInstance();
-  build.mergeFromProto3Json(
-    jsonDecode(
-      createBuildString(
-        id,
-        project: project,
-        bucket: bucket,
-        builder: builder,
-        number: number,
-        status: status,
-        addBuildSet: addBuildSet,
-      ),
-    ) as Map<String, dynamic>,
-  );
-  return build;
-}
-
-String createBuildString(
-  Int64 id, {
-  String? project = 'flutter',
-  String? bucket = 'try',
-  String? builder = 'Windows Engine Drone',
-  int? number = 259942,
-  bbv2.Status? status = bbv2.Status.SCHEDULED,
-  bool? addBuildSet = true,
-}) {
-  return '''
-  {
-  "build":
-    {
-      "id": "$id",
-      "builder": {
-        "project": "$project",
-        "bucket": "$bucket",
-        "builder": "$builder"
-      },
-      "number": $number,
-      "createdBy": "user:flutter-try-builder@chops-service-accounts.iam.gserviceaccount.com",
-      "createTime": "2023-10-18T23:40:43.480388983Z",
-      "startTime": "2023-10-18T23:40:45.692900Z",
-      "updateTime": "2023-10-18T23:47:04.674226745Z",
-      "endTime": "2023-10-18T23:47:04.674226745Z",
-      "status": "$status",
-      "input": {
-        "properties": {
-          "\$flutter/goma": {
-            "server": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog"
-          },
-          "\$flutter/rbe": {
-            "instance": "projects/flutter-rbe-prod/instances/default",
-            "platform": "container-image=docker://gcr.io/cloud-marketplace/google/debian11@sha256:69e2789c9f3d28c6a0f13b25062c240ee7772be1f5e6d41bb4680b63eae6b304"
-          },
-          "\$kitchen": {
-            "emulate_gce": true
-          },
-          "\$recipe_engine/isolated": {
-            "server": "https://isolateserver.appspot.com"
-          },
-          "\$recipe_engine/path": {
-            "cache_dir": "C:cache",
-            "temp_dir": "C:t"
-          },
-          "\$recipe_engine/swarming": {
-            "server": "https://chromium-swarm.appspot.com"
-          },
-          "add_recipes_cq": true,
-          "bot_id": "flutter-try-windows-us-central1-f-16-8a9p",
-          "bringup": false,
-          "build": {
-            "archives": [
-              {
-                "base_path": "out/host_release_arm64/zip_archives/",
-                "include_paths": [
-                  "out/host_release_arm64/zip_archives/windows-arm64-release/windows-arm64-flutter.zip"
-                ],
-                "name": "host_profile_arm64",
-                "realm": "production",
-                "type": "gcs"
-              }
-            ],
-            "drone_dimensions": [
-              "device_type=none",
-              "os=Windows-10"
-            ],
-            "gclient_variables": {
-              "download_android_deps": false
-            },
-            "generators": {},
-            "gn": [
-              "--runtime-mode",
-              "release",
-              "--no-lto",
-              "--windows-cpu",
-              "arm64"
-            ],
-            "name": "host_release_arm64",
-            "ninja": {
-              "config": "host_release_arm64",
-              "targets": [
-                "windows",
-                "gen_snapshot",
-                "flutter/build/archives:windows_flutter"
-              ]
-            },
-            "recipe": "engine_v2/builder"
-          },
-          "build_android_aot": false,
-          "build_android_debug": false,
-          "build_android_jit_release": false,
-          "build_android_vulkan": false,
-          "build_fuchsia": false,
-          "build_host": false,
-          "build_ios": false,
-          "buildnumber": 13882,
-          "clobber": false,
-          "config_name": "windows_arm_host_engine",
-          "device_type": "none",
-          "exe_cipd_version": "refs/heads/main",
-          "gclient_variables": {
-            "download_android_deps": false
-          },
-          "gcs_goldens_bucket": "",
-          "git_branch": "main",
-          "git_ref": "refs/pull/47066/head",
-          "git_repo": "engine",
-          "git_url": "https://github.com/flutter/engine",
-          "gold_tryjob": true,
-          "goma_jobs": "200",
-          "ios_debug": false,
-          "ios_profile": false,
-          "ios_release": false,
-          "mastername": "client.flutter",
-          "no_lto": true,
-          "os": "Windows-10",
-          "rbe_jobs": "200",
-          "recipe": "engine_v2/builder",
-          "upload_packages": false,
-          "use_cas": true
-        },
-        "experiments": [
-          "luci.buildbucket.agent.cipd_installation",
-          "luci.buildbucket.agent.start_build",
-          "luci.buildbucket.backend_go",
-          "luci.buildbucket.bbagent_getbuild",
-          "luci.buildbucket.bq_exporter_go",
-          "luci.buildbucket.parent_tracking",
-          "luci.buildbucket.use_bbagent",
-          "luci.recipes.use_python3"
-        ]
-      },
-      "output": {
-        "properties": {
-          "git_cache_epoch": "1687554665",
-          "got_engine_revision": "4d97460a271ceab7335b4e22110df77e9d3fd9a7"
-        },
-        "logs": [
-          {
-            "name": "stdout",
-            "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/stdout",
-            "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/stdout"
-          },
-          {
-            "name": "stderr",
-            "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/stderr",
-            "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/stderr"
-          }
-        ],
-        "status": "STARTED"
-      },
-      "steps": [
-        {
-          "name": "setup_build",
-          "startTime": "2023-10-18T23:41:10.699537Z",
-          "endTime": "2023-10-18T23:41:10.709056Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "run_recipe",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/run_recipe",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/run_recipe"
-            },
-            {
-              "name": "memory_profile",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/memory_profile",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/memory_profile"
-            },
-            {
-              "name": "logging",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/logging",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/logging"
-            }
-          ],
-          "summaryMarkdown": "running recipe: \\"engine_v2/builder\\" with Python 3.8.10"
-        },
-        {
-          "name": "Clobber build output",
-          "startTime": "2023-10-18T23:41:10.710867Z",
-          "endTime": "2023-10-18T23:41:11.094743Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/stdout"
-            }
-          ]
-        },
-        {
-          "name": "Ensure checkout cache",
-          "startTime": "2023-10-18T23:41:11.095676Z",
-          "endTime": "2023-10-18T23:41:11.223466Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/stdout"
-            }
-          ]
-        },
-        {
-          "name": "Enable long path support",
-          "startTime": "2023-10-18T23:41:11.224518Z",
-          "endTime": "2023-10-18T23:41:11.573466Z",
-          "status": "SUCCESS"
-        },
-        {
-          "name": "Enable long path support|Run long path support script",
-          "startTime": "2023-10-18T23:41:11.225300Z",
-          "endTime": "2023-10-18T23:41:11.573466Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/stdout"
-            }
-          ]
-        },
-        {
-          "name": "Empty C:cache/git",
-          "startTime": "2023-10-18T23:41:11.575710Z",
-          "endTime": "2023-10-18T23:41:11.713322Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/execution_details"
-            },
-            {
-              "name": "stderr",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/stderr",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/stderr"
-            },
-            {
-              "name": "listdir",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/listdir",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/listdir"
-            }
-          ]
-        },
-        {
-          "name": "Empty C:cache/builder",
-          "startTime": "2023-10-18T23:41:11.713646Z",
-          "endTime": "2023-10-18T23:41:11.862582Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/execution_details"
-            },
-            {
-              "name": "stderr",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/stderr",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/stderr"
-            },
-            {
-              "name": "listdir",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/listdir",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/listdir"
-            }
-          ]
-        },
-        {
-          "name": "copy win_toolchain_metadata",
-          "startTime": "2023-10-18T23:41:11.863620Z",
-          "endTime": "2023-10-18T23:41:12.005728Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/stdout"
-            }
-          ]
-        },
-        {
-          "name": "read win toolchain metadata",
-          "startTime": "2023-10-18T23:41:12.006719Z",
-          "endTime": "2023-10-18T23:41:12.129104Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/stdout"
-            },
-            {
-              "name": "data.json",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/data.json",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/data.json"
-            }
-          ]
-        },
-        {
-          "name": "Checkout source code",
-          "startTime": "2023-10-18T23:41:12.129104Z",
-          "endTime": "2023-10-18T23:43:41.719117Z",
-          "status": "SUCCESS"
-        },
-        {
-          "name": "Checkout source code|bot_update",
-          "startTime": "2023-10-18T23:41:12.174050Z",
-          "endTime": "2023-10-18T23:43:02.007547Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/stdout"
-            },
-            {
-              "name": "json.output",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/json.output",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/json.output"
-            }
-          ],
-          "summaryMarkdown": "[82GB/498GB used (16%)]"
-        },
-        {
-          "name": "Checkout source code|gclient runhooks",
-          "startTime": "2023-10-18T23:43:02.007547Z",
-          "endTime": "2023-10-18T23:43:41.465210Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/stdout"
-            }
-          ]
-        },
-        {
-          "name": "Checkout source code|copy win_toolchain_metadata",
-          "startTime": "2023-10-18T23:43:41.465210Z",
-          "endTime": "2023-10-18T23:43:41.594714Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/stdout"
-            }
-          ]
-        },
-        {
-          "name": "Checkout source code|read win toolchain metadata",
-          "startTime": "2023-10-18T23:43:41.595635Z",
-          "endTime": "2023-10-18T23:43:41.718896Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/stdout"
-            },
-            {
-              "name": "data.json",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/data.json",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/data.json"
-            }
-          ]
-        },
-        {
-          "name": "ensure goma",
-          "startTime": "2023-10-18T23:43:41.719922Z",
-          "endTime": "2023-10-18T23:43:41.846305Z",
-          "status": "SUCCESS"
-        },
-        {
-          "name": "ensure goma|ensure_installed",
-          "startTime": "2023-10-18T23:43:41.721089Z",
-          "endTime": "2023-10-18T23:43:41.846179Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/stdout"
-            },
-            {
-              "name": "json.output",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/json.output",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/json.output"
-            }
-          ]
-        },
-        {
-          "name": "setup goma",
-          "startTime": "2023-10-18T23:43:41.846366Z",
-          "endTime": "2023-10-18T23:43:47.675164Z",
-          "status": "SUCCESS"
-        },
-        {
-          "name": "setup goma|ensure cpython3",
-          "startTime": "2023-10-18T23:43:41.846366Z",
-          "endTime": "2023-10-18T23:43:46.120490Z",
-          "status": "SUCCESS"
-        },
-        {
-          "name": "setup goma|ensure cpython3|read manifest",
-          "startTime": "2023-10-18T23:43:41.847844Z",
-          "endTime": "2023-10-18T23:43:41.973087Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/stdout"
-            },
-            {
-              "name": "tool_manifest.json",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/tool_manifest.json",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/tool_manifest.json"
-            }
-          ]
-        },
-        {
-          "name": "setup goma|ensure cpython3|install infra/3pp/tools/cpython3",
-          "startTime": "2023-10-18T23:43:42.157406Z",
-          "endTime": "2023-10-18T23:43:46.119514Z",
-          "status": "SUCCESS"
-        },
-        {
-          "name": "setup goma|ensure cpython3|install infra/3pp/tools/cpython3|ensure package directory",
-          "startTime": "2023-10-18T23:43:42.157406Z",
-          "endTime": "2023-10-18T23:43:42.293267Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/stdout"
-            }
-          ]
-        },
-        {
-          "name": "setup goma|ensure cpython3|install infra/3pp/tools/cpython3|ensure_installed",
-          "startTime": "2023-10-18T23:43:42.294156Z",
-          "endTime": "2023-10-18T23:43:46.119514Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/stdout"
-            },
-            {
-              "name": "json.output",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/json.output",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/json.output"
-            }
-          ]
-        },
-        {
-          "name": "setup goma|start goma",
-          "startTime": "2023-10-18T23:43:46.121466Z",
-          "endTime": "2023-10-18T23:43:47.675164Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/stdout"
-            }
-          ]
-        },
-        {
-          "name": "gn --runtime-mode release --no-lto --windows-cpu arm64",
-          "startTime": "2023-10-18T23:43:47.677090Z",
-          "endTime": "2023-10-18T23:43:51.922997Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/stdout"
-            }
-          ]
-        },
-        {
-          "name": "teardown goma",
-          "startTime": "2023-10-18T23:43:51.922997Z",
-          "endTime": "2023-10-18T23:43:56.540194Z",
-          "status": "SUCCESS"
-        },
-        {
-          "name": "teardown goma|goma jsonstatus",
-          "startTime": "2023-10-18T23:43:51.924849Z",
-          "endTime": "2023-10-18T23:43:52.281422Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/stdout"
-            },
-            {
-              "name": "json.output",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/json.output",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/json.output"
-            }
-          ]
-        },
-        {
-          "name": "teardown goma|goma stats",
-          "startTime": "2023-10-18T23:43:52.281422Z",
-          "endTime": "2023-10-18T23:43:52.598735Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/stdout"
-            }
-          ]
-        },
-        {
-          "name": "teardown goma|stop goma",
-          "startTime": "2023-10-18T23:43:52.599129Z",
-          "endTime": "2023-10-18T23:43:55.348252Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/stdout"
-            }
-          ]
-        },
-        {
-          "name": "teardown goma|read goma_stats.json",
-          "startTime": "2023-10-18T23:43:55.348819Z",
-          "endTime": "2023-10-18T23:43:55.472990Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/stdout"
-            },
-            {
-              "name": "json.output",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/json.output",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/json.output"
-            }
-          ]
-        },
-        {
-          "name": "teardown goma|ensure bqupload",
-          "startTime": "2023-10-18T23:43:55.472990Z",
-          "endTime": "2023-10-18T23:43:56.157092Z",
-          "status": "SUCCESS"
-        },
-        {
-          "name": "teardown goma|ensure bqupload|read manifest",
-          "startTime": "2023-10-18T23:43:55.473991Z",
-          "endTime": "2023-10-18T23:43:55.599246Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/stdout"
-            },
-            {
-              "name": "tool_manifest.json",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/tool_manifest.json",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/tool_manifest.json"
-            }
-          ]
-        },
-        {
-          "name": "teardown goma|ensure bqupload|install infra/tools/bqupload",
-          "startTime": "2023-10-18T23:43:55.606847Z",
-          "endTime": "2023-10-18T23:43:56.157092Z",
-          "status": "SUCCESS"
-        },
-        {
-          "name": "teardown goma|ensure bqupload|install infra/tools/bqupload|ensure package directory",
-          "startTime": "2023-10-18T23:43:55.607934Z",
-          "endTime": "2023-10-18T23:43:55.729687Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/stdout"
-            }
-          ]
-        },
-        {
-          "name": "teardown goma|ensure bqupload|install infra/tools/bqupload|ensure_installed",
-          "startTime": "2023-10-18T23:43:55.730870Z",
-          "endTime": "2023-10-18T23:43:56.157092Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/stdout"
-            },
-            {
-              "name": "json.output",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/json.output",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/json.output"
-            }
-          ]
-        },
-        {
-          "name": "teardown goma|upload goma stats to bigquery",
-          "startTime": "2023-10-18T23:43:56.158075Z",
-          "endTime": "2023-10-18T23:43:56.540194Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/stdout"
-            }
-          ]
-        },
-        {
-          "name": "setup goma (2)",
-          "startTime": "2023-10-18T23:43:56.541475Z",
-          "endTime": "2023-10-18T23:43:57.337570Z",
-          "status": "SUCCESS"
-        },
-        {
-          "name": "setup goma (2)|start goma",
-          "startTime": "2023-10-18T23:43:56.542723Z",
-          "endTime": "2023-10-18T23:43:57.337252Z",
-          "status": "SUCCESS",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/stdout"
-            }
-          ]
-        },
-        {
-          "name": "build host_release_arm64 windows gen_snapshot flutter/build/archives:windows_flutter",
-          "startTime": "2023-10-18T23:43:57.338625Z",
-          "status": "STARTED",
-          "logs": [
-            {
-              "name": "\$debug",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/l_debug",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/l_debug"
-            },
-            {
-              "name": "execution details",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/execution_details",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/execution_details"
-            },
-            {
-              "name": "stdout",
-              "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/stdout",
-              "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/stdout"
-            }
-          ]
-        }
-      ],
-      "infra": {
-        "buildbucket": {
-          "requestedProperties": {
-            "\$flutter/goma": {
-              "server": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog"
-            },
-            "\$flutter/rbe": {
-              "instance": "projects/flutter-rbe-prod/instances/default",
-              "platform": "container-image=docker://gcr.io/cloud-marketplace/google/debian11@sha256:69e2789c9f3d28c6a0f13b25062c240ee7772be1f5e6d41bb4680b63eae6b304"
-            },
-            "\$kitchen": {
-              "emulate_gce": true
-            },
-            "\$recipe_engine/isolated": {
-              "server": "https://isolateserver.appspot.com"
-            },
-            "\$recipe_engine/path": {
-              "cache_dir": "C:cache",
-              "temp_dir": "C:t"
-            },
-            "\$recipe_engine/swarming": {
-              "server": "https://chromium-swarm.appspot.com"
-            },
-            "add_recipes_cq": true,
-            "bot_id": "flutter-try-windows-us-central1-f-16-8a9p",
-            "bringup": false,
-            "build": {
-              "archives": [
-                {
-                  "base_path": "out/host_release_arm64/zip_archives/",
-                  "include_paths": [
-                    "out/host_release_arm64/zip_archives/windows-arm64-release/windows-arm64-flutter.zip"
-                  ],
-                  "name": "host_profile_arm64",
-                  "realm": "production",
-                  "type": "gcs"
-                }
-              ],
-              "drone_dimensions": [
-                "device_type=none",
-                "os=Windows-10"
-              ],
-              "gclient_variables": {
-                "download_android_deps": false
-              },
-              "generators": {},
-              "gn": [
-                "--runtime-mode",
-                "release",
-                "--no-lto",
-                "--windows-cpu",
-                "arm64"
-              ],
-              "name": "host_release_arm64",
-              "ninja": {
-                "config": "host_release_arm64",
-                "targets": [
-                  "windows",
-                  "gen_snapshot",
-                  "flutter/build/archives:windows_flutter"
-                ]
-              },
-              "recipe": "engine_v2/builder"
-            },
-            "build_android_aot": false,
-            "build_android_debug": false,
-            "build_android_jit_release": false,
-            "build_android_vulkan": false,
-            "build_fuchsia": false,
-            "build_host": false,
-            "build_ios": false,
-            "buildnumber": 13882,
-            "clobber": false,
-            "config_name": "windows_arm_host_engine",
-            "device_type": "none",
-            "exe_cipd_version": "refs/heads/main",
-            "gclient_variables": {
-              "download_android_deps": false
-            },
-            "gcs_goldens_bucket": "",
-            "git_branch": "main",
-            "git_ref": "refs/pull/47066/head",
-            "git_repo": "engine",
-            "git_url": "https://github.com/flutter/engine",
-            "gold_tryjob": true,
-            "goma_jobs": "200",
-            "ios_debug": false,
-            "ios_profile": false,
-            "ios_release": false,
-            "mastername": "client.flutter",
-            "no_lto": true,
-            "os": "Windows-10",
-            "rbe_jobs": "200",
-            "recipe": "engine_v2/builder",
-            "upload_packages": false,
-            "use_cas": true
-          },
-          "requestedDimensions": [
-            {
-              "key": "device_type",
-              "value": "none"
-            },
-            {
-              "key": "os",
-              "value": "Windows-10"
-            }
-          ],
-          "hostname": "cr-buildbucket.appspot.com",
-          "experimentReasons": {
-            "luci.best_effort_platform": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
-            "luci.buildbucket.agent.cipd_installation": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
-            "luci.buildbucket.agent.start_build": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
-            "luci.buildbucket.backend_go": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
-            "luci.buildbucket.bbagent_getbuild": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
-            "luci.buildbucket.bq_exporter_go": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
-            "luci.buildbucket.canary_software": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
-            "luci.buildbucket.parent_tracking": "EXPERIMENT_REASON_REQUESTED",
-            "luci.buildbucket.use_bbagent": "EXPERIMENT_REASON_BUILDER_CONFIG",
-            "luci.buildbucket.use_bbagent_race": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
-            "luci.non_production": "EXPERIMENT_REASON_REQUESTED",
-            "luci.recipes.use_python3": "EXPERIMENT_REASON_BUILDER_CONFIG"
-          },
-          "agent": {
-            "input": {
-              "data": {
-                "bbagent_utility_packages": {
-                  "cipd": {
-                    "specs": [
-                      {
-                        "package": "infra/tools/luci/cas/\${platform}",
-                        "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
-                      }
-                    ]
-                  },
-                  "onPath": [
-                    "bbagent_utility_packages",
-                    "bbagent_utility_packages/bin"
-                  ]
-                },
-                "cipd_bin_packages": {
-                  "cipd": {
-                    "specs": [
-                      {
-                        "package": "infra/3pp/tools/git/\${platform}",
-                        "version": "version:2@2.42.0.chromium.11"
-                      },
-                      {
-                        "package": "infra/tools/git/\${platform}",
-                        "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
-                      },
-                      {
-                        "package": "infra/tools/luci/git-credential-luci/\${platform}",
-                        "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
-                      },
-                      {
-                        "package": "infra/tools/luci/docker-credential-luci/\${platform}",
-                        "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
-                      },
-                      {
-                        "package": "infra/tools/luci/vpython3/\${platform}",
-                        "version": "git_revision:7c18303a74d8a6ae4bb3aae9de8f659cc8a6c571"
-                      },
-                      {
-                        "package": "infra/tools/luci/lucicfg/\${platform}",
-                        "version": "git_revision:34ddbb29b2632cdcec7648a40a9e0150ad33fd6c"
-                      },
-                      {
-                        "package": "infra/tools/luci-auth/\${platform}",
-                        "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
-                      },
-                      {
-                        "package": "infra/tools/bb/\${platform}",
-                        "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
-                      },
-                      {
-                        "package": "infra/tools/cloudtail/\${platform}",
-                        "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
-                      },
-                      {
-                        "package": "infra/tools/prpc/\${platform}",
-                        "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
-                      },
-                      {
-                        "package": "infra/tools/rdb/\${platform}",
-                        "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
-                      },
-                      {
-                        "package": "infra/tools/luci/led/\${platform}",
-                        "version": "git_revision:0bb208f2de6f3e9c698b70a33cd01c6de9985db2"
-                      }
-                    ]
-                  },
-                  "onPath": [
-                    "cipd_bin_packages",
-                    "cipd_bin_packages/bin"
-                  ]
-                },
-                "cipd_bin_packages/cpython3": {
-                  "cipd": {
-                    "specs": [
-                      {
-                        "package": "infra/3pp/tools/cpython3/\$platform",
-                        "version": "version:2@3.8.10.chromium.26"
-                      }
-                    ]
-                  },
-                  "onPath": [
-                    "cipd_bin_packages/cpython3",
-                    "cipd_bin_packages/cpython3/bin"
-                  ]
-                },
-                "kitchen-checkout": {
-                  "cipd": {
-                    "specs": [
-                      {
-                        "package": "flutter/recipe_bundles/flutter.googlesource.com/recipes",
-                        "version": "refs/heads/main"
-                      }
-                    ]
-                  }
-                }
-              }
-            },
-            "output": {
-              "resolvedData": {
-                "": {
-                  "cipd": {
-                    "specs": [
-                      {
-                        "package": "infra/tools/luci/bbagent/windows-amd64",
-                        "version": "CWZTz-PPn4V6PQOLwboppTkVcHpDBw4mbSFdFzSCVZ8C"
-                      }
-                    ]
-                  }
-                },
-                "bbagent_utility_packages": {
-                  "cipd": {
-                    "specs": [
-                      {
-                        "package": "infra/tools/luci/cas/windows-amd64",
-                        "version": "GLca2xxHU1T7i8mC6CIQaVHYTpBsIgbfg461-p9auHgC"
-                      }
-                    ]
-                  }
-                },
-                "cipd_bin_packages": {
-                  "cipd": {
-                    "specs": [
-                      {
-                        "package": "infra/3pp/tools/git/windows-amd64",
-                        "version": "nUmXIMXMWYpRRL5G_imH9ylYe8OuFrw8E8E-aQqNniQC"
-                      },
-                      {
-                        "package": "infra/tools/git/windows-amd64",
-                        "version": "k9xBg8ePL7uiVWiSpRNiuwhZvIFXw9To1-Y7zmGLEsoC"
-                      },
-                      {
-                        "package": "infra/tools/luci/git-credential-luci/windows-amd64",
-                        "version": "wTYHK_9ozzrCAhNvSJQ2aNh4Xj_WdSZH8z_iPGygl1EC"
-                      },
-                      {
-                        "package": "infra/tools/luci/docker-credential-luci/windows-amd64",
-                        "version": "TkZdTN7vFH_togft9p4cUxn0aO3uvwCX2KCpCimlN0cC"
-                      },
-                      {
-                        "package": "infra/tools/luci/vpython3/windows-amd64",
-                        "version": "1JfARK50t0eNaL62bEi837AkuEnOCDAenGnpGcVplFUC"
-                      },
-                      {
-                        "package": "infra/tools/luci/lucicfg/windows-amd64",
-                        "version": "cWjTUBeuuKTpxum2UgieF5Gpk7maDGMWzGLrxPrIVBcC"
-                      },
-                      {
-                        "package": "infra/tools/luci-auth/windows-amd64",
-                        "version": "aIJRax7rJxdMLPUzrI7z7Semi5aWdt5LNaogSG72ke8C"
-                      },
-                      {
-                        "package": "infra/tools/bb/windows-amd64",
-                        "version": "AJCTgGxzUFvFWEY7pC3huf3BQJCRdE3dr06fqyD6_3sC"
-                      },
-                      {
-                        "package": "infra/tools/cloudtail/windows-amd64",
-                        "version": "wkrKDMSgJA6K4j1y5UkoGT8RJr2xcYqrRGd7EkpsamgC"
-                      },
-                      {
-                        "package": "infra/tools/prpc/windows-amd64",
-                        "version": "uVp8B8Ebw_buQCapgLcKbbABtQOBXTP69BZ-hiRjstIC"
-                      },
-                      {
-                        "package": "infra/tools/rdb/windows-amd64",
-                        "version": "LpQ6w9adpEItDPjyzrdc9JkgmySUqjIoawxM6XchQAwC"
-                      },
-                      {
-                        "package": "infra/tools/luci/led/windows-amd64",
-                        "version": "GUOxVDh_JsTrFpG8smahZzLBlOyWsiJBMfWm5RWm6qEC"
-                      }
-                    ]
-                  }
-                },
-                "cipd_bin_packages/cpython3": {
-                  "cipd": {
-                    "specs": [
-                      {
-                        "package": "infra/3pp/tools/cpython3/windows-amd64",
-                        "version": "55_vUpmQ9RyBMmHoJvSChlnlP07QjmvRaFAG4q4AF-QC"
-                      }
-                    ]
-                  }
-                },
-                "kitchen-checkout": {
-                  "cipd": {
-                    "specs": [
-                      {
-                        "package": "flutter/recipe_bundles/flutter.googlesource.com/recipes",
-                        "version": "y0oPD122qjmiYkrkpcIhZ0GZSeBgKYUHpiRAUuEAjGcC"
-                      }
-                    ]
-                  }
-                }
-              },
-              "status": "SUCCESS",
-              "agentPlatform": "windows-amd64",
-              "totalDuration": "17s"
-            },
-            "source": {
-              "cipd": {
-                "package": "infra/tools/luci/bbagent/\$platform",
-                "version": "git_revision:d210fcc40e0faaaf5b0a8bf57a8db5bfe1638c33"
-              }
-            },
-            "purposes": {
-              "bbagent_utility_packages": "PURPOSE_BBAGENT_UTILITY",
-              "kitchen-checkout": "PURPOSE_EXE_PAYLOAD"
-            }
-          },
-          "knownPublicGerritHosts": [
-            "android.googlesource.com",
-            "aomedia.googlesource.com",
-            "boringssl.googlesource.com",
-            "chromium.googlesource.com",
-            "dart.googlesource.com",
-            "dawn.googlesource.com",
-            "fuchsia.googlesource.com",
-            "gn.googlesource.com",
-            "go.googlesource.com",
-            "llvm.googlesource.com",
-            "pdfium.googlesource.com",
-            "quiche.googlesource.com",
-            "skia.googlesource.com",
-            "swiftshader.googlesource.com",
-            "webrtc.googlesource.com"
-          ],
-          "buildNumber": true
-        },
-        "swarming": {
-          "hostname": "chromium-swarm.appspot.com",
-          "taskId": "655dfb42a28dbe10",
-          "parentRunId": "655df9add49f7311",
-          "taskServiceAccount": "flutter-try-builder@chops-service-accounts.iam.gserviceaccount.com",
-          "priority": 30,
-          "taskDimensions": [
-            {
-              "key": "device_type",
-              "value": "none"
-            },
-            {
-              "key": "os",
-              "value": "Windows-10"
-            },
-            {
-              "key": "pool",
-              "value": "luci.flutter.try"
-            }
-          ],
-          "botDimensions": [
-            {
-              "key": "bot_config",
-              "value": "bot_config.py"
-            },
-            {
-              "key": "caches",
-              "value": "engine_main_builder"
-            },
-            {
-              "key": "caches",
-              "value": "engine_main_git"
-            },
-            {
-              "key": "caches",
-              "value": "flutter_main_android_sdk_version_33v6_legacy"
-            },
-            {
-              "key": "caches",
-              "value": "flutter_main_certs_version_9563bb"
-            },
-            {
-              "key": "caches",
-              "value": "flutter_main_chrome_and_driver_version_119_0_6045_9_legacy"
-            },
-            {
-              "key": "caches",
-              "value": "flutter_main_open_jdk_version_11_legacy"
-            },
-            {
-              "key": "caches",
-              "value": "goma_v2"
-            },
-            {
-              "key": "caches",
-              "value": "packages_main_certs_version_9563bb"
-            },
-            {
-              "key": "caches",
-              "value": "vpython"
-            },
-            {
-              "key": "cipd_platform",
-              "value": "windows-amd64"
-            },
-            {
-              "key": "cores",
-              "value": "16"
-            },
-            {
-              "key": "cpu",
-              "value": "x86"
-            },
-            {
-              "key": "cpu",
-              "value": "x86-64"
-            },
-            {
-              "key": "cpu",
-              "value": "x86-64-Broadwell_GCE"
-            },
-            {
-              "key": "device_os",
-              "value": "none"
-            },
-            {
-              "key": "device_type",
-              "value": "none"
-            },
-            {
-              "key": "display_attached",
-              "value": "0"
-            },
-            {
-              "key": "gce",
-              "value": "1"
-            },
-            {
-              "key": "gcp",
-              "value": "flutter-machines-prod"
-            },
-            {
-              "key": "gpu",
-              "value": "none"
-            },
-            {
-              "key": "id",
-              "value": "flutter-try-flutterprj-windows-us-central1-b-1-602w"
-            },
-            {
-              "key": "image",
-              "value": "chrome-win10-22h2-23101200-2b28f7ecb56"
-            },
-            {
-              "key": "inside_docker",
-              "value": "0"
-            },
-            {
-              "key": "integrity",
-              "value": "high"
-            },
-            {
-              "key": "locale",
-              "value": "en_US.cp1252"
-            },
-            {
-              "key": "machine_type",
-              "value": "e2-highmem-16"
-            },
-            {
-              "key": "os",
-              "value": "Windows"
-            },
-            {
-              "key": "os",
-              "value": "Windows-10"
-            },
-            {
-              "key": "os",
-              "value": "Windows-10-19045"
-            },
-            {
-              "key": "os",
-              "value": "Windows-10-19045.2006"
-            },
-            {
-              "key": "pool",
-              "value": "luci.flutter.try"
-            },
-            {
-              "key": "python",
-              "value": "3"
-            },
-            {
-              "key": "python",
-              "value": "3.8"
-            },
-            {
-              "key": "python",
-              "value": "3.8.9"
-            },
-            {
-              "key": "server_version",
-              "value": "7419-34ac013"
-            },
-            {
-              "key": "ssd",
-              "value": "1"
-            },
-            {
-              "key": "visual_studio_version",
-              "value": "16.0"
-            },
-            {
-              "key": "windows_client_version",
-              "value": "10"
-            },
-            {
-              "key": "zone",
-              "value": "us"
-            },
-            {
-              "key": "zone",
-              "value": "us-central"
-            },
-            {
-              "key": "zone",
-              "value": "us-central1"
-            },
-            {
-              "key": "zone",
-              "value": "us-central1-b"
-            }
-          ],
-          "caches": [
-            {
-              "name": "pub_cache",
-              "path": ".pub-cache"
-            },
-            {
-              "name": "engine_main_builder",
-              "path": "builder"
-            },
-            {
-              "name": "engine_main_git",
-              "path": "git"
-            },
-            {
-              "name": "goma_v2",
-              "path": "goma"
-            },
-            {
-              "name": "engine_main_open_jdk_version_11_legacy",
-              "path": "java"
-            },
-            {
-              "name": "engine_main_open_jdk_version_11",
-              "path": "open_jdk"
-            },
-            {
-              "name": "vpython",
-              "path": "vpython",
-              "envVar": "VPYTHON_VIRTUALENV_ROOT"
-            }
-          ]
-        },
-        "logdog": {
-          "hostname": "logs.chromium.org",
-          "project": "flutter",
-          "prefix": "buildbucket/cr-buildbucket/8766855135863637953"
-        },
-        "resultdb": {
-          "hostname": "results.api.cr.dev"
-        },
-        "bbagent": {
-          "payloadPath": "kitchen-checkout",
-          "cacheDir": "cache"
-        }
-      },
-      "tags": [
-        {
-          "key": "build_address",
-          "value": "luci.flutter.prod/$builder/1698"
-        },
-        {
-          "key": "builder",
-          "value": "$builder"
-        },
-        ${addBuildSet! ? '''
-        {
-          "key": "buildset",
-          "value": "pr/git/47066"
-        },
-        {
-          "key": "buildset",
-          "value": "sha/git/4d97460a271ceab7335b4e22110df77e9d3fd9a7"
-        },
-        ''' : ''}
-        {
-          "key": "parent_buildbucket_id",
-          "value": "8766855244016195329"
-        },
-        {
-          "key": "parent_task_id",
-          "value": "655df9add49f7311"
-        },
-        {
-          "key": "user_agent",
-          "value": "recipe"
-        },
-        {
-          "key": "current_attempt",
-          "value": "1"
-        }
-      ],
-      "exe": {
-        "cipdPackage": "flutter/recipe_bundles/flutter.googlesource.com/recipes",
-        "cipdVersion": "refs/heads/main",
-        "cmd": [
-          "luciexe"
-        ]
-      },
-      "schedulingTimeout": "21600s",
-      "executionTimeout": "3600s",
-      "gracePeriod": "30s",
-      "ancestorIds": [
-        "8766855244016195329"
-      ]
-    }
-}
-''';
-}
diff --git a/app_dart/test/src/utilities/entity_generators.dart b/app_dart/test/src/utilities/entity_generators.dart
index 07db685..7b9eab8 100644
--- a/app_dart/test/src/utilities/entity_generators.dart
+++ b/app_dart/test/src/utilities/entity_generators.dart
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
 import 'package:cocoon_service/ci_yaml.dart';
 import 'package:cocoon_service/src/model/appengine/commit.dart';
 import 'package:cocoon_service/src/model/appengine/task.dart';
@@ -15,7 +14,6 @@
 import 'package:cocoon_service/src/model/luci/buildbucket.dart';
 import 'package:cocoon_service/src/model/luci/push_message.dart' as push_message;
 import 'package:cocoon_service/src/model/proto/protos.dart' as pb;
-import 'package:fixnum/fixnum.dart';
 import 'package:gcloud/db.dart';
 import 'package:googleapis/firestore/v1.dart' hide Status;
 import 'package:github/github.dart' as github;
@@ -271,28 +269,6 @@
       input: input,
     );
 
-bbv2.Build generateBbv2Build(
-  Int64 i, {
-  String bucket = 'prod',
-  String name = 'Linux test_builder',
-  bbv2.Status status = bbv2.Status.SUCCESS,
-  Iterable<bbv2.StringPair>? tags,
-  bbv2.Build_Input? input,
-  int buildNumber = 1,
-}) =>
-    bbv2.Build(
-      id: i,
-      builder: bbv2.BuilderID(
-        project: 'flutter',
-        bucket: bucket,
-        builder: name,
-      ),
-      status: status,
-      tags: tags,
-      number: buildNumber,
-      input: input,
-    );
-
 push_message.Build generatePushMessageBuild(
   int i, {
   String bucket = 'prod',
diff --git a/app_dart/test/src/utilities/mocks.dart b/app_dart/test/src/utilities/mocks.dart
index 37e7318..42a4b1c 100644
--- a/app_dart/test/src/utilities/mocks.dart
+++ b/app_dart/test/src/utilities/mocks.dart
@@ -12,16 +12,13 @@
 import 'package:cocoon_service/src/service/bigquery.dart';
 import 'package:cocoon_service/src/service/branch_service.dart';
 import 'package:cocoon_service/src/service/buildbucket.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
 import 'package:cocoon_service/src/service/commit_service.dart';
 import 'package:cocoon_service/src/service/config.dart';
 import 'package:cocoon_service/src/service/datastore.dart';
 import 'package:cocoon_service/src/service/firestore.dart';
 import 'package:cocoon_service/src/service/github_checks_service.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
 import 'package:cocoon_service/src/service/github_service.dart';
 import 'package:cocoon_service/src/service/luci_build_service.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
 import 'package:github/github.dart';
 import 'package:googleapis/bigquery/v2.dart';
 import 'package:googleapis_auth/googleapis_auth.dart';
@@ -69,7 +66,6 @@
     BigqueryService,
     BranchService,
     BuildBucketClient,
-    BuildBucketV2Client,
     CommitService,
     Config,
     DatastoreService,
@@ -77,7 +73,6 @@
     FirestoreService,
     IssuesService,
     GithubChecksService,
-    GithubChecksServiceV2,
     GithubChecksUtil,
     GithubService,
     GitService,
@@ -87,7 +82,6 @@
     HttpClientResponse,
     JobsResource,
     LuciBuildService,
-    LuciBuildServiceV2,
     ProcessManager,
     PullRequestsService,
     RepositoriesService,
diff --git a/app_dart/test/src/utilities/mocks.mocks.dart b/app_dart/test/src/utilities/mocks.mocks.dart
index 969603f..8b60c90 100644
--- a/app_dart/test/src/utilities/mocks.mocks.dart
+++ b/app_dart/test/src/utilities/mocks.mocks.dart
@@ -3,59 +3,53 @@
 // Do not manually edit this file.
 
 // ignore_for_file: no_leading_underscores_for_library_prefixes
-import 'dart:async' as _i21;
-import 'dart:convert' as _i27;
-import 'dart:io' as _i26;
-import 'dart:typed_data' as _i40;
+import 'dart:async' as _i20;
+import 'dart:convert' as _i26;
+import 'dart:io' as _i25;
+import 'dart:typed_data' as _i38;
 
-import 'package:appengine/appengine.dart' as _i11;
-import 'package:buildbucket/buildbucket_pb.dart' as _i9;
-import 'package:cocoon_service/cocoon_service.dart' as _i16;
-import 'package:cocoon_service/src/foundation/github_checks_util.dart' as _i25;
-import 'package:cocoon_service/src/model/appengine/branch.dart' as _i35;
-import 'package:cocoon_service/src/model/appengine/commit.dart' as _i36;
-import 'package:cocoon_service/src/model/appengine/github_build_status_update.dart' as _i19;
-import 'package:cocoon_service/src/model/appengine/github_gold_status_update.dart' as _i20;
-import 'package:cocoon_service/src/model/appengine/key_helper.dart' as _i13;
-import 'package:cocoon_service/src/model/appengine/stage.dart' as _i38;
-import 'package:cocoon_service/src/model/appengine/task.dart' as _i37;
-import 'package:cocoon_service/src/model/ci_yaml/target.dart' as _i47;
-import 'package:cocoon_service/src/model/firestore/commit.dart' as _i41;
-import 'package:cocoon_service/src/model/firestore/github_build_status.dart' as _i24;
-import 'package:cocoon_service/src/model/firestore/github_gold_status.dart' as _i23;
-import 'package:cocoon_service/src/model/firestore/task.dart' as _i42;
-import 'package:cocoon_service/src/model/github/checks.dart' as _i48;
+import 'package:appengine/appengine.dart' as _i10;
+import 'package:cocoon_service/cocoon_service.dart' as _i15;
+import 'package:cocoon_service/src/foundation/github_checks_util.dart' as _i24;
+import 'package:cocoon_service/src/model/appengine/branch.dart' as _i33;
+import 'package:cocoon_service/src/model/appengine/commit.dart' as _i34;
+import 'package:cocoon_service/src/model/appengine/github_build_status_update.dart' as _i18;
+import 'package:cocoon_service/src/model/appengine/github_gold_status_update.dart' as _i19;
+import 'package:cocoon_service/src/model/appengine/key_helper.dart' as _i12;
+import 'package:cocoon_service/src/model/appengine/stage.dart' as _i36;
+import 'package:cocoon_service/src/model/appengine/task.dart' as _i35;
+import 'package:cocoon_service/src/model/ci_yaml/target.dart' as _i42;
+import 'package:cocoon_service/src/model/firestore/commit.dart' as _i39;
+import 'package:cocoon_service/src/model/firestore/github_build_status.dart' as _i23;
+import 'package:cocoon_service/src/model/firestore/github_gold_status.dart' as _i22;
+import 'package:cocoon_service/src/model/firestore/task.dart' as _i40;
+import 'package:cocoon_service/src/model/github/checks.dart' as _i43;
 import 'package:cocoon_service/src/model/luci/buildbucket.dart' as _i8;
-import 'package:cocoon_service/src/model/luci/push_message.dart' as _i43;
+import 'package:cocoon_service/src/model/luci/push_message.dart' as _i41;
 import 'package:cocoon_service/src/service/access_client_provider.dart' as _i5;
-import 'package:cocoon_service/src/service/access_token_provider.dart' as _i30;
-import 'package:cocoon_service/src/service/bigquery.dart' as _i17;
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart' as _i28;
-import 'package:cocoon_service/src/service/commit_service.dart' as _i33;
+import 'package:cocoon_service/src/service/access_token_provider.dart' as _i28;
+import 'package:cocoon_service/src/service/bigquery.dart' as _i16;
+import 'package:cocoon_service/src/service/commit_service.dart' as _i31;
 import 'package:cocoon_service/src/service/config.dart' as _i3;
-import 'package:cocoon_service/src/service/datastore.dart' as _i10;
+import 'package:cocoon_service/src/service/datastore.dart' as _i9;
 import 'package:cocoon_service/src/service/gerrit_service.dart' as _i7;
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart' as _i44;
-import 'package:cocoon_service/src/service/github_service.dart' as _i18;
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart' as _i46;
-import 'package:cocoon_service/src/service/scheduler_v2.dart' as _i45;
-import 'package:fixnum/fixnum.dart' as _i49;
-import 'package:gcloud/db.dart' as _i12;
-import 'package:github/github.dart' as _i14;
-import 'package:github/hooks.dart' as _i34;
+import 'package:cocoon_service/src/service/github_service.dart' as _i17;
+import 'package:gcloud/db.dart' as _i11;
+import 'package:github/github.dart' as _i13;
+import 'package:github/hooks.dart' as _i32;
 import 'package:googleapis/bigquery/v2.dart' as _i6;
-import 'package:googleapis/firestore/v1.dart' as _i22;
+import 'package:googleapis/firestore/v1.dart' as _i21;
 import 'package:googleapis_auth/auth_io.dart' as _i4;
-import 'package:graphql/client.dart' as _i15;
+import 'package:graphql/client.dart' as _i14;
 import 'package:http/http.dart' as _i2;
 import 'package:mockito/mockito.dart' as _i1;
-import 'package:mockito/src/dummies.dart' as _i32;
-import 'package:neat_cache/neat_cache.dart' as _i29;
-import 'package:process/src/interface/process_manager.dart' as _i50;
-import 'package:retry/retry.dart' as _i31;
+import 'package:mockito/src/dummies.dart' as _i30;
+import 'package:neat_cache/neat_cache.dart' as _i27;
+import 'package:process/src/interface/process_manager.dart' as _i44;
+import 'package:retry/retry.dart' as _i29;
 
-import '../../service/cache_service_test.dart' as _i39;
-import 'mocks.dart' as _i51;
+import '../../service/cache_service_test.dart' as _i37;
+import 'mocks.dart' as _i45;
 
 // ignore_for_file: type=lint
 // ignore_for_file: avoid_redundant_argument_values
@@ -180,8 +174,8 @@
         );
 }
 
-class _FakeBuild_11 extends _i1.SmartFake implements _i9.Build {
-  _FakeBuild_11(
+class _FakeDatastoreService_11 extends _i1.SmartFake implements _i9.DatastoreService {
+  _FakeDatastoreService_11(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -190,8 +184,8 @@
         );
 }
 
-class _FakeSearchBuildsResponse_12 extends _i1.SmartFake implements _i9.SearchBuildsResponse {
-  _FakeSearchBuildsResponse_12(
+class _FakeLogging_12 extends _i1.SmartFake implements _i10.Logging {
+  _FakeLogging_12(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -200,8 +194,8 @@
         );
 }
 
-class _FakeBatchResponse_13 extends _i1.SmartFake implements _i9.BatchResponse {
-  _FakeBatchResponse_13(
+class _FakeDatastoreDB_13 extends _i1.SmartFake implements _i11.DatastoreDB {
+  _FakeDatastoreDB_13(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -210,8 +204,8 @@
         );
 }
 
-class _FakeListBuildersResponse_14 extends _i1.SmartFake implements _i9.ListBuildersResponse {
-  _FakeListBuildersResponse_14(
+class _FakeKeyHelper_14 extends _i1.SmartFake implements _i12.KeyHelper {
+  _FakeKeyHelper_14(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -220,8 +214,8 @@
         );
 }
 
-class _FakeDatastoreService_15 extends _i1.SmartFake implements _i10.DatastoreService {
-  _FakeDatastoreService_15(
+class _FakeDuration_15 extends _i1.SmartFake implements Duration {
+  _FakeDuration_15(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -230,8 +224,8 @@
         );
 }
 
-class _FakeLogging_16 extends _i1.SmartFake implements _i11.Logging {
-  _FakeLogging_16(
+class _FakeGitHub_16 extends _i1.SmartFake implements _i13.GitHub {
+  _FakeGitHub_16(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -240,8 +234,8 @@
         );
 }
 
-class _FakeDatastoreDB_17 extends _i1.SmartFake implements _i12.DatastoreDB {
-  _FakeDatastoreDB_17(
+class _FakeGraphQLClient_17 extends _i1.SmartFake implements _i14.GraphQLClient {
+  _FakeGraphQLClient_17(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -250,8 +244,8 @@
         );
 }
 
-class _FakeKeyHelper_18 extends _i1.SmartFake implements _i13.KeyHelper {
-  _FakeKeyHelper_18(
+class _FakeFirestoreService_18 extends _i1.SmartFake implements _i15.FirestoreService {
+  _FakeFirestoreService_18(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -260,8 +254,8 @@
         );
 }
 
-class _FakeDuration_19 extends _i1.SmartFake implements Duration {
-  _FakeDuration_19(
+class _FakeBigqueryService_19 extends _i1.SmartFake implements _i16.BigqueryService {
+  _FakeBigqueryService_19(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -270,8 +264,8 @@
         );
 }
 
-class _FakeGitHub_20 extends _i1.SmartFake implements _i14.GitHub {
-  _FakeGitHub_20(
+class _FakeGithubService_20 extends _i1.SmartFake implements _i17.GithubService {
+  _FakeGithubService_20(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -280,8 +274,8 @@
         );
 }
 
-class _FakeGraphQLClient_21 extends _i1.SmartFake implements _i15.GraphQLClient {
-  _FakeGraphQLClient_21(
+class _FakeGithubBuildStatusUpdate_21 extends _i1.SmartFake implements _i18.GithubBuildStatusUpdate {
+  _FakeGithubBuildStatusUpdate_21(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -290,8 +284,8 @@
         );
 }
 
-class _FakeFirestoreService_22 extends _i1.SmartFake implements _i16.FirestoreService {
-  _FakeFirestoreService_22(
+class _FakeGithubGoldStatusUpdate_22 extends _i1.SmartFake implements _i19.GithubGoldStatusUpdate {
+  _FakeGithubGoldStatusUpdate_22(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -300,8 +294,8 @@
         );
 }
 
-class _FakeBigqueryService_23 extends _i1.SmartFake implements _i17.BigqueryService {
-  _FakeBigqueryService_23(
+class _FakeFuture_23<T1> extends _i1.SmartFake implements _i20.Future<T1> {
+  _FakeFuture_23(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -310,8 +304,9 @@
         );
 }
 
-class _FakeGithubService_24 extends _i1.SmartFake implements _i18.GithubService {
-  _FakeGithubService_24(
+class _FakeProjectsDatabasesDocumentsResource_24 extends _i1.SmartFake
+    implements _i21.ProjectsDatabasesDocumentsResource {
+  _FakeProjectsDatabasesDocumentsResource_24(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -320,8 +315,8 @@
         );
 }
 
-class _FakeGithubBuildStatusUpdate_25 extends _i1.SmartFake implements _i19.GithubBuildStatusUpdate {
-  _FakeGithubBuildStatusUpdate_25(
+class _FakeDocument_25 extends _i1.SmartFake implements _i21.Document {
+  _FakeDocument_25(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -330,8 +325,8 @@
         );
 }
 
-class _FakeGithubGoldStatusUpdate_26 extends _i1.SmartFake implements _i20.GithubGoldStatusUpdate {
-  _FakeGithubGoldStatusUpdate_26(
+class _FakeBatchWriteResponse_26 extends _i1.SmartFake implements _i21.BatchWriteResponse {
+  _FakeBatchWriteResponse_26(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -340,8 +335,8 @@
         );
 }
 
-class _FakeFuture_27<T1> extends _i1.SmartFake implements _i21.Future<T1> {
-  _FakeFuture_27(
+class _FakeCommitResponse_27 extends _i1.SmartFake implements _i21.CommitResponse {
+  _FakeCommitResponse_27(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -350,9 +345,8 @@
         );
 }
 
-class _FakeProjectsDatabasesDocumentsResource_28 extends _i1.SmartFake
-    implements _i22.ProjectsDatabasesDocumentsResource {
-  _FakeProjectsDatabasesDocumentsResource_28(
+class _FakeGithubGoldStatus_28 extends _i1.SmartFake implements _i22.GithubGoldStatus {
+  _FakeGithubGoldStatus_28(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -361,8 +355,8 @@
         );
 }
 
-class _FakeDocument_29 extends _i1.SmartFake implements _i22.Document {
-  _FakeDocument_29(
+class _FakeGithubBuildStatus_29 extends _i1.SmartFake implements _i23.GithubBuildStatus {
+  _FakeGithubBuildStatus_29(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -371,8 +365,8 @@
         );
 }
 
-class _FakeBatchWriteResponse_30 extends _i1.SmartFake implements _i22.BatchWriteResponse {
-  _FakeBatchWriteResponse_30(
+class _FakeValue_30 extends _i1.SmartFake implements _i21.Value {
+  _FakeValue_30(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -381,8 +375,8 @@
         );
 }
 
-class _FakeCommitResponse_31 extends _i1.SmartFake implements _i22.CommitResponse {
-  _FakeCommitResponse_31(
+class _FakeFilter_31 extends _i1.SmartFake implements _i21.Filter {
+  _FakeFilter_31(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -391,8 +385,8 @@
         );
 }
 
-class _FakeGithubGoldStatus_32 extends _i1.SmartFake implements _i23.GithubGoldStatus {
-  _FakeGithubGoldStatus_32(
+class _FakeIssue_32 extends _i1.SmartFake implements _i13.Issue {
+  _FakeIssue_32(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -401,8 +395,8 @@
         );
 }
 
-class _FakeGithubBuildStatus_33 extends _i1.SmartFake implements _i24.GithubBuildStatus {
-  _FakeGithubBuildStatus_33(
+class _FakeIssueComment_33 extends _i1.SmartFake implements _i13.IssueComment {
+  _FakeIssueComment_33(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -411,8 +405,8 @@
         );
 }
 
-class _FakeValue_34 extends _i1.SmartFake implements _i22.Value {
-  _FakeValue_34(
+class _FakeIssueLabel_34 extends _i1.SmartFake implements _i13.IssueLabel {
+  _FakeIssueLabel_34(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -421,8 +415,8 @@
         );
 }
 
-class _FakeFilter_35 extends _i1.SmartFake implements _i22.Filter {
-  _FakeFilter_35(
+class _FakeMilestone_35 extends _i1.SmartFake implements _i13.Milestone {
+  _FakeMilestone_35(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -431,8 +425,8 @@
         );
 }
 
-class _FakeIssue_36 extends _i1.SmartFake implements _i14.Issue {
-  _FakeIssue_36(
+class _FakeGithubChecksUtil_36 extends _i1.SmartFake implements _i24.GithubChecksUtil {
+  _FakeGithubChecksUtil_36(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -441,8 +435,8 @@
         );
 }
 
-class _FakeIssueComment_37 extends _i1.SmartFake implements _i14.IssueComment {
-  _FakeIssueComment_37(
+class _FakeCheckRunConclusion_37 extends _i1.SmartFake implements _i13.CheckRunConclusion {
+  _FakeCheckRunConclusion_37(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -451,8 +445,8 @@
         );
 }
 
-class _FakeIssueLabel_38 extends _i1.SmartFake implements _i14.IssueLabel {
-  _FakeIssueLabel_38(
+class _FakeCheckRunStatus_38 extends _i1.SmartFake implements _i13.CheckRunStatus {
+  _FakeCheckRunStatus_38(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -461,8 +455,8 @@
         );
 }
 
-class _FakeMilestone_39 extends _i1.SmartFake implements _i14.Milestone {
-  _FakeMilestone_39(
+class _FakeCheckSuite_39 extends _i1.SmartFake implements _i13.CheckSuite {
+  _FakeCheckSuite_39(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -471,8 +465,8 @@
         );
 }
 
-class _FakeGithubChecksUtil_40 extends _i1.SmartFake implements _i25.GithubChecksUtil {
-  _FakeGithubChecksUtil_40(
+class _FakeCheckRun_40 extends _i1.SmartFake implements _i13.CheckRun {
+  _FakeCheckRun_40(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -481,8 +475,8 @@
         );
 }
 
-class _FakeCheckRunConclusion_41 extends _i1.SmartFake implements _i14.CheckRunConclusion {
-  _FakeCheckRunConclusion_41(
+class _FakePullRequest_41 extends _i1.SmartFake implements _i13.PullRequest {
+  _FakePullRequest_41(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -491,8 +485,8 @@
         );
 }
 
-class _FakeCheckRunStatus_42 extends _i1.SmartFake implements _i14.CheckRunStatus {
-  _FakeCheckRunStatus_42(
+class _FakeGitReference_42 extends _i1.SmartFake implements _i13.GitReference {
+  _FakeGitReference_42(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -501,8 +495,8 @@
         );
 }
 
-class _FakeCheckSuite_43 extends _i1.SmartFake implements _i14.CheckSuite {
-  _FakeCheckSuite_43(
+class _FakeRateLimit_43 extends _i1.SmartFake implements _i13.RateLimit {
+  _FakeRateLimit_43(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -511,8 +505,8 @@
         );
 }
 
-class _FakeCheckRun_44 extends _i1.SmartFake implements _i14.CheckRun {
-  _FakeCheckRun_44(
+class _FakeGitBlob_44 extends _i1.SmartFake implements _i13.GitBlob {
+  _FakeGitBlob_44(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -521,8 +515,8 @@
         );
 }
 
-class _FakePullRequest_45 extends _i1.SmartFake implements _i14.PullRequest {
-  _FakePullRequest_45(
+class _FakeGitCommit_45 extends _i1.SmartFake implements _i13.GitCommit {
+  _FakeGitCommit_45(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -531,8 +525,8 @@
         );
 }
 
-class _FakeGitReference_46 extends _i1.SmartFake implements _i14.GitReference {
-  _FakeGitReference_46(
+class _FakeGitTag_46 extends _i1.SmartFake implements _i13.GitTag {
+  _FakeGitTag_46(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -541,8 +535,8 @@
         );
 }
 
-class _FakeRateLimit_47 extends _i1.SmartFake implements _i14.RateLimit {
-  _FakeRateLimit_47(
+class _FakeGitTree_47 extends _i1.SmartFake implements _i13.GitTree {
+  _FakeGitTree_47(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -551,8 +545,8 @@
         );
 }
 
-class _FakeGitBlob_48 extends _i1.SmartFake implements _i14.GitBlob {
-  _FakeGitBlob_48(
+class _FakeDefaultPolicies_48 extends _i1.SmartFake implements _i14.DefaultPolicies {
+  _FakeDefaultPolicies_48(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -561,8 +555,8 @@
         );
 }
 
-class _FakeGitCommit_49 extends _i1.SmartFake implements _i14.GitCommit {
-  _FakeGitCommit_49(
+class _FakeLink_49 extends _i1.SmartFake implements _i14.Link {
+  _FakeLink_49(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -571,8 +565,8 @@
         );
 }
 
-class _FakeGitTag_50 extends _i1.SmartFake implements _i14.GitTag {
-  _FakeGitTag_50(
+class _FakeGraphQLCache_50 extends _i1.SmartFake implements _i14.GraphQLCache {
+  _FakeGraphQLCache_50(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -581,8 +575,8 @@
         );
 }
 
-class _FakeGitTree_51 extends _i1.SmartFake implements _i14.GitTree {
-  _FakeGitTree_51(
+class _FakeQueryManager_51 extends _i1.SmartFake implements _i14.QueryManager {
+  _FakeQueryManager_51(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -591,8 +585,8 @@
         );
 }
 
-class _FakeDefaultPolicies_52 extends _i1.SmartFake implements _i15.DefaultPolicies {
-  _FakeDefaultPolicies_52(
+class _FakeObservableQuery_52<TParsed1> extends _i1.SmartFake implements _i14.ObservableQuery<TParsed1> {
+  _FakeObservableQuery_52(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -601,8 +595,8 @@
         );
 }
 
-class _FakeLink_53 extends _i1.SmartFake implements _i15.Link {
-  _FakeLink_53(
+class _FakeQueryResult_53<TParsed1 extends Object?> extends _i1.SmartFake implements _i14.QueryResult<TParsed1> {
+  _FakeQueryResult_53(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -611,8 +605,8 @@
         );
 }
 
-class _FakeGraphQLCache_54 extends _i1.SmartFake implements _i15.GraphQLCache {
-  _FakeGraphQLCache_54(
+class _FakeHttpClientRequest_54 extends _i1.SmartFake implements _i25.HttpClientRequest {
+  _FakeHttpClientRequest_54(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -621,8 +615,8 @@
         );
 }
 
-class _FakeQueryManager_55 extends _i1.SmartFake implements _i15.QueryManager {
-  _FakeQueryManager_55(
+class _FakeUri_55 extends _i1.SmartFake implements Uri {
+  _FakeUri_55(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -631,8 +625,8 @@
         );
 }
 
-class _FakeObservableQuery_56<TParsed1> extends _i1.SmartFake implements _i15.ObservableQuery<TParsed1> {
-  _FakeObservableQuery_56(
+class _FakeHttpHeaders_56 extends _i1.SmartFake implements _i25.HttpHeaders {
+  _FakeHttpHeaders_56(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -641,8 +635,8 @@
         );
 }
 
-class _FakeQueryResult_57<TParsed1 extends Object?> extends _i1.SmartFake implements _i15.QueryResult<TParsed1> {
-  _FakeQueryResult_57(
+class _FakeHttpClientResponse_57 extends _i1.SmartFake implements _i25.HttpClientResponse {
+  _FakeHttpClientResponse_57(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -651,8 +645,8 @@
         );
 }
 
-class _FakeHttpClientRequest_58 extends _i1.SmartFake implements _i26.HttpClientRequest {
-  _FakeHttpClientRequest_58(
+class _FakeEncoding_58 extends _i1.SmartFake implements _i26.Encoding {
+  _FakeEncoding_58(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -661,8 +655,8 @@
         );
 }
 
-class _FakeUri_59 extends _i1.SmartFake implements Uri {
-  _FakeUri_59(
+class _FakeSocket_59 extends _i1.SmartFake implements _i25.Socket {
+  _FakeSocket_59(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -671,8 +665,8 @@
         );
 }
 
-class _FakeHttpHeaders_60 extends _i1.SmartFake implements _i26.HttpHeaders {
-  _FakeHttpHeaders_60(
+class _FakeStreamSubscription_60<T> extends _i1.SmartFake implements _i20.StreamSubscription<T> {
+  _FakeStreamSubscription_60(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -681,8 +675,8 @@
         );
 }
 
-class _FakeHttpClientResponse_61 extends _i1.SmartFake implements _i26.HttpClientResponse {
-  _FakeHttpClientResponse_61(
+class _FakeJobCancelResponse_61 extends _i1.SmartFake implements _i6.JobCancelResponse {
+  _FakeJobCancelResponse_61(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -691,8 +685,8 @@
         );
 }
 
-class _FakeEncoding_62 extends _i1.SmartFake implements _i27.Encoding {
-  _FakeEncoding_62(
+class _FakeJob_62 extends _i1.SmartFake implements _i6.Job {
+  _FakeJob_62(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -701,8 +695,8 @@
         );
 }
 
-class _FakeSocket_63 extends _i1.SmartFake implements _i26.Socket {
-  _FakeSocket_63(
+class _FakeGetQueryResultsResponse_63 extends _i1.SmartFake implements _i6.GetQueryResultsResponse {
+  _FakeGetQueryResultsResponse_63(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -711,8 +705,8 @@
         );
 }
 
-class _FakeStreamSubscription_64<T> extends _i1.SmartFake implements _i21.StreamSubscription<T> {
-  _FakeStreamSubscription_64(
+class _FakeJobList_64 extends _i1.SmartFake implements _i6.JobList {
+  _FakeJobList_64(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -721,8 +715,8 @@
         );
 }
 
-class _FakeJobCancelResponse_65 extends _i1.SmartFake implements _i6.JobCancelResponse {
-  _FakeJobCancelResponse_65(
+class _FakeQueryResponse_65 extends _i1.SmartFake implements _i6.QueryResponse {
+  _FakeQueryResponse_65(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -731,8 +725,8 @@
         );
 }
 
-class _FakeJob_66 extends _i1.SmartFake implements _i6.Job {
-  _FakeJob_66(
+class _FakeBuildBucketClient_66 extends _i1.SmartFake implements _i15.BuildBucketClient {
+  _FakeBuildBucketClient_66(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -741,8 +735,8 @@
         );
 }
 
-class _FakeGetQueryResultsResponse_67 extends _i1.SmartFake implements _i6.GetQueryResultsResponse {
-  _FakeGetQueryResultsResponse_67(
+class _FakeCacheService_67 extends _i1.SmartFake implements _i15.CacheService {
+  _FakeCacheService_67(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -751,58 +745,8 @@
         );
 }
 
-class _FakeJobList_68 extends _i1.SmartFake implements _i6.JobList {
-  _FakeJobList_68(
-    Object parent,
-    Invocation parentInvocation,
-  ) : super(
-          parent,
-          parentInvocation,
-        );
-}
-
-class _FakeQueryResponse_69 extends _i1.SmartFake implements _i6.QueryResponse {
-  _FakeQueryResponse_69(
-    Object parent,
-    Invocation parentInvocation,
-  ) : super(
-          parent,
-          parentInvocation,
-        );
-}
-
-class _FakeBuildBucketClient_70 extends _i1.SmartFake implements _i16.BuildBucketClient {
-  _FakeBuildBucketClient_70(
-    Object parent,
-    Invocation parentInvocation,
-  ) : super(
-          parent,
-          parentInvocation,
-        );
-}
-
-class _FakeBuildBucketV2Client_71 extends _i1.SmartFake implements _i28.BuildBucketV2Client {
-  _FakeBuildBucketV2Client_71(
-    Object parent,
-    Invocation parentInvocation,
-  ) : super(
-          parent,
-          parentInvocation,
-        );
-}
-
-class _FakeCacheService_72 extends _i1.SmartFake implements _i16.CacheService {
-  _FakeCacheService_72(
-    Object parent,
-    Invocation parentInvocation,
-  ) : super(
-          parent,
-          parentInvocation,
-        );
-}
-
-class _FakePubSub_73 extends _i1.SmartFake implements _i16.PubSub {
-  _FakePubSub_73(
+class _FakePubSub_68 extends _i1.SmartFake implements _i15.PubSub {
+  _FakePubSub_68(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -811,8 +755,8 @@
         );
 }
 
-class _FakeProcess_74 extends _i1.SmartFake implements _i26.Process {
-  _FakeProcess_74(
+class _FakeProcess_69 extends _i1.SmartFake implements _i25.Process {
+  _FakeProcess_69(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -821,8 +765,8 @@
         );
 }
 
-class _FakePullRequestMerge_75 extends _i1.SmartFake implements _i14.PullRequestMerge {
-  _FakePullRequestMerge_75(
+class _FakePullRequestMerge_70 extends _i1.SmartFake implements _i13.PullRequestMerge {
+  _FakePullRequestMerge_70(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -831,8 +775,8 @@
         );
 }
 
-class _FakePullRequestComment_76 extends _i1.SmartFake implements _i14.PullRequestComment {
-  _FakePullRequestComment_76(
+class _FakePullRequestComment_71 extends _i1.SmartFake implements _i13.PullRequestComment {
+  _FakePullRequestComment_71(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -841,8 +785,8 @@
         );
 }
 
-class _FakePullRequestReview_77 extends _i1.SmartFake implements _i14.PullRequestReview {
-  _FakePullRequestReview_77(
+class _FakePullRequestReview_72 extends _i1.SmartFake implements _i13.PullRequestReview {
+  _FakePullRequestReview_72(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -851,8 +795,8 @@
         );
 }
 
-class _FakeRepository_78 extends _i1.SmartFake implements _i14.Repository {
-  _FakeRepository_78(
+class _FakeRepository_73 extends _i1.SmartFake implements _i13.Repository {
+  _FakeRepository_73(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -861,8 +805,8 @@
         );
 }
 
-class _FakeLicenseDetails_79 extends _i1.SmartFake implements _i14.LicenseDetails {
-  _FakeLicenseDetails_79(
+class _FakeLicenseDetails_74 extends _i1.SmartFake implements _i13.LicenseDetails {
+  _FakeLicenseDetails_74(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -871,8 +815,8 @@
         );
 }
 
-class _FakeLanguageBreakdown_80 extends _i1.SmartFake implements _i14.LanguageBreakdown {
-  _FakeLanguageBreakdown_80(
+class _FakeLanguageBreakdown_75 extends _i1.SmartFake implements _i13.LanguageBreakdown {
+  _FakeLanguageBreakdown_75(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -881,8 +825,8 @@
         );
 }
 
-class _FakeBranch_81 extends _i1.SmartFake implements _i14.Branch {
-  _FakeBranch_81(
+class _FakeBranch_76 extends _i1.SmartFake implements _i13.Branch {
+  _FakeBranch_76(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -891,8 +835,8 @@
         );
 }
 
-class _FakeCommitComment_82 extends _i1.SmartFake implements _i14.CommitComment {
-  _FakeCommitComment_82(
+class _FakeCommitComment_77 extends _i1.SmartFake implements _i13.CommitComment {
+  _FakeCommitComment_77(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -901,8 +845,8 @@
         );
 }
 
-class _FakeRepositoryCommit_83 extends _i1.SmartFake implements _i14.RepositoryCommit {
-  _FakeRepositoryCommit_83(
+class _FakeRepositoryCommit_78 extends _i1.SmartFake implements _i13.RepositoryCommit {
+  _FakeRepositoryCommit_78(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -911,8 +855,8 @@
         );
 }
 
-class _FakeGitHubComparison_84 extends _i1.SmartFake implements _i14.GitHubComparison {
-  _FakeGitHubComparison_84(
+class _FakeGitHubComparison_79 extends _i1.SmartFake implements _i13.GitHubComparison {
+  _FakeGitHubComparison_79(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -921,8 +865,8 @@
         );
 }
 
-class _FakeGitHubFile_85 extends _i1.SmartFake implements _i14.GitHubFile {
-  _FakeGitHubFile_85(
+class _FakeGitHubFile_80 extends _i1.SmartFake implements _i13.GitHubFile {
+  _FakeGitHubFile_80(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -931,8 +875,8 @@
         );
 }
 
-class _FakeRepositoryContents_86 extends _i1.SmartFake implements _i14.RepositoryContents {
-  _FakeRepositoryContents_86(
+class _FakeRepositoryContents_81 extends _i1.SmartFake implements _i13.RepositoryContents {
+  _FakeRepositoryContents_81(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -941,8 +885,8 @@
         );
 }
 
-class _FakeContentCreation_87 extends _i1.SmartFake implements _i14.ContentCreation {
-  _FakeContentCreation_87(
+class _FakeContentCreation_82 extends _i1.SmartFake implements _i13.ContentCreation {
+  _FakeContentCreation_82(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -951,8 +895,8 @@
         );
 }
 
-class _FakeHook_88 extends _i1.SmartFake implements _i14.Hook {
-  _FakeHook_88(
+class _FakeHook_83 extends _i1.SmartFake implements _i13.Hook {
+  _FakeHook_83(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -961,8 +905,8 @@
         );
 }
 
-class _FakePublicKey_89 extends _i1.SmartFake implements _i14.PublicKey {
-  _FakePublicKey_89(
+class _FakePublicKey_84 extends _i1.SmartFake implements _i13.PublicKey {
+  _FakePublicKey_84(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -971,8 +915,8 @@
         );
 }
 
-class _FakeRepositoryPages_90 extends _i1.SmartFake implements _i14.RepositoryPages {
-  _FakeRepositoryPages_90(
+class _FakeRepositoryPages_85 extends _i1.SmartFake implements _i13.RepositoryPages {
+  _FakeRepositoryPages_85(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -981,8 +925,8 @@
         );
 }
 
-class _FakePageBuild_91 extends _i1.SmartFake implements _i14.PageBuild {
-  _FakePageBuild_91(
+class _FakePageBuild_86 extends _i1.SmartFake implements _i13.PageBuild {
+  _FakePageBuild_86(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -991,8 +935,8 @@
         );
 }
 
-class _FakeRelease_92 extends _i1.SmartFake implements _i14.Release {
-  _FakeRelease_92(
+class _FakeRelease_87 extends _i1.SmartFake implements _i13.Release {
+  _FakeRelease_87(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1001,8 +945,8 @@
         );
 }
 
-class _FakeReleaseAsset_93 extends _i1.SmartFake implements _i14.ReleaseAsset {
-  _FakeReleaseAsset_93(
+class _FakeReleaseAsset_88 extends _i1.SmartFake implements _i13.ReleaseAsset {
+  _FakeReleaseAsset_88(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1011,8 +955,8 @@
         );
 }
 
-class _FakeContributorParticipation_94 extends _i1.SmartFake implements _i14.ContributorParticipation {
-  _FakeContributorParticipation_94(
+class _FakeContributorParticipation_89 extends _i1.SmartFake implements _i13.ContributorParticipation {
+  _FakeContributorParticipation_89(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1021,8 +965,8 @@
         );
 }
 
-class _FakeRepositoryStatus_95 extends _i1.SmartFake implements _i14.RepositoryStatus {
-  _FakeRepositoryStatus_95(
+class _FakeRepositoryStatus_90 extends _i1.SmartFake implements _i13.RepositoryStatus {
+  _FakeRepositoryStatus_90(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1031,8 +975,8 @@
         );
 }
 
-class _FakeCombinedRepositoryStatus_96 extends _i1.SmartFake implements _i14.CombinedRepositoryStatus {
-  _FakeCombinedRepositoryStatus_96(
+class _FakeCombinedRepositoryStatus_91 extends _i1.SmartFake implements _i13.CombinedRepositoryStatus {
+  _FakeCombinedRepositoryStatus_91(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1041,8 +985,8 @@
         );
 }
 
-class _FakeReleaseNotes_97 extends _i1.SmartFake implements _i14.ReleaseNotes {
-  _FakeReleaseNotes_97(
+class _FakeReleaseNotes_92 extends _i1.SmartFake implements _i13.ReleaseNotes {
+  _FakeReleaseNotes_92(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1051,8 +995,8 @@
         );
 }
 
-class _FakeTableDataInsertAllResponse_98 extends _i1.SmartFake implements _i6.TableDataInsertAllResponse {
-  _FakeTableDataInsertAllResponse_98(
+class _FakeTableDataInsertAllResponse_93 extends _i1.SmartFake implements _i6.TableDataInsertAllResponse {
+  _FakeTableDataInsertAllResponse_93(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1061,8 +1005,8 @@
         );
 }
 
-class _FakeTableDataList_99 extends _i1.SmartFake implements _i6.TableDataList {
-  _FakeTableDataList_99(
+class _FakeTableDataList_94 extends _i1.SmartFake implements _i6.TableDataList {
+  _FakeTableDataList_94(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1071,8 +1015,8 @@
         );
 }
 
-class _FakeUser_100 extends _i1.SmartFake implements _i14.User {
-  _FakeUser_100(
+class _FakeUser_95 extends _i1.SmartFake implements _i13.User {
+  _FakeUser_95(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1081,8 +1025,8 @@
         );
 }
 
-class _FakeCurrentUser_101 extends _i1.SmartFake implements _i14.CurrentUser {
-  _FakeCurrentUser_101(
+class _FakeCurrentUser_96 extends _i1.SmartFake implements _i13.CurrentUser {
+  _FakeCurrentUser_96(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1091,8 +1035,8 @@
         );
 }
 
-class _FakeEntry_102<T> extends _i1.SmartFake implements _i29.Entry<T> {
-  _FakeEntry_102(
+class _FakeEntry_97<T> extends _i1.SmartFake implements _i27.Entry<T> {
+  _FakeEntry_97(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1101,8 +1045,8 @@
         );
 }
 
-class _FakeCache_103<T> extends _i1.SmartFake implements _i29.Cache<T> {
-  _FakeCache_103(
+class _FakeCache_98<T> extends _i1.SmartFake implements _i27.Cache<T> {
+  _FakeCache_98(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1111,8 +1055,8 @@
         );
 }
 
-class _FakeAuthentication_104 extends _i1.SmartFake implements _i14.Authentication {
-  _FakeAuthentication_104(
+class _FakeAuthentication_99 extends _i1.SmartFake implements _i13.Authentication {
+  _FakeAuthentication_99(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1121,8 +1065,8 @@
         );
 }
 
-class _FakeActivityService_105 extends _i1.SmartFake implements _i14.ActivityService {
-  _FakeActivityService_105(
+class _FakeActivityService_100 extends _i1.SmartFake implements _i13.ActivityService {
+  _FakeActivityService_100(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1131,8 +1075,8 @@
         );
 }
 
-class _FakeAuthorizationsService_106 extends _i1.SmartFake implements _i14.AuthorizationsService {
-  _FakeAuthorizationsService_106(
+class _FakeAuthorizationsService_101 extends _i1.SmartFake implements _i13.AuthorizationsService {
+  _FakeAuthorizationsService_101(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1141,8 +1085,8 @@
         );
 }
 
-class _FakeGistsService_107 extends _i1.SmartFake implements _i14.GistsService {
-  _FakeGistsService_107(
+class _FakeGistsService_102 extends _i1.SmartFake implements _i13.GistsService {
+  _FakeGistsService_102(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1151,8 +1095,8 @@
         );
 }
 
-class _FakeGitService_108 extends _i1.SmartFake implements _i14.GitService {
-  _FakeGitService_108(
+class _FakeGitService_103 extends _i1.SmartFake implements _i13.GitService {
+  _FakeGitService_103(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1161,8 +1105,8 @@
         );
 }
 
-class _FakeIssuesService_109 extends _i1.SmartFake implements _i14.IssuesService {
-  _FakeIssuesService_109(
+class _FakeIssuesService_104 extends _i1.SmartFake implements _i13.IssuesService {
+  _FakeIssuesService_104(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1171,8 +1115,8 @@
         );
 }
 
-class _FakeMiscService_110 extends _i1.SmartFake implements _i14.MiscService {
-  _FakeMiscService_110(
+class _FakeMiscService_105 extends _i1.SmartFake implements _i13.MiscService {
+  _FakeMiscService_105(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1181,8 +1125,8 @@
         );
 }
 
-class _FakeOrganizationsService_111 extends _i1.SmartFake implements _i14.OrganizationsService {
-  _FakeOrganizationsService_111(
+class _FakeOrganizationsService_106 extends _i1.SmartFake implements _i13.OrganizationsService {
+  _FakeOrganizationsService_106(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1191,8 +1135,8 @@
         );
 }
 
-class _FakePullRequestsService_112 extends _i1.SmartFake implements _i14.PullRequestsService {
-  _FakePullRequestsService_112(
+class _FakePullRequestsService_107 extends _i1.SmartFake implements _i13.PullRequestsService {
+  _FakePullRequestsService_107(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1201,8 +1145,8 @@
         );
 }
 
-class _FakeRepositoriesService_113 extends _i1.SmartFake implements _i14.RepositoriesService {
-  _FakeRepositoriesService_113(
+class _FakeRepositoriesService_108 extends _i1.SmartFake implements _i13.RepositoriesService {
+  _FakeRepositoriesService_108(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1211,8 +1155,8 @@
         );
 }
 
-class _FakeSearchService_114 extends _i1.SmartFake implements _i14.SearchService {
-  _FakeSearchService_114(
+class _FakeSearchService_109 extends _i1.SmartFake implements _i13.SearchService {
+  _FakeSearchService_109(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1221,8 +1165,8 @@
         );
 }
 
-class _FakeUrlShortenerService_115 extends _i1.SmartFake implements _i14.UrlShortenerService {
-  _FakeUrlShortenerService_115(
+class _FakeUrlShortenerService_110 extends _i1.SmartFake implements _i13.UrlShortenerService {
+  _FakeUrlShortenerService_110(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1231,8 +1175,8 @@
         );
 }
 
-class _FakeUsersService_116 extends _i1.SmartFake implements _i14.UsersService {
-  _FakeUsersService_116(
+class _FakeUsersService_111 extends _i1.SmartFake implements _i13.UsersService {
+  _FakeUsersService_111(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1241,8 +1185,8 @@
         );
 }
 
-class _FakeChecksService_117 extends _i1.SmartFake implements _i14.ChecksService {
-  _FakeChecksService_117(
+class _FakeChecksService_112 extends _i1.SmartFake implements _i13.ChecksService {
+  _FakeChecksService_112(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1251,8 +1195,8 @@
         );
 }
 
-class _FakeResponse_118 extends _i1.SmartFake implements _i2.Response {
-  _FakeResponse_118(
+class _FakeResponse_113 extends _i1.SmartFake implements _i2.Response {
+  _FakeResponse_113(
     Object parent,
     Invocation parentInvocation,
   ) : super(
@@ -1270,7 +1214,7 @@
   }
 
   @override
-  _i21.Future<_i2.Client> createAccessClient({
+  _i20.Future<_i2.Client> createAccessClient({
     List<String>? scopes = const [r'https://www.googleapis.com/auth/cloud-platform'],
     _i2.Client? baseClient,
   }) =>
@@ -1283,7 +1227,7 @@
             #baseClient: baseClient,
           },
         ),
-        returnValue: _i21.Future<_i2.Client>.value(_FakeClient_0(
+        returnValue: _i20.Future<_i2.Client>.value(_FakeClient_0(
           this,
           Invocation.method(
             #createAccessClient,
@@ -1294,13 +1238,13 @@
             },
           ),
         )),
-      ) as _i21.Future<_i2.Client>);
+      ) as _i20.Future<_i2.Client>);
 }
 
 /// A class which mocks [AccessTokenService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockAccessTokenService extends _i1.Mock implements _i30.AccessTokenService {
+class MockAccessTokenService extends _i1.Mock implements _i28.AccessTokenService {
   MockAccessTokenService() {
     _i1.throwOnMissingStub(this);
   }
@@ -1315,25 +1259,25 @@
       ) as _i3.Config);
 
   @override
-  _i21.Future<_i4.AccessToken> createAccessToken() => (super.noSuchMethod(
+  _i20.Future<_i4.AccessToken> createAccessToken() => (super.noSuchMethod(
         Invocation.method(
           #createAccessToken,
           [],
         ),
-        returnValue: _i21.Future<_i4.AccessToken>.value(_FakeAccessToken_2(
+        returnValue: _i20.Future<_i4.AccessToken>.value(_FakeAccessToken_2(
           this,
           Invocation.method(
             #createAccessToken,
             [],
           ),
         )),
-      ) as _i21.Future<_i4.AccessToken>);
+      ) as _i20.Future<_i4.AccessToken>);
 }
 
 /// A class which mocks [BigqueryService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockBigqueryService extends _i1.Mock implements _i17.BigqueryService {
+class MockBigqueryService extends _i1.Mock implements _i16.BigqueryService {
   MockBigqueryService() {
     _i1.throwOnMissingStub(this);
   }
@@ -1348,37 +1292,37 @@
       ) as _i5.AccessClientProvider);
 
   @override
-  _i21.Future<_i6.TabledataResource> defaultTabledata() => (super.noSuchMethod(
+  _i20.Future<_i6.TabledataResource> defaultTabledata() => (super.noSuchMethod(
         Invocation.method(
           #defaultTabledata,
           [],
         ),
-        returnValue: _i21.Future<_i6.TabledataResource>.value(_FakeTabledataResource_4(
+        returnValue: _i20.Future<_i6.TabledataResource>.value(_FakeTabledataResource_4(
           this,
           Invocation.method(
             #defaultTabledata,
             [],
           ),
         )),
-      ) as _i21.Future<_i6.TabledataResource>);
+      ) as _i20.Future<_i6.TabledataResource>);
 
   @override
-  _i21.Future<_i6.JobsResource> defaultJobs() => (super.noSuchMethod(
+  _i20.Future<_i6.JobsResource> defaultJobs() => (super.noSuchMethod(
         Invocation.method(
           #defaultJobs,
           [],
         ),
-        returnValue: _i21.Future<_i6.JobsResource>.value(_FakeJobsResource_5(
+        returnValue: _i20.Future<_i6.JobsResource>.value(_FakeJobsResource_5(
           this,
           Invocation.method(
             #defaultJobs,
             [],
           ),
         )),
-      ) as _i21.Future<_i6.JobsResource>);
+      ) as _i20.Future<_i6.JobsResource>);
 
   @override
-  _i21.Future<List<_i17.BuilderStatistic>> listBuilderStatistic(
+  _i20.Future<List<_i16.BuilderStatistic>> listBuilderStatistic(
     String? projectId, {
     int? limit = 100,
     String? bucket = r'prod',
@@ -1392,11 +1336,11 @@
             #bucket: bucket,
           },
         ),
-        returnValue: _i21.Future<List<_i17.BuilderStatistic>>.value(<_i17.BuilderStatistic>[]),
-      ) as _i21.Future<List<_i17.BuilderStatistic>>);
+        returnValue: _i20.Future<List<_i16.BuilderStatistic>>.value(<_i16.BuilderStatistic>[]),
+      ) as _i20.Future<List<_i16.BuilderStatistic>>);
 
   @override
-  _i21.Future<List<_i17.BuilderRecord>> listRecentBuildRecordsForBuilder(
+  _i20.Future<List<_i16.BuilderRecord>> listRecentBuildRecordsForBuilder(
     String? projectId, {
     String? builder,
     int? limit,
@@ -1410,14 +1354,14 @@
             #limit: limit,
           },
         ),
-        returnValue: _i21.Future<List<_i17.BuilderRecord>>.value(<_i17.BuilderRecord>[]),
-      ) as _i21.Future<List<_i17.BuilderRecord>>);
+        returnValue: _i20.Future<List<_i16.BuilderRecord>>.value(<_i16.BuilderRecord>[]),
+      ) as _i20.Future<List<_i16.BuilderRecord>>);
 }
 
 /// A class which mocks [BranchService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockBranchService extends _i1.Mock implements _i16.BranchService {
+class MockBranchService extends _i1.Mock implements _i15.BranchService {
   MockBranchService() {
     _i1.throwOnMissingStub(this);
   }
@@ -1441,16 +1385,16 @@
       ) as _i7.GerritService);
 
   @override
-  _i31.RetryOptions get retryOptions => (super.noSuchMethod(
+  _i29.RetryOptions get retryOptions => (super.noSuchMethod(
         Invocation.getter(#retryOptions),
-        returnValue: _i32.dummyValue<_i31.RetryOptions>(
+        returnValue: _i30.dummyValue<_i29.RetryOptions>(
           this,
           Invocation.getter(#retryOptions),
         ),
-      ) as _i31.RetryOptions);
+      ) as _i29.RetryOptions);
 
   @override
-  _i21.Future<void> branchFlutterRecipes(
+  _i20.Future<void> branchFlutterRecipes(
     String? branch,
     String? engineSha,
   ) =>
@@ -1462,14 +1406,14 @@
             engineSha,
           ],
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<List<Map<String, String>>> getReleaseBranches({
-    required _i18.GithubService? githubService,
-    required _i14.RepositorySlug? slug,
+  _i20.Future<List<Map<String, String>>> getReleaseBranches({
+    required _i17.GithubService? githubService,
+    required _i13.RepositorySlug? slug,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -1480,15 +1424,15 @@
             #slug: slug,
           },
         ),
-        returnValue: _i21.Future<List<Map<String, String>>>.value(<Map<String, String>>[]),
-      ) as _i21.Future<List<Map<String, String>>>);
+        returnValue: _i20.Future<List<Map<String, String>>>.value(<Map<String, String>>[]),
+      ) as _i20.Future<List<Map<String, String>>>);
 }
 
 /// A class which mocks [BuildBucketClient].
 ///
 /// See the documentation for Mockito's code generation for more information.
 // ignore: must_be_immutable
-class MockBuildBucketClient extends _i1.Mock implements _i16.BuildBucketClient {
+class MockBuildBucketClient extends _i1.Mock implements _i15.BuildBucketClient {
   MockBuildBucketClient() {
     _i1.throwOnMissingStub(this);
   }
@@ -1496,7 +1440,7 @@
   @override
   String get buildBucketBuildUri => (super.noSuchMethod(
         Invocation.getter(#buildBucketBuildUri),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#buildBucketBuildUri),
         ),
@@ -1505,7 +1449,7 @@
   @override
   String get buildBucketBuilderUri => (super.noSuchMethod(
         Invocation.getter(#buildBucketBuilderUri),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#buildBucketBuilderUri),
         ),
@@ -1521,7 +1465,7 @@
       ) as _i2.Client);
 
   @override
-  _i21.Future<_i8.Build> scheduleBuild(
+  _i20.Future<_i8.Build> scheduleBuild(
     _i8.ScheduleBuildRequest? request, {
     String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
   }) =>
@@ -1531,7 +1475,7 @@
           [request],
           {#buildBucketUri: buildBucketUri},
         ),
-        returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+        returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
           this,
           Invocation.method(
             #scheduleBuild,
@@ -1539,10 +1483,10 @@
             {#buildBucketUri: buildBucketUri},
           ),
         )),
-      ) as _i21.Future<_i8.Build>);
+      ) as _i20.Future<_i8.Build>);
 
   @override
-  _i21.Future<_i8.SearchBuildsResponse> searchBuilds(
+  _i20.Future<_i8.SearchBuildsResponse> searchBuilds(
     _i8.SearchBuildsRequest? request, {
     String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
   }) =>
@@ -1552,7 +1496,7 @@
           [request],
           {#buildBucketUri: buildBucketUri},
         ),
-        returnValue: _i21.Future<_i8.SearchBuildsResponse>.value(_FakeSearchBuildsResponse_8(
+        returnValue: _i20.Future<_i8.SearchBuildsResponse>.value(_FakeSearchBuildsResponse_8(
           this,
           Invocation.method(
             #searchBuilds,
@@ -1560,10 +1504,10 @@
             {#buildBucketUri: buildBucketUri},
           ),
         )),
-      ) as _i21.Future<_i8.SearchBuildsResponse>);
+      ) as _i20.Future<_i8.SearchBuildsResponse>);
 
   @override
-  _i21.Future<_i8.BatchResponse> batch(
+  _i20.Future<_i8.BatchResponse> batch(
     _i8.BatchRequest? request, {
     String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
   }) =>
@@ -1573,7 +1517,7 @@
           [request],
           {#buildBucketUri: buildBucketUri},
         ),
-        returnValue: _i21.Future<_i8.BatchResponse>.value(_FakeBatchResponse_9(
+        returnValue: _i20.Future<_i8.BatchResponse>.value(_FakeBatchResponse_9(
           this,
           Invocation.method(
             #batch,
@@ -1581,10 +1525,10 @@
             {#buildBucketUri: buildBucketUri},
           ),
         )),
-      ) as _i21.Future<_i8.BatchResponse>);
+      ) as _i20.Future<_i8.BatchResponse>);
 
   @override
-  _i21.Future<_i8.Build> cancelBuild(
+  _i20.Future<_i8.Build> cancelBuild(
     _i8.CancelBuildRequest? request, {
     String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
   }) =>
@@ -1594,7 +1538,7 @@
           [request],
           {#buildBucketUri: buildBucketUri},
         ),
-        returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+        returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
           this,
           Invocation.method(
             #cancelBuild,
@@ -1602,10 +1546,10 @@
             {#buildBucketUri: buildBucketUri},
           ),
         )),
-      ) as _i21.Future<_i8.Build>);
+      ) as _i20.Future<_i8.Build>);
 
   @override
-  _i21.Future<_i8.Build> getBuild(
+  _i20.Future<_i8.Build> getBuild(
     _i8.GetBuildRequest? request, {
     String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
   }) =>
@@ -1615,7 +1559,7 @@
           [request],
           {#buildBucketUri: buildBucketUri},
         ),
-        returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+        returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
           this,
           Invocation.method(
             #getBuild,
@@ -1623,10 +1567,10 @@
             {#buildBucketUri: buildBucketUri},
           ),
         )),
-      ) as _i21.Future<_i8.Build>);
+      ) as _i20.Future<_i8.Build>);
 
   @override
-  _i21.Future<_i8.ListBuildersResponse> listBuilders(
+  _i20.Future<_i8.ListBuildersResponse> listBuilders(
     _i8.ListBuildersRequest? request, {
     String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builders',
   }) =>
@@ -1636,7 +1580,7 @@
           [request],
           {#buildBucketUri: buildBucketUri},
         ),
-        returnValue: _i21.Future<_i8.ListBuildersResponse>.value(_FakeListBuildersResponse_10(
+        returnValue: _i20.Future<_i8.ListBuildersResponse>.value(_FakeListBuildersResponse_10(
           this,
           Invocation.method(
             #listBuilders,
@@ -1644,179 +1588,7 @@
             {#buildBucketUri: buildBucketUri},
           ),
         )),
-      ) as _i21.Future<_i8.ListBuildersResponse>);
-
-  @override
-  void close() => super.noSuchMethod(
-        Invocation.method(
-          #close,
-          [],
-        ),
-        returnValueForMissingStub: null,
-      );
-}
-
-/// A class which mocks [BuildBucketV2Client].
-///
-/// See the documentation for Mockito's code generation for more information.
-// ignore: must_be_immutable
-class MockBuildBucketV2Client extends _i1.Mock implements _i28.BuildBucketV2Client {
-  MockBuildBucketV2Client() {
-    _i1.throwOnMissingStub(this);
-  }
-
-  @override
-  String get buildBucketBuildUri => (super.noSuchMethod(
-        Invocation.getter(#buildBucketBuildUri),
-        returnValue: _i32.dummyValue<String>(
-          this,
-          Invocation.getter(#buildBucketBuildUri),
-        ),
-      ) as String);
-
-  @override
-  String get buildBucketBuilderUri => (super.noSuchMethod(
-        Invocation.getter(#buildBucketBuilderUri),
-        returnValue: _i32.dummyValue<String>(
-          this,
-          Invocation.getter(#buildBucketBuilderUri),
-        ),
-      ) as String);
-
-  @override
-  _i2.Client get httpClient => (super.noSuchMethod(
-        Invocation.getter(#httpClient),
-        returnValue: _FakeClient_0(
-          this,
-          Invocation.getter(#httpClient),
-        ),
-      ) as _i2.Client);
-
-  @override
-  _i21.Future<_i9.Build> scheduleBuild(
-    _i9.ScheduleBuildRequest? request, {
-    String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #scheduleBuild,
-          [request],
-          {#buildBucketUri: buildBucketUri},
-        ),
-        returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
-          this,
-          Invocation.method(
-            #scheduleBuild,
-            [request],
-            {#buildBucketUri: buildBucketUri},
-          ),
-        )),
-      ) as _i21.Future<_i9.Build>);
-
-  @override
-  _i21.Future<_i9.SearchBuildsResponse> searchBuilds(
-    _i9.SearchBuildsRequest? request, {
-    String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #searchBuilds,
-          [request],
-          {#buildBucketUri: buildBucketUri},
-        ),
-        returnValue: _i21.Future<_i9.SearchBuildsResponse>.value(_FakeSearchBuildsResponse_12(
-          this,
-          Invocation.method(
-            #searchBuilds,
-            [request],
-            {#buildBucketUri: buildBucketUri},
-          ),
-        )),
-      ) as _i21.Future<_i9.SearchBuildsResponse>);
-
-  @override
-  _i21.Future<_i9.BatchResponse> batch(
-    _i9.BatchRequest? request, {
-    String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #batch,
-          [request],
-          {#buildBucketUri: buildBucketUri},
-        ),
-        returnValue: _i21.Future<_i9.BatchResponse>.value(_FakeBatchResponse_13(
-          this,
-          Invocation.method(
-            #batch,
-            [request],
-            {#buildBucketUri: buildBucketUri},
-          ),
-        )),
-      ) as _i21.Future<_i9.BatchResponse>);
-
-  @override
-  _i21.Future<_i9.Build> cancelBuild(
-    _i9.CancelBuildRequest? request, {
-    String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #cancelBuild,
-          [request],
-          {#buildBucketUri: buildBucketUri},
-        ),
-        returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
-          this,
-          Invocation.method(
-            #cancelBuild,
-            [request],
-            {#buildBucketUri: buildBucketUri},
-          ),
-        )),
-      ) as _i21.Future<_i9.Build>);
-
-  @override
-  _i21.Future<_i9.Build> getBuild(
-    _i9.GetBuildRequest? request, {
-    String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getBuild,
-          [request],
-          {#buildBucketUri: buildBucketUri},
-        ),
-        returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
-          this,
-          Invocation.method(
-            #getBuild,
-            [request],
-            {#buildBucketUri: buildBucketUri},
-          ),
-        )),
-      ) as _i21.Future<_i9.Build>);
-
-  @override
-  _i21.Future<_i9.ListBuildersResponse> listBuilders(
-    _i9.ListBuildersRequest? request, {
-    String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builders',
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #listBuilders,
-          [request],
-          {#buildBucketUri: buildBucketUri},
-        ),
-        returnValue: _i21.Future<_i9.ListBuildersResponse>.value(_FakeListBuildersResponse_14(
-          this,
-          Invocation.method(
-            #listBuilders,
-            [request],
-            {#buildBucketUri: buildBucketUri},
-          ),
-        )),
-      ) as _i21.Future<_i9.ListBuildersResponse>);
+      ) as _i20.Future<_i8.ListBuildersResponse>);
 
   @override
   void close() => super.noSuchMethod(
@@ -1831,7 +1603,7 @@
 /// A class which mocks [CommitService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockCommitService extends _i1.Mock implements _i33.CommitService {
+class MockCommitService extends _i1.Mock implements _i31.CommitService {
   MockCommitService() {
     _i1.throwOnMissingStub(this);
   }
@@ -1846,33 +1618,33 @@
       ) as _i3.Config);
 
   @override
-  _i10.DatastoreServiceProvider get datastoreProvider => (super.noSuchMethod(
+  _i9.DatastoreServiceProvider get datastoreProvider => (super.noSuchMethod(
         Invocation.getter(#datastoreProvider),
-        returnValue: (_i12.DatastoreDB db) => _FakeDatastoreService_15(
+        returnValue: (_i11.DatastoreDB db) => _FakeDatastoreService_11(
           this,
           Invocation.getter(#datastoreProvider),
         ),
-      ) as _i10.DatastoreServiceProvider);
+      ) as _i9.DatastoreServiceProvider);
 
   @override
-  _i21.Future<void> handleCreateGithubRequest(_i34.CreateEvent? createEvent) => (super.noSuchMethod(
+  _i20.Future<void> handleCreateGithubRequest(_i32.CreateEvent? createEvent) => (super.noSuchMethod(
         Invocation.method(
           #handleCreateGithubRequest,
           [createEvent],
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<void> handlePushGithubRequest(Map<String, dynamic>? pushEvent) => (super.noSuchMethod(
+  _i20.Future<void> handlePushGithubRequest(Map<String, dynamic>? pushEvent) => (super.noSuchMethod(
         Invocation.method(
           #handlePushGithubRequest,
           [pushEvent],
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 }
 
 /// A class which mocks [Config].
@@ -1884,94 +1656,94 @@
   }
 
   @override
-  Set<_i14.RepositorySlug> get supportedRepos => (super.noSuchMethod(
+  Set<_i13.RepositorySlug> get supportedRepos => (super.noSuchMethod(
         Invocation.getter(#supportedRepos),
-        returnValue: <_i14.RepositorySlug>{},
-      ) as Set<_i14.RepositorySlug>);
+        returnValue: <_i13.RepositorySlug>{},
+      ) as Set<_i13.RepositorySlug>);
 
   @override
-  Set<_i14.RepositorySlug> get postsubmitSupportedRepos => (super.noSuchMethod(
+  Set<_i13.RepositorySlug> get postsubmitSupportedRepos => (super.noSuchMethod(
         Invocation.getter(#postsubmitSupportedRepos),
-        returnValue: <_i14.RepositorySlug>{},
-      ) as Set<_i14.RepositorySlug>);
+        returnValue: <_i13.RepositorySlug>{},
+      ) as Set<_i13.RepositorySlug>);
 
   @override
   String get autosubmitBot => (super.noSuchMethod(
         Invocation.getter(#autosubmitBot),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#autosubmitBot),
         ),
       ) as String);
 
   @override
-  _i11.Logging get loggingService => (super.noSuchMethod(
+  _i10.Logging get loggingService => (super.noSuchMethod(
         Invocation.getter(#loggingService),
-        returnValue: _FakeLogging_16(
+        returnValue: _FakeLogging_12(
           this,
           Invocation.getter(#loggingService),
         ),
-      ) as _i11.Logging);
+      ) as _i10.Logging);
 
   @override
-  _i21.Future<String> get githubPrivateKey => (super.noSuchMethod(
+  _i20.Future<String> get githubPrivateKey => (super.noSuchMethod(
         Invocation.getter(#githubPrivateKey),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.getter(#githubPrivateKey),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<String> get overrideTreeStatusLabel => (super.noSuchMethod(
+  _i20.Future<String> get overrideTreeStatusLabel => (super.noSuchMethod(
         Invocation.getter(#overrideTreeStatusLabel),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.getter(#overrideTreeStatusLabel),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<String> get githubPublicKey => (super.noSuchMethod(
+  _i20.Future<String> get githubPublicKey => (super.noSuchMethod(
         Invocation.getter(#githubPublicKey),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.getter(#githubPublicKey),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<String> get githubAppId => (super.noSuchMethod(
+  _i20.Future<String> get githubAppId => (super.noSuchMethod(
         Invocation.getter(#githubAppId),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.getter(#githubAppId),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<Map<String, dynamic>> get githubAppInstallations => (super.noSuchMethod(
+  _i20.Future<Map<String, dynamic>> get githubAppInstallations => (super.noSuchMethod(
         Invocation.getter(#githubAppInstallations),
-        returnValue: _i21.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
-      ) as _i21.Future<Map<String, dynamic>>);
+        returnValue: _i20.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
+      ) as _i20.Future<Map<String, dynamic>>);
 
   @override
   String get defaultRecipeBundleRef => (super.noSuchMethod(
         Invocation.getter(#defaultRecipeBundleRef),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#defaultRecipeBundleRef),
         ),
       ) as String);
 
   @override
-  _i12.DatastoreDB get db => (super.noSuchMethod(
+  _i11.DatastoreDB get db => (super.noSuchMethod(
         Invocation.getter(#db),
-        returnValue: _FakeDatastoreDB_17(
+        returnValue: _FakeDatastoreDB_13(
           this,
           Invocation.getter(#db),
         ),
-      ) as _i12.DatastoreDB);
+      ) as _i11.DatastoreDB);
 
   @override
   int get schedulingShardSize => (super.noSuchMethod(
@@ -2004,42 +1776,42 @@
       ) as int);
 
   @override
-  _i21.Future<List<String>> get releaseAccounts => (super.noSuchMethod(
+  _i20.Future<List<String>> get releaseAccounts => (super.noSuchMethod(
         Invocation.getter(#releaseAccounts),
-        returnValue: _i21.Future<List<String>>.value(<String>[]),
-      ) as _i21.Future<List<String>>);
+        returnValue: _i20.Future<List<String>>.value(<String>[]),
+      ) as _i20.Future<List<String>>);
 
   @override
-  _i21.Future<String> get oauthClientId => (super.noSuchMethod(
+  _i20.Future<String> get oauthClientId => (super.noSuchMethod(
         Invocation.getter(#oauthClientId),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.getter(#oauthClientId),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<String> get frobWebhookKey => (super.noSuchMethod(
+  _i20.Future<String> get frobWebhookKey => (super.noSuchMethod(
         Invocation.getter(#frobWebhookKey),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.getter(#frobWebhookKey),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<String> get githubOAuthToken => (super.noSuchMethod(
+  _i20.Future<String> get githubOAuthToken => (super.noSuchMethod(
         Invocation.getter(#githubOAuthToken),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.getter(#githubOAuthToken),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
   String get wrongBaseBranchPullRequestMessage => (super.noSuchMethod(
         Invocation.getter(#wrongBaseBranchPullRequestMessage),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#wrongBaseBranchPullRequestMessage),
         ),
@@ -2048,25 +1820,25 @@
   @override
   String get releaseBranchPullRequestMessage => (super.noSuchMethod(
         Invocation.getter(#releaseBranchPullRequestMessage),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#releaseBranchPullRequestMessage),
         ),
       ) as String);
 
   @override
-  _i21.Future<String> get webhookKey => (super.noSuchMethod(
+  _i20.Future<String> get webhookKey => (super.noSuchMethod(
         Invocation.getter(#webhookKey),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.getter(#webhookKey),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
   String get mergeConflictPullRequestMessage => (super.noSuchMethod(
         Invocation.getter(#mergeConflictPullRequestMessage),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#mergeConflictPullRequestMessage),
         ),
@@ -2075,7 +1847,7 @@
   @override
   String get missingTestsPullRequestMessage => (super.noSuchMethod(
         Invocation.getter(#missingTestsPullRequestMessage),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#missingTestsPullRequestMessage),
         ),
@@ -2084,7 +1856,7 @@
   @override
   String get flutterGoldPending => (super.noSuchMethod(
         Invocation.getter(#flutterGoldPending),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#flutterGoldPending),
         ),
@@ -2093,7 +1865,7 @@
   @override
   String get flutterGoldSuccess => (super.noSuchMethod(
         Invocation.getter(#flutterGoldSuccess),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#flutterGoldSuccess),
         ),
@@ -2102,7 +1874,7 @@
   @override
   String get flutterGoldChanges => (super.noSuchMethod(
         Invocation.getter(#flutterGoldChanges),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#flutterGoldChanges),
         ),
@@ -2111,7 +1883,7 @@
   @override
   String get flutterGoldStalePR => (super.noSuchMethod(
         Invocation.getter(#flutterGoldStalePR),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#flutterGoldStalePR),
         ),
@@ -2120,7 +1892,7 @@
   @override
   String get flutterGoldDraftChange => (super.noSuchMethod(
         Invocation.getter(#flutterGoldDraftChange),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#flutterGoldDraftChange),
         ),
@@ -2145,13 +1917,13 @@
       ) as int);
 
   @override
-  _i13.KeyHelper get keyHelper => (super.noSuchMethod(
+  _i12.KeyHelper get keyHelper => (super.noSuchMethod(
         Invocation.getter(#keyHelper),
-        returnValue: _FakeKeyHelper_18(
+        returnValue: _FakeKeyHelper_14(
           this,
           Invocation.getter(#keyHelper),
         ),
-      ) as _i13.KeyHelper);
+      ) as _i12.KeyHelper);
 
   @override
   int get maxRecords => (super.noSuchMethod(
@@ -2162,7 +1934,7 @@
   @override
   Duration get githubRequestDelay => (super.noSuchMethod(
         Invocation.getter(#githubRequestDelay),
-        returnValue: _FakeDuration_19(
+        returnValue: _FakeDuration_15(
           this,
           Invocation.getter(#githubRequestDelay),
         ),
@@ -2171,7 +1943,7 @@
   @override
   String get flutterBuild => (super.noSuchMethod(
         Invocation.getter(#flutterBuild),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#flutterBuild),
         ),
@@ -2180,7 +1952,7 @@
   @override
   String get flutterBuildDescription => (super.noSuchMethod(
         Invocation.getter(#flutterBuildDescription),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#flutterBuildDescription),
         ),
@@ -2189,7 +1961,7 @@
   @override
   String get waitingForTreeToGoGreenLabelName => (super.noSuchMethod(
         Invocation.getter(#waitingForTreeToGoGreenLabelName),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#waitingForTreeToGoGreenLabelName),
         ),
@@ -2202,13 +1974,13 @@
       ) as Set<String>);
 
   @override
-  _i21.Future<Iterable<_i35.Branch>> getBranches(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<Iterable<_i33.Branch>> getBranches(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #getBranches,
           [slug],
         ),
-        returnValue: _i21.Future<Iterable<_i35.Branch>>.value(<_i35.Branch>[]),
-      ) as _i21.Future<Iterable<_i35.Branch>>);
+        returnValue: _i20.Future<Iterable<_i33.Branch>>.value(<_i33.Branch>[]),
+      ) as _i20.Future<Iterable<_i33.Branch>>);
 
   @override
   String wrongHeadBranchPullRequestMessage(String? branch) => (super.noSuchMethod(
@@ -2216,7 +1988,7 @@
           #wrongHeadBranchPullRequestMessage,
           [branch],
         ),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.method(
             #wrongHeadBranchPullRequestMessage,
@@ -2231,7 +2003,7 @@
           #flutterGoldInitialAlert,
           [url],
         ),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.method(
             #flutterGoldInitialAlert,
@@ -2246,7 +2018,7 @@
           #flutterGoldFollowUpAlert,
           [url],
         ),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.method(
             #flutterGoldFollowUpAlert,
@@ -2256,12 +2028,12 @@
       ) as String);
 
   @override
-  String flutterGoldAlertConstant(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  String flutterGoldAlertConstant(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #flutterGoldAlertConstant,
           [slug],
         ),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.method(
             #flutterGoldAlertConstant,
@@ -2271,12 +2043,12 @@
       ) as String);
 
   @override
-  String flutterGoldCommentID(_i14.PullRequest? pr) => (super.noSuchMethod(
+  String flutterGoldCommentID(_i13.PullRequest? pr) => (super.noSuchMethod(
         Invocation.method(
           #flutterGoldCommentID,
           [pr],
         ),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.method(
             #flutterGoldCommentID,
@@ -2286,39 +2058,39 @@
       ) as String);
 
   @override
-  _i21.Future<String> generateJsonWebToken() => (super.noSuchMethod(
+  _i20.Future<String> generateJsonWebToken() => (super.noSuchMethod(
         Invocation.method(
           #generateJsonWebToken,
           [],
         ),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.method(
             #generateJsonWebToken,
             [],
           ),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<String> generateGithubToken(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<String> generateGithubToken(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #generateGithubToken,
           [slug],
         ),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.method(
             #generateGithubToken,
             [slug],
           ),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<_i14.GitHub> createGitHubClient({
-    _i14.PullRequest? pullRequest,
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.GitHub> createGitHubClient({
+    _i13.PullRequest? pullRequest,
+    _i13.RepositorySlug? slug,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -2329,7 +2101,7 @@
             #slug: slug,
           },
         ),
-        returnValue: _i21.Future<_i14.GitHub>.value(_FakeGitHub_20(
+        returnValue: _i20.Future<_i13.GitHub>.value(_FakeGitHub_16(
           this,
           Invocation.method(
             #createGitHubClient,
@@ -2340,134 +2112,134 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.GitHub>);
+      ) as _i20.Future<_i13.GitHub>);
 
   @override
-  _i14.GitHub createGitHubClientWithToken(String? token) => (super.noSuchMethod(
+  _i13.GitHub createGitHubClientWithToken(String? token) => (super.noSuchMethod(
         Invocation.method(
           #createGitHubClientWithToken,
           [token],
         ),
-        returnValue: _FakeGitHub_20(
+        returnValue: _FakeGitHub_16(
           this,
           Invocation.method(
             #createGitHubClientWithToken,
             [token],
           ),
         ),
-      ) as _i14.GitHub);
+      ) as _i13.GitHub);
 
   @override
-  _i21.Future<_i15.GraphQLClient> createGitHubGraphQLClient() => (super.noSuchMethod(
+  _i20.Future<_i14.GraphQLClient> createGitHubGraphQLClient() => (super.noSuchMethod(
         Invocation.method(
           #createGitHubGraphQLClient,
           [],
         ),
-        returnValue: _i21.Future<_i15.GraphQLClient>.value(_FakeGraphQLClient_21(
+        returnValue: _i20.Future<_i14.GraphQLClient>.value(_FakeGraphQLClient_17(
           this,
           Invocation.method(
             #createGitHubGraphQLClient,
             [],
           ),
         )),
-      ) as _i21.Future<_i15.GraphQLClient>);
+      ) as _i20.Future<_i14.GraphQLClient>);
 
   @override
-  _i21.Future<_i16.FirestoreService> createFirestoreService() => (super.noSuchMethod(
+  _i20.Future<_i15.FirestoreService> createFirestoreService() => (super.noSuchMethod(
         Invocation.method(
           #createFirestoreService,
           [],
         ),
-        returnValue: _i21.Future<_i16.FirestoreService>.value(_FakeFirestoreService_22(
+        returnValue: _i20.Future<_i15.FirestoreService>.value(_FakeFirestoreService_18(
           this,
           Invocation.method(
             #createFirestoreService,
             [],
           ),
         )),
-      ) as _i21.Future<_i16.FirestoreService>);
+      ) as _i20.Future<_i15.FirestoreService>);
 
   @override
-  _i21.Future<_i17.BigqueryService> createBigQueryService() => (super.noSuchMethod(
+  _i20.Future<_i16.BigqueryService> createBigQueryService() => (super.noSuchMethod(
         Invocation.method(
           #createBigQueryService,
           [],
         ),
-        returnValue: _i21.Future<_i17.BigqueryService>.value(_FakeBigqueryService_23(
+        returnValue: _i20.Future<_i16.BigqueryService>.value(_FakeBigqueryService_19(
           this,
           Invocation.method(
             #createBigQueryService,
             [],
           ),
         )),
-      ) as _i21.Future<_i17.BigqueryService>);
+      ) as _i20.Future<_i16.BigqueryService>);
 
   @override
-  _i21.Future<_i6.TabledataResource> createTabledataResourceApi() => (super.noSuchMethod(
+  _i20.Future<_i6.TabledataResource> createTabledataResourceApi() => (super.noSuchMethod(
         Invocation.method(
           #createTabledataResourceApi,
           [],
         ),
-        returnValue: _i21.Future<_i6.TabledataResource>.value(_FakeTabledataResource_4(
+        returnValue: _i20.Future<_i6.TabledataResource>.value(_FakeTabledataResource_4(
           this,
           Invocation.method(
             #createTabledataResourceApi,
             [],
           ),
         )),
-      ) as _i21.Future<_i6.TabledataResource>);
+      ) as _i20.Future<_i6.TabledataResource>);
 
   @override
-  _i21.Future<_i18.GithubService> createDefaultGitHubService() => (super.noSuchMethod(
+  _i20.Future<_i17.GithubService> createDefaultGitHubService() => (super.noSuchMethod(
         Invocation.method(
           #createDefaultGitHubService,
           [],
         ),
-        returnValue: _i21.Future<_i18.GithubService>.value(_FakeGithubService_24(
+        returnValue: _i20.Future<_i17.GithubService>.value(_FakeGithubService_20(
           this,
           Invocation.method(
             #createDefaultGitHubService,
             [],
           ),
         )),
-      ) as _i21.Future<_i18.GithubService>);
+      ) as _i20.Future<_i17.GithubService>);
 
   @override
-  _i21.Future<_i18.GithubService> createGithubService(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<_i17.GithubService> createGithubService(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #createGithubService,
           [slug],
         ),
-        returnValue: _i21.Future<_i18.GithubService>.value(_FakeGithubService_24(
+        returnValue: _i20.Future<_i17.GithubService>.value(_FakeGithubService_20(
           this,
           Invocation.method(
             #createGithubService,
             [slug],
           ),
         )),
-      ) as _i21.Future<_i18.GithubService>);
+      ) as _i20.Future<_i17.GithubService>);
 
   @override
-  _i18.GithubService createGithubServiceWithToken(String? token) => (super.noSuchMethod(
+  _i17.GithubService createGithubServiceWithToken(String? token) => (super.noSuchMethod(
         Invocation.method(
           #createGithubServiceWithToken,
           [token],
         ),
-        returnValue: _FakeGithubService_24(
+        returnValue: _FakeGithubService_20(
           this,
           Invocation.method(
             #createGithubServiceWithToken,
             [token],
           ),
         ),
-      ) as _i18.GithubService);
+      ) as _i17.GithubService);
 }
 
 /// A class which mocks [DatastoreService].
 ///
 /// See the documentation for Mockito's code generation for more information.
 // ignore: must_be_immutable
-class MockDatastoreService extends _i1.Mock implements _i10.DatastoreService {
+class MockDatastoreService extends _i1.Mock implements _i9.DatastoreService {
   MockDatastoreService() {
     _i1.throwOnMissingStub(this);
   }
@@ -2479,29 +2251,29 @@
       ) as int);
 
   @override
-  _i12.DatastoreDB get db => (super.noSuchMethod(
+  _i11.DatastoreDB get db => (super.noSuchMethod(
         Invocation.getter(#db),
-        returnValue: _FakeDatastoreDB_17(
+        returnValue: _FakeDatastoreDB_13(
           this,
           Invocation.getter(#db),
         ),
-      ) as _i12.DatastoreDB);
+      ) as _i11.DatastoreDB);
 
   @override
-  _i31.RetryOptions get retryOptions => (super.noSuchMethod(
+  _i29.RetryOptions get retryOptions => (super.noSuchMethod(
         Invocation.getter(#retryOptions),
-        returnValue: _i32.dummyValue<_i31.RetryOptions>(
+        returnValue: _i30.dummyValue<_i29.RetryOptions>(
           this,
           Invocation.getter(#retryOptions),
         ),
-      ) as _i31.RetryOptions);
+      ) as _i29.RetryOptions);
 
   @override
-  _i21.Stream<_i36.Commit> queryRecentCommits({
+  _i20.Stream<_i34.Commit> queryRecentCommits({
     int? limit = 100,
     int? timestamp,
     String? branch,
-    required _i14.RepositorySlug? slug,
+    required _i13.RepositorySlug? slug,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -2514,20 +2286,20 @@
             #slug: slug,
           },
         ),
-        returnValue: _i21.Stream<_i36.Commit>.empty(),
-      ) as _i21.Stream<_i36.Commit>);
+        returnValue: _i20.Stream<_i34.Commit>.empty(),
+      ) as _i20.Stream<_i34.Commit>);
 
   @override
-  _i21.Stream<_i35.Branch> queryBranches() => (super.noSuchMethod(
+  _i20.Stream<_i33.Branch> queryBranches() => (super.noSuchMethod(
         Invocation.method(
           #queryBranches,
           [],
         ),
-        returnValue: _i21.Stream<_i35.Branch>.empty(),
-      ) as _i21.Stream<_i35.Branch>);
+        returnValue: _i20.Stream<_i33.Branch>.empty(),
+      ) as _i20.Stream<_i33.Branch>);
 
   @override
-  _i21.Stream<_i37.Task> queryRecentTasksByName({
+  _i20.Stream<_i35.Task> queryRecentTasksByName({
     int? limit = 100,
     required String? name,
   }) =>
@@ -2540,15 +2312,15 @@
             #name: name,
           },
         ),
-        returnValue: _i21.Stream<_i37.Task>.empty(),
-      ) as _i21.Stream<_i37.Task>);
+        returnValue: _i20.Stream<_i35.Task>.empty(),
+      ) as _i20.Stream<_i35.Task>);
 
   @override
-  _i21.Stream<_i37.FullTask> queryRecentTasks({
+  _i20.Stream<_i35.FullTask> queryRecentTasks({
     String? taskName,
     int? commitLimit = 20,
     String? branch,
-    required _i14.RepositorySlug? slug,
+    required _i13.RepositorySlug? slug,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -2561,22 +2333,22 @@
             #slug: slug,
           },
         ),
-        returnValue: _i21.Stream<_i37.FullTask>.empty(),
-      ) as _i21.Stream<_i37.FullTask>);
+        returnValue: _i20.Stream<_i35.FullTask>.empty(),
+      ) as _i20.Stream<_i35.FullTask>);
 
   @override
-  _i21.Future<List<_i38.Stage>> queryTasksGroupedByStage(_i36.Commit? commit) => (super.noSuchMethod(
+  _i20.Future<List<_i36.Stage>> queryTasksGroupedByStage(_i34.Commit? commit) => (super.noSuchMethod(
         Invocation.method(
           #queryTasksGroupedByStage,
           [commit],
         ),
-        returnValue: _i21.Future<List<_i38.Stage>>.value(<_i38.Stage>[]),
-      ) as _i21.Future<List<_i38.Stage>>);
+        returnValue: _i20.Future<List<_i36.Stage>>.value(<_i36.Stage>[]),
+      ) as _i20.Future<List<_i36.Stage>>);
 
   @override
-  _i21.Future<_i19.GithubBuildStatusUpdate> queryLastStatusUpdate(
-    _i14.RepositorySlug? slug,
-    _i14.PullRequest? pr,
+  _i20.Future<_i18.GithubBuildStatusUpdate> queryLastStatusUpdate(
+    _i13.RepositorySlug? slug,
+    _i13.PullRequest? pr,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -2586,7 +2358,7 @@
             pr,
           ],
         ),
-        returnValue: _i21.Future<_i19.GithubBuildStatusUpdate>.value(_FakeGithubBuildStatusUpdate_25(
+        returnValue: _i20.Future<_i18.GithubBuildStatusUpdate>.value(_FakeGithubBuildStatusUpdate_21(
           this,
           Invocation.method(
             #queryLastStatusUpdate,
@@ -2596,12 +2368,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i19.GithubBuildStatusUpdate>);
+      ) as _i20.Future<_i18.GithubBuildStatusUpdate>);
 
   @override
-  _i21.Future<_i20.GithubGoldStatusUpdate> queryLastGoldUpdate(
-    _i14.RepositorySlug? slug,
-    _i14.PullRequest? pr,
+  _i20.Future<_i19.GithubGoldStatusUpdate> queryLastGoldUpdate(
+    _i13.RepositorySlug? slug,
+    _i13.PullRequest? pr,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -2611,7 +2383,7 @@
             pr,
           ],
         ),
-        returnValue: _i21.Future<_i20.GithubGoldStatusUpdate>.value(_FakeGithubGoldStatusUpdate_26(
+        returnValue: _i20.Future<_i19.GithubGoldStatusUpdate>.value(_FakeGithubGoldStatusUpdate_22(
           this,
           Invocation.method(
             #queryLastGoldUpdate,
@@ -2621,40 +2393,40 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i20.GithubGoldStatusUpdate>);
+      ) as _i20.Future<_i19.GithubGoldStatusUpdate>);
 
   @override
-  _i21.Future<List<List<_i12.Model<dynamic>>>> shard(List<_i12.Model<dynamic>>? rows) => (super.noSuchMethod(
+  _i20.Future<List<List<_i11.Model<dynamic>>>> shard(List<_i11.Model<dynamic>>? rows) => (super.noSuchMethod(
         Invocation.method(
           #shard,
           [rows],
         ),
-        returnValue: _i21.Future<List<List<_i12.Model<dynamic>>>>.value(<List<_i12.Model<dynamic>>>[]),
-      ) as _i21.Future<List<List<_i12.Model<dynamic>>>>);
+        returnValue: _i20.Future<List<List<_i11.Model<dynamic>>>>.value(<List<_i11.Model<dynamic>>>[]),
+      ) as _i20.Future<List<List<_i11.Model<dynamic>>>>);
 
   @override
-  _i21.Future<void> insert(List<_i12.Model<dynamic>>? rows) => (super.noSuchMethod(
+  _i20.Future<void> insert(List<_i11.Model<dynamic>>? rows) => (super.noSuchMethod(
         Invocation.method(
           #insert,
           [rows],
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<List<T?>> lookupByKey<T extends _i12.Model<dynamic>>(List<_i12.Key<dynamic>>? keys) =>
+  _i20.Future<List<T?>> lookupByKey<T extends _i11.Model<dynamic>>(List<_i11.Key<dynamic>>? keys) =>
       (super.noSuchMethod(
         Invocation.method(
           #lookupByKey,
           [keys],
         ),
-        returnValue: _i21.Future<List<T?>>.value(<T?>[]),
-      ) as _i21.Future<List<T?>>);
+        returnValue: _i20.Future<List<T?>>.value(<T?>[]),
+      ) as _i20.Future<List<T?>>);
 
   @override
-  _i21.Future<T> lookupByValue<T extends _i12.Model<dynamic>>(
-    _i12.Key<dynamic>? key, {
+  _i20.Future<T> lookupByValue<T extends _i11.Model<dynamic>>(
+    _i11.Key<dynamic>? key, {
     T Function()? orElse,
   }) =>
       (super.noSuchMethod(
@@ -2663,8 +2435,8 @@
           [key],
           {#orElse: orElse},
         ),
-        returnValue: _i32.ifNotNull(
-              _i32.dummyValueOrNull<T>(
+        returnValue: _i30.ifNotNull(
+              _i30.dummyValueOrNull<T>(
                 this,
                 Invocation.method(
                   #lookupByValue,
@@ -2672,9 +2444,9 @@
                   {#orElse: orElse},
                 ),
               ),
-              (T v) => _i21.Future<T>.value(v),
+              (T v) => _i20.Future<T>.value(v),
             ) ??
-            _FakeFuture_27<T>(
+            _FakeFuture_23<T>(
               this,
               Invocation.method(
                 #lookupByValue,
@@ -2682,19 +2454,19 @@
                 {#orElse: orElse},
               ),
             ),
-      ) as _i21.Future<T>);
+      ) as _i20.Future<T>);
 
   @override
-  _i21.Future<T?> withTransaction<T>(_i21.Future<T> Function(_i12.Transaction)? handler) => (super.noSuchMethod(
+  _i20.Future<T?> withTransaction<T>(_i20.Future<T> Function(_i11.Transaction)? handler) => (super.noSuchMethod(
         Invocation.method(
           #withTransaction,
           [handler],
         ),
-        returnValue: _i21.Future<T?>.value(),
-      ) as _i21.Future<T?>);
+        returnValue: _i20.Future<T?>.value(),
+      ) as _i20.Future<T?>);
 
   @override
-  _i21.Future<_i37.Task?> getTaskFromBuildbucketBuild(
+  _i20.Future<_i35.Task?> getTaskFromBuildbucketBuild(
     _i8.Build? build, {
     String? customName,
   }) =>
@@ -2704,40 +2476,26 @@
           [build],
           {#customName: customName},
         ),
-        returnValue: _i21.Future<_i37.Task?>.value(),
-      ) as _i21.Future<_i37.Task?>);
-
-  @override
-  _i21.Future<_i37.Task?> getTaskFromBuildbucketV2Build(
-    _i9.Build? build, {
-    String? customName,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getTaskFromBuildbucketV2Build,
-          [build],
-          {#customName: customName},
-        ),
-        returnValue: _i21.Future<_i37.Task?>.value(),
-      ) as _i21.Future<_i37.Task?>);
+        returnValue: _i20.Future<_i35.Task?>.value(),
+      ) as _i20.Future<_i35.Task?>);
 }
 
 /// A class which mocks [FakeEntry].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockFakeEntry extends _i1.Mock implements _i39.FakeEntry {
+class MockFakeEntry extends _i1.Mock implements _i37.FakeEntry {
   MockFakeEntry() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i40.Uint8List get value => (super.noSuchMethod(
+  _i38.Uint8List get value => (super.noSuchMethod(
         Invocation.getter(#value),
-        returnValue: _i40.Uint8List(0),
-      ) as _i40.Uint8List);
+        returnValue: _i38.Uint8List(0),
+      ) as _i38.Uint8List);
 
   @override
-  set value(_i40.Uint8List? _value) => super.noSuchMethod(
+  set value(_i38.Uint8List? _value) => super.noSuchMethod(
         Invocation.setter(
           #value,
           _value,
@@ -2746,8 +2504,8 @@
       );
 
   @override
-  _i21.Future<_i40.Uint8List> get([
-    _i21.Future<_i40.Uint8List?> Function()? create,
+  _i20.Future<_i38.Uint8List> get([
+    _i20.Future<_i38.Uint8List?> Function()? create,
     Duration? ttl,
   ]) =>
       (super.noSuchMethod(
@@ -2758,23 +2516,23 @@
             ttl,
           ],
         ),
-        returnValue: _i21.Future<_i40.Uint8List>.value(_i40.Uint8List(0)),
-      ) as _i21.Future<_i40.Uint8List>);
+        returnValue: _i20.Future<_i38.Uint8List>.value(_i38.Uint8List(0)),
+      ) as _i20.Future<_i38.Uint8List>);
 
   @override
-  _i21.Future<void> purge({int? retries = 0}) => (super.noSuchMethod(
+  _i20.Future<void> purge({int? retries = 0}) => (super.noSuchMethod(
         Invocation.method(
           #purge,
           [],
           {#retries: retries},
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<_i40.Uint8List?> set(
-    _i40.Uint8List? value, [
+  _i20.Future<_i38.Uint8List?> set(
+    _i38.Uint8List? value, [
     Duration? ttl,
   ]) =>
       (super.noSuchMethod(
@@ -2785,14 +2543,14 @@
             ttl,
           ],
         ),
-        returnValue: _i21.Future<_i40.Uint8List?>.value(),
-      ) as _i21.Future<_i40.Uint8List?>);
+        returnValue: _i20.Future<_i38.Uint8List?>.value(),
+      ) as _i20.Future<_i38.Uint8List?>);
 }
 
 /// A class which mocks [FirestoreService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockFirestoreService extends _i1.Mock implements _i16.FirestoreService {
+class MockFirestoreService extends _i1.Mock implements _i15.FirestoreService {
   MockFirestoreService() {
     _i1.throwOnMissingStub(this);
   }
@@ -2807,39 +2565,39 @@
       ) as _i5.AccessClientProvider);
 
   @override
-  _i21.Future<_i22.ProjectsDatabasesDocumentsResource> documentResource() => (super.noSuchMethod(
+  _i20.Future<_i21.ProjectsDatabasesDocumentsResource> documentResource() => (super.noSuchMethod(
         Invocation.method(
           #documentResource,
           [],
         ),
         returnValue:
-            _i21.Future<_i22.ProjectsDatabasesDocumentsResource>.value(_FakeProjectsDatabasesDocumentsResource_28(
+            _i20.Future<_i21.ProjectsDatabasesDocumentsResource>.value(_FakeProjectsDatabasesDocumentsResource_24(
           this,
           Invocation.method(
             #documentResource,
             [],
           ),
         )),
-      ) as _i21.Future<_i22.ProjectsDatabasesDocumentsResource>);
+      ) as _i20.Future<_i21.ProjectsDatabasesDocumentsResource>);
 
   @override
-  _i21.Future<_i22.Document> getDocument(String? name) => (super.noSuchMethod(
+  _i20.Future<_i21.Document> getDocument(String? name) => (super.noSuchMethod(
         Invocation.method(
           #getDocument,
           [name],
         ),
-        returnValue: _i21.Future<_i22.Document>.value(_FakeDocument_29(
+        returnValue: _i20.Future<_i21.Document>.value(_FakeDocument_25(
           this,
           Invocation.method(
             #getDocument,
             [name],
           ),
         )),
-      ) as _i21.Future<_i22.Document>);
+      ) as _i20.Future<_i21.Document>);
 
   @override
-  _i21.Future<_i22.BatchWriteResponse> batchWriteDocuments(
-    _i22.BatchWriteRequest? request,
+  _i20.Future<_i21.BatchWriteResponse> batchWriteDocuments(
+    _i21.BatchWriteRequest? request,
     String? database,
   ) =>
       (super.noSuchMethod(
@@ -2850,7 +2608,7 @@
             database,
           ],
         ),
-        returnValue: _i21.Future<_i22.BatchWriteResponse>.value(_FakeBatchWriteResponse_30(
+        returnValue: _i20.Future<_i21.BatchWriteResponse>.value(_FakeBatchWriteResponse_26(
           this,
           Invocation.method(
             #batchWriteDocuments,
@@ -2860,29 +2618,29 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i22.BatchWriteResponse>);
+      ) as _i20.Future<_i21.BatchWriteResponse>);
 
   @override
-  _i21.Future<_i22.CommitResponse> writeViaTransaction(List<_i22.Write>? writes) => (super.noSuchMethod(
+  _i20.Future<_i21.CommitResponse> writeViaTransaction(List<_i21.Write>? writes) => (super.noSuchMethod(
         Invocation.method(
           #writeViaTransaction,
           [writes],
         ),
-        returnValue: _i21.Future<_i22.CommitResponse>.value(_FakeCommitResponse_31(
+        returnValue: _i20.Future<_i21.CommitResponse>.value(_FakeCommitResponse_27(
           this,
           Invocation.method(
             #writeViaTransaction,
             [writes],
           ),
         )),
-      ) as _i21.Future<_i22.CommitResponse>);
+      ) as _i20.Future<_i21.CommitResponse>);
 
   @override
-  _i21.Future<List<_i41.Commit>> queryRecentCommits({
+  _i20.Future<List<_i39.Commit>> queryRecentCommits({
     int? limit = 100,
     int? timestamp,
     String? branch,
-    required _i14.RepositorySlug? slug,
+    required _i13.RepositorySlug? slug,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -2895,21 +2653,21 @@
             #slug: slug,
           },
         ),
-        returnValue: _i21.Future<List<_i41.Commit>>.value(<_i41.Commit>[]),
-      ) as _i21.Future<List<_i41.Commit>>);
+        returnValue: _i20.Future<List<_i39.Commit>>.value(<_i39.Commit>[]),
+      ) as _i20.Future<List<_i39.Commit>>);
 
   @override
-  _i21.Future<List<_i42.Task>> queryCommitTasks(String? commitSha) => (super.noSuchMethod(
+  _i20.Future<List<_i40.Task>> queryCommitTasks(String? commitSha) => (super.noSuchMethod(
         Invocation.method(
           #queryCommitTasks,
           [commitSha],
         ),
-        returnValue: _i21.Future<List<_i42.Task>>.value(<_i42.Task>[]),
-      ) as _i21.Future<List<_i42.Task>>);
+        returnValue: _i20.Future<List<_i40.Task>>.value(<_i40.Task>[]),
+      ) as _i20.Future<List<_i40.Task>>);
 
   @override
-  _i21.Future<_i23.GithubGoldStatus> queryLastGoldStatus(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i22.GithubGoldStatus> queryLastGoldStatus(
+    _i13.RepositorySlug? slug,
     int? prNumber,
   ) =>
       (super.noSuchMethod(
@@ -2920,7 +2678,7 @@
             prNumber,
           ],
         ),
-        returnValue: _i21.Future<_i23.GithubGoldStatus>.value(_FakeGithubGoldStatus_32(
+        returnValue: _i20.Future<_i22.GithubGoldStatus>.value(_FakeGithubGoldStatus_28(
           this,
           Invocation.method(
             #queryLastGoldStatus,
@@ -2930,11 +2688,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i23.GithubGoldStatus>);
+      ) as _i20.Future<_i22.GithubGoldStatus>);
 
   @override
-  _i21.Future<_i24.GithubBuildStatus> queryLastBuildStatus(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i23.GithubBuildStatus> queryLastBuildStatus(
+    _i13.RepositorySlug? slug,
     int? prNumber,
     String? head,
   ) =>
@@ -2947,7 +2705,7 @@
             head,
           ],
         ),
-        returnValue: _i21.Future<_i24.GithubBuildStatus>.value(_FakeGithubBuildStatus_33(
+        returnValue: _i20.Future<_i23.GithubBuildStatus>.value(_FakeGithubBuildStatus_29(
           this,
           Invocation.method(
             #queryLastBuildStatus,
@@ -2958,25 +2716,25 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i24.GithubBuildStatus>);
+      ) as _i20.Future<_i23.GithubBuildStatus>);
 
   @override
-  _i22.Value getValueFromFilter(Object? comparisonOject) => (super.noSuchMethod(
+  _i21.Value getValueFromFilter(Object? comparisonOject) => (super.noSuchMethod(
         Invocation.method(
           #getValueFromFilter,
           [comparisonOject],
         ),
-        returnValue: _FakeValue_34(
+        returnValue: _FakeValue_30(
           this,
           Invocation.method(
             #getValueFromFilter,
             [comparisonOject],
           ),
         ),
-      ) as _i22.Value);
+      ) as _i21.Value);
 
   @override
-  _i22.Filter generateFilter(
+  _i21.Filter generateFilter(
     Map<String, Object>? filterMap,
     String? compositeFilterOp,
   ) =>
@@ -2988,7 +2746,7 @@
             compositeFilterOp,
           ],
         ),
-        returnValue: _FakeFilter_35(
+        returnValue: _FakeFilter_31(
           this,
           Invocation.method(
             #generateFilter,
@@ -2998,10 +2756,10 @@
             ],
           ),
         ),
-      ) as _i22.Filter);
+      ) as _i21.Filter);
 
   @override
-  _i21.Future<List<_i22.Document>> query(
+  _i20.Future<List<_i21.Document>> query(
     String? collectionId,
     Map<String, Object>? filterMap, {
     int? limit,
@@ -3021,39 +2779,39 @@
             #compositeFilterOp: compositeFilterOp,
           },
         ),
-        returnValue: _i21.Future<List<_i22.Document>>.value(<_i22.Document>[]),
-      ) as _i21.Future<List<_i22.Document>>);
+        returnValue: _i20.Future<List<_i21.Document>>.value(<_i21.Document>[]),
+      ) as _i20.Future<List<_i21.Document>>);
 
   @override
-  List<_i22.Document> documentsFromQueryResponse(List<_i22.RunQueryResponseElement>? runQueryResponseElements) =>
+  List<_i21.Document> documentsFromQueryResponse(List<_i21.RunQueryResponseElement>? runQueryResponseElements) =>
       (super.noSuchMethod(
         Invocation.method(
           #documentsFromQueryResponse,
           [runQueryResponseElements],
         ),
-        returnValue: <_i22.Document>[],
-      ) as List<_i22.Document>);
+        returnValue: <_i21.Document>[],
+      ) as List<_i21.Document>);
 }
 
 /// A class which mocks [IssuesService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockIssuesService extends _i1.Mock implements _i14.IssuesService {
+class MockIssuesService extends _i1.Mock implements _i13.IssuesService {
   MockIssuesService() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i14.GitHub get github => (super.noSuchMethod(
+  _i13.GitHub get github => (super.noSuchMethod(
         Invocation.getter(#github),
-        returnValue: _FakeGitHub_20(
+        returnValue: _FakeGitHub_16(
           this,
           Invocation.getter(#github),
         ),
-      ) as _i14.GitHub);
+      ) as _i13.GitHub);
 
   @override
-  _i21.Stream<_i14.Issue> listAll({
+  _i20.Stream<_i13.Issue> listAll({
     int? milestoneNumber,
     String? state,
     String? direction,
@@ -3076,11 +2834,11 @@
             #labels: labels,
           },
         ),
-        returnValue: _i21.Stream<_i14.Issue>.empty(),
-      ) as _i21.Stream<_i14.Issue>);
+        returnValue: _i20.Stream<_i13.Issue>.empty(),
+      ) as _i20.Stream<_i13.Issue>);
 
   @override
-  _i21.Stream<_i14.Issue> listByUser({
+  _i20.Stream<_i13.Issue> listByUser({
     int? milestoneNumber,
     String? state,
     String? direction,
@@ -3103,11 +2861,11 @@
             #labels: labels,
           },
         ),
-        returnValue: _i21.Stream<_i14.Issue>.empty(),
-      ) as _i21.Stream<_i14.Issue>);
+        returnValue: _i20.Stream<_i13.Issue>.empty(),
+      ) as _i20.Stream<_i13.Issue>);
 
   @override
-  _i21.Stream<_i14.Issue> listByOrg(
+  _i20.Stream<_i13.Issue> listByOrg(
     String? org, {
     int? milestoneNumber,
     String? state,
@@ -3131,12 +2889,12 @@
             #labels: labels,
           },
         ),
-        returnValue: _i21.Stream<_i14.Issue>.empty(),
-      ) as _i21.Stream<_i14.Issue>);
+        returnValue: _i20.Stream<_i13.Issue>.empty(),
+      ) as _i20.Stream<_i13.Issue>);
 
   @override
-  _i21.Stream<_i14.Issue> listByRepo(
-    _i14.RepositorySlug? slug, {
+  _i20.Stream<_i13.Issue> listByRepo(
+    _i13.RepositorySlug? slug, {
     int? milestoneNumber,
     String? state,
     String? direction,
@@ -3159,14 +2917,14 @@
             #labels: labels,
           },
         ),
-        returnValue: _i21.Stream<_i14.Issue>.empty(),
-      ) as _i21.Stream<_i14.Issue>);
+        returnValue: _i20.Stream<_i13.Issue>.empty(),
+      ) as _i20.Stream<_i13.Issue>);
 
   @override
-  _i21.Stream<_i14.Reaction> listReactions(
-    _i14.RepositorySlug? slug,
+  _i20.Stream<_i13.Reaction> listReactions(
+    _i13.RepositorySlug? slug,
     int? issueNumber, {
-    _i14.ReactionType? content,
+    _i13.ReactionType? content,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -3177,14 +2935,14 @@
           ],
           {#content: content},
         ),
-        returnValue: _i21.Stream<_i14.Reaction>.empty(),
-      ) as _i21.Stream<_i14.Reaction>);
+        returnValue: _i20.Stream<_i13.Reaction>.empty(),
+      ) as _i20.Stream<_i13.Reaction>);
 
   @override
-  _i21.Future<_i14.Issue> edit(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.Issue> edit(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
-    _i14.IssueRequest? issue,
+    _i13.IssueRequest? issue,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -3195,7 +2953,7 @@
             issue,
           ],
         ),
-        returnValue: _i21.Future<_i14.Issue>.value(_FakeIssue_36(
+        returnValue: _i20.Future<_i13.Issue>.value(_FakeIssue_32(
           this,
           Invocation.method(
             #edit,
@@ -3206,11 +2964,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.Issue>);
+      ) as _i20.Future<_i13.Issue>);
 
   @override
-  _i21.Future<_i14.Issue> get(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.Issue> get(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
   ) =>
       (super.noSuchMethod(
@@ -3221,7 +2979,7 @@
             issueNumber,
           ],
         ),
-        returnValue: _i21.Future<_i14.Issue>.value(_FakeIssue_36(
+        returnValue: _i20.Future<_i13.Issue>.value(_FakeIssue_32(
           this,
           Invocation.method(
             #get,
@@ -3231,12 +2989,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.Issue>);
+      ) as _i20.Future<_i13.Issue>);
 
   @override
-  _i21.Future<_i14.Issue> create(
-    _i14.RepositorySlug? slug,
-    _i14.IssueRequest? issue,
+  _i20.Future<_i13.Issue> create(
+    _i13.RepositorySlug? slug,
+    _i13.IssueRequest? issue,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -3246,7 +3004,7 @@
             issue,
           ],
         ),
-        returnValue: _i21.Future<_i14.Issue>.value(_FakeIssue_36(
+        returnValue: _i20.Future<_i13.Issue>.value(_FakeIssue_32(
           this,
           Invocation.method(
             #create,
@@ -3256,20 +3014,20 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.Issue>);
+      ) as _i20.Future<_i13.Issue>);
 
   @override
-  _i21.Stream<_i14.User> listAssignees(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.User> listAssignees(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listAssignees,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.User>.empty(),
-      ) as _i21.Stream<_i14.User>);
+        returnValue: _i20.Stream<_i13.User>.empty(),
+      ) as _i20.Stream<_i13.User>);
 
   @override
-  _i21.Future<bool> isAssignee(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> isAssignee(
+    _i13.RepositorySlug? slug,
     String? repoName,
   ) =>
       (super.noSuchMethod(
@@ -3280,12 +3038,12 @@
             repoName,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.IssueComment> listCommentsByIssue(
-    _i14.RepositorySlug? slug,
+  _i20.Stream<_i13.IssueComment> listCommentsByIssue(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
   ) =>
       (super.noSuchMethod(
@@ -3296,21 +3054,21 @@
             issueNumber,
           ],
         ),
-        returnValue: _i21.Stream<_i14.IssueComment>.empty(),
-      ) as _i21.Stream<_i14.IssueComment>);
+        returnValue: _i20.Stream<_i13.IssueComment>.empty(),
+      ) as _i20.Stream<_i13.IssueComment>);
 
   @override
-  _i21.Stream<_i14.IssueComment> listCommentsByRepo(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.IssueComment> listCommentsByRepo(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listCommentsByRepo,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.IssueComment>.empty(),
-      ) as _i21.Stream<_i14.IssueComment>);
+        returnValue: _i20.Stream<_i13.IssueComment>.empty(),
+      ) as _i20.Stream<_i13.IssueComment>);
 
   @override
-  _i21.Future<_i14.IssueComment> getComment(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.IssueComment> getComment(
+    _i13.RepositorySlug? slug,
     int? id,
   ) =>
       (super.noSuchMethod(
@@ -3321,7 +3079,7 @@
             id,
           ],
         ),
-        returnValue: _i21.Future<_i14.IssueComment>.value(_FakeIssueComment_37(
+        returnValue: _i20.Future<_i13.IssueComment>.value(_FakeIssueComment_33(
           this,
           Invocation.method(
             #getComment,
@@ -3331,11 +3089,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.IssueComment>);
+      ) as _i20.Future<_i13.IssueComment>);
 
   @override
-  _i21.Future<_i14.IssueComment> createComment(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.IssueComment> createComment(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
     String? body,
   ) =>
@@ -3348,7 +3106,7 @@
             body,
           ],
         ),
-        returnValue: _i21.Future<_i14.IssueComment>.value(_FakeIssueComment_37(
+        returnValue: _i20.Future<_i13.IssueComment>.value(_FakeIssueComment_33(
           this,
           Invocation.method(
             #createComment,
@@ -3359,11 +3117,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.IssueComment>);
+      ) as _i20.Future<_i13.IssueComment>);
 
   @override
-  _i21.Future<_i14.IssueComment> updateComment(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.IssueComment> updateComment(
+    _i13.RepositorySlug? slug,
     int? id,
     String? body,
   ) =>
@@ -3376,7 +3134,7 @@
             body,
           ],
         ),
-        returnValue: _i21.Future<_i14.IssueComment>.value(_FakeIssueComment_37(
+        returnValue: _i20.Future<_i13.IssueComment>.value(_FakeIssueComment_33(
           this,
           Invocation.method(
             #updateComment,
@@ -3387,11 +3145,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.IssueComment>);
+      ) as _i20.Future<_i13.IssueComment>);
 
   @override
-  _i21.Future<bool> deleteComment(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> deleteComment(
+    _i13.RepositorySlug? slug,
     int? id,
   ) =>
       (super.noSuchMethod(
@@ -3402,21 +3160,21 @@
             id,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.IssueLabel> listLabels(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.IssueLabel> listLabels(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listLabels,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.IssueLabel>.empty(),
-      ) as _i21.Stream<_i14.IssueLabel>);
+        returnValue: _i20.Stream<_i13.IssueLabel>.empty(),
+      ) as _i20.Stream<_i13.IssueLabel>);
 
   @override
-  _i21.Future<_i14.IssueLabel> getLabel(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.IssueLabel> getLabel(
+    _i13.RepositorySlug? slug,
     String? name,
   ) =>
       (super.noSuchMethod(
@@ -3427,7 +3185,7 @@
             name,
           ],
         ),
-        returnValue: _i21.Future<_i14.IssueLabel>.value(_FakeIssueLabel_38(
+        returnValue: _i20.Future<_i13.IssueLabel>.value(_FakeIssueLabel_34(
           this,
           Invocation.method(
             #getLabel,
@@ -3437,11 +3195,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.IssueLabel>);
+      ) as _i20.Future<_i13.IssueLabel>);
 
   @override
-  _i21.Future<_i14.IssueLabel> createLabel(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.IssueLabel> createLabel(
+    _i13.RepositorySlug? slug,
     String? name, {
     String? color,
     String? description,
@@ -3458,7 +3216,7 @@
             #description: description,
           },
         ),
-        returnValue: _i21.Future<_i14.IssueLabel>.value(_FakeIssueLabel_38(
+        returnValue: _i20.Future<_i13.IssueLabel>.value(_FakeIssueLabel_34(
           this,
           Invocation.method(
             #createLabel,
@@ -3472,11 +3230,11 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.IssueLabel>);
+      ) as _i20.Future<_i13.IssueLabel>);
 
   @override
-  _i21.Future<_i14.IssueLabel> editLabel(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.IssueLabel> editLabel(
+    _i13.RepositorySlug? slug,
     String? name,
     String? color,
   ) =>
@@ -3489,7 +3247,7 @@
             color,
           ],
         ),
-        returnValue: _i21.Future<_i14.IssueLabel>.value(_FakeIssueLabel_38(
+        returnValue: _i20.Future<_i13.IssueLabel>.value(_FakeIssueLabel_34(
           this,
           Invocation.method(
             #editLabel,
@@ -3500,11 +3258,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.IssueLabel>);
+      ) as _i20.Future<_i13.IssueLabel>);
 
   @override
-  _i21.Future<_i14.IssueLabel> updateLabel(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.IssueLabel> updateLabel(
+    _i13.RepositorySlug? slug,
     String? name, {
     String? newName,
     String? color,
@@ -3523,7 +3281,7 @@
             #description: description,
           },
         ),
-        returnValue: _i21.Future<_i14.IssueLabel>.value(_FakeIssueLabel_38(
+        returnValue: _i20.Future<_i13.IssueLabel>.value(_FakeIssueLabel_34(
           this,
           Invocation.method(
             #updateLabel,
@@ -3538,11 +3296,11 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.IssueLabel>);
+      ) as _i20.Future<_i13.IssueLabel>);
 
   @override
-  _i21.Future<bool> deleteLabel(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> deleteLabel(
+    _i13.RepositorySlug? slug,
     String? name,
   ) =>
       (super.noSuchMethod(
@@ -3553,12 +3311,12 @@
             name,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.IssueLabel> listLabelsByIssue(
-    _i14.RepositorySlug? slug,
+  _i20.Stream<_i13.IssueLabel> listLabelsByIssue(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
   ) =>
       (super.noSuchMethod(
@@ -3569,12 +3327,12 @@
             issueNumber,
           ],
         ),
-        returnValue: _i21.Stream<_i14.IssueLabel>.empty(),
-      ) as _i21.Stream<_i14.IssueLabel>);
+        returnValue: _i20.Stream<_i13.IssueLabel>.empty(),
+      ) as _i20.Stream<_i13.IssueLabel>);
 
   @override
-  _i21.Future<List<_i14.IssueLabel>> addLabelsToIssue(
-    _i14.RepositorySlug? slug,
+  _i20.Future<List<_i13.IssueLabel>> addLabelsToIssue(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
     List<String>? labels,
   ) =>
@@ -3587,12 +3345,12 @@
             labels,
           ],
         ),
-        returnValue: _i21.Future<List<_i14.IssueLabel>>.value(<_i14.IssueLabel>[]),
-      ) as _i21.Future<List<_i14.IssueLabel>>);
+        returnValue: _i20.Future<List<_i13.IssueLabel>>.value(<_i13.IssueLabel>[]),
+      ) as _i20.Future<List<_i13.IssueLabel>>);
 
   @override
-  _i21.Future<List<_i14.IssueLabel>> replaceLabelsForIssue(
-    _i14.RepositorySlug? slug,
+  _i20.Future<List<_i13.IssueLabel>> replaceLabelsForIssue(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
     List<String>? labels,
   ) =>
@@ -3605,12 +3363,12 @@
             labels,
           ],
         ),
-        returnValue: _i21.Future<List<_i14.IssueLabel>>.value(<_i14.IssueLabel>[]),
-      ) as _i21.Future<List<_i14.IssueLabel>>);
+        returnValue: _i20.Future<List<_i13.IssueLabel>>.value(<_i13.IssueLabel>[]),
+      ) as _i20.Future<List<_i13.IssueLabel>>);
 
   @override
-  _i21.Future<bool> removeLabelForIssue(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> removeLabelForIssue(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
     String? label,
   ) =>
@@ -3623,12 +3381,12 @@
             label,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<bool> removeAllLabelsForIssue(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> removeAllLabelsForIssue(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
   ) =>
       (super.noSuchMethod(
@@ -3639,22 +3397,22 @@
             issueNumber,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.Milestone> listMilestones(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.Milestone> listMilestones(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listMilestones,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.Milestone>.empty(),
-      ) as _i21.Stream<_i14.Milestone>);
+        returnValue: _i20.Stream<_i13.Milestone>.empty(),
+      ) as _i20.Stream<_i13.Milestone>);
 
   @override
-  _i21.Future<_i14.Milestone> createMilestone(
-    _i14.RepositorySlug? slug,
-    _i14.CreateMilestone? request,
+  _i20.Future<_i13.Milestone> createMilestone(
+    _i13.RepositorySlug? slug,
+    _i13.CreateMilestone? request,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -3664,7 +3422,7 @@
             request,
           ],
         ),
-        returnValue: _i21.Future<_i14.Milestone>.value(_FakeMilestone_39(
+        returnValue: _i20.Future<_i13.Milestone>.value(_FakeMilestone_35(
           this,
           Invocation.method(
             #createMilestone,
@@ -3674,11 +3432,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.Milestone>);
+      ) as _i20.Future<_i13.Milestone>);
 
   @override
-  _i21.Future<bool> deleteMilestone(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> deleteMilestone(
+    _i13.RepositorySlug? slug,
     int? number,
   ) =>
       (super.noSuchMethod(
@@ -3689,12 +3447,12 @@
             number,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.TimelineEvent> listTimeline(
-    _i14.RepositorySlug? slug,
+  _i20.Stream<_i13.TimelineEvent> listTimeline(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
   ) =>
       (super.noSuchMethod(
@@ -3705,12 +3463,12 @@
             issueNumber,
           ],
         ),
-        returnValue: _i21.Stream<_i14.TimelineEvent>.empty(),
-      ) as _i21.Stream<_i14.TimelineEvent>);
+        returnValue: _i20.Stream<_i13.TimelineEvent>.empty(),
+      ) as _i20.Stream<_i13.TimelineEvent>);
 
   @override
-  _i21.Future<void> lock(
-    _i14.RepositorySlug? slug,
+  _i20.Future<void> lock(
+    _i13.RepositorySlug? slug,
     int? number, {
     String? lockReason,
   }) =>
@@ -3723,13 +3481,13 @@
           ],
           {#lockReason: lockReason},
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<void> unlock(
-    _i14.RepositorySlug? slug,
+  _i20.Future<void> unlock(
+    _i13.RepositorySlug? slug,
     int? number,
   ) =>
       (super.noSuchMethod(
@@ -3740,15 +3498,15 @@
             number,
           ],
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 }
 
 /// A class which mocks [GithubChecksService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockGithubChecksService extends _i1.Mock implements _i16.GithubChecksService {
+class MockGithubChecksService extends _i1.Mock implements _i15.GithubChecksService {
   MockGithubChecksService() {
     _i1.throwOnMissingStub(this);
   }
@@ -3772,16 +3530,16 @@
       );
 
   @override
-  _i25.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
+  _i24.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
         Invocation.getter(#githubChecksUtil),
-        returnValue: _FakeGithubChecksUtil_40(
+        returnValue: _FakeGithubChecksUtil_36(
           this,
           Invocation.getter(#githubChecksUtil),
         ),
-      ) as _i25.GithubChecksUtil);
+      ) as _i24.GithubChecksUtil);
 
   @override
-  set githubChecksUtil(_i25.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
+  set githubChecksUtil(_i24.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
         Invocation.setter(
           #githubChecksUtil,
           _githubChecksUtil,
@@ -3790,10 +3548,10 @@
       );
 
   @override
-  _i21.Future<void> handleCheckSuite(
-    _i14.PullRequest? pullRequest,
-    _i34.CheckSuiteEvent? checkSuiteEvent,
-    _i16.Scheduler? scheduler,
+  _i20.Future<void> handleCheckSuite(
+    _i13.PullRequest? pullRequest,
+    _i32.CheckSuiteEvent? checkSuiteEvent,
+    _i15.Scheduler? scheduler,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -3804,15 +3562,15 @@
             scheduler,
           ],
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<bool> updateCheckStatus(
-    _i43.BuildPushMessage? buildPushMessage,
-    _i16.LuciBuildService? luciBuildService,
-    _i14.RepositorySlug? slug, {
+  _i20.Future<bool> updateCheckStatus(
+    _i41.BuildPushMessage? buildPushMessage,
+    _i15.LuciBuildService? luciBuildService,
+    _i13.RepositorySlug? slug, {
     bool? rescheduled = false,
   }) =>
       (super.noSuchMethod(
@@ -3825,11 +3583,11 @@
           ],
           {#rescheduled: rescheduled},
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  bool taskFailed(_i43.BuildPushMessage? buildPushMessage) => (super.noSuchMethod(
+  bool taskFailed(_i41.BuildPushMessage? buildPushMessage) => (super.noSuchMethod(
         Invocation.method(
           #taskFailed,
           [buildPushMessage],
@@ -3838,7 +3596,7 @@
       ) as bool);
 
   @override
-  int currentAttempt(_i43.Build? build) => (super.noSuchMethod(
+  int currentAttempt(_i41.Build? build) => (super.noSuchMethod(
         Invocation.method(
           #currentAttempt,
           [build],
@@ -3852,7 +3610,7 @@
           #getGithubSummary,
           [summary],
         ),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.method(
             #getGithubSummary,
@@ -3862,38 +3620,38 @@
       ) as String);
 
   @override
-  _i14.CheckRunConclusion conclusionForResult(_i43.Result? result) => (super.noSuchMethod(
+  _i13.CheckRunConclusion conclusionForResult(_i41.Result? result) => (super.noSuchMethod(
         Invocation.method(
           #conclusionForResult,
           [result],
         ),
-        returnValue: _FakeCheckRunConclusion_41(
+        returnValue: _FakeCheckRunConclusion_37(
           this,
           Invocation.method(
             #conclusionForResult,
             [result],
           ),
         ),
-      ) as _i14.CheckRunConclusion);
+      ) as _i13.CheckRunConclusion);
 
   @override
-  _i14.CheckRunStatus statusForResult(_i43.Status? status) => (super.noSuchMethod(
+  _i13.CheckRunStatus statusForResult(_i41.Status? status) => (super.noSuchMethod(
         Invocation.method(
           #statusForResult,
           [status],
         ),
-        returnValue: _FakeCheckRunStatus_42(
+        returnValue: _FakeCheckRunStatus_38(
           this,
           Invocation.method(
             #statusForResult,
             [status],
           ),
         ),
-      ) as _i14.CheckRunStatus);
+      ) as _i13.CheckRunStatus);
 
   @override
-  _i21.Future<_i14.PullRequest?> findMatchingPullRequest(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.PullRequest?> findMatchingPullRequest(
+    _i13.RepositorySlug? slug,
     String? headSha,
     int? checkSuiteId,
   ) =>
@@ -3906,190 +3664,22 @@
             checkSuiteId,
           ],
         ),
-        returnValue: _i21.Future<_i14.PullRequest?>.value(),
-      ) as _i21.Future<_i14.PullRequest?>);
-}
-
-/// A class which mocks [GithubChecksServiceV2].
-///
-/// See the documentation for Mockito's code generation for more information.
-class MockGithubChecksServiceV2 extends _i1.Mock implements _i44.GithubChecksServiceV2 {
-  MockGithubChecksServiceV2() {
-    _i1.throwOnMissingStub(this);
-  }
-
-  @override
-  _i3.Config get config => (super.noSuchMethod(
-        Invocation.getter(#config),
-        returnValue: _FakeConfig_1(
-          this,
-          Invocation.getter(#config),
-        ),
-      ) as _i3.Config);
-
-  @override
-  set config(_i3.Config? _config) => super.noSuchMethod(
-        Invocation.setter(
-          #config,
-          _config,
-        ),
-        returnValueForMissingStub: null,
-      );
-
-  @override
-  _i25.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
-        Invocation.getter(#githubChecksUtil),
-        returnValue: _FakeGithubChecksUtil_40(
-          this,
-          Invocation.getter(#githubChecksUtil),
-        ),
-      ) as _i25.GithubChecksUtil);
-
-  @override
-  set githubChecksUtil(_i25.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
-        Invocation.setter(
-          #githubChecksUtil,
-          _githubChecksUtil,
-        ),
-        returnValueForMissingStub: null,
-      );
-
-  @override
-  _i21.Future<void> handleCheckSuite(
-    _i14.PullRequest? pullRequest,
-    _i34.CheckSuiteEvent? checkSuiteEvent,
-    _i45.SchedulerV2? scheduler,
-  ) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #handleCheckSuite,
-          [
-            pullRequest,
-            checkSuiteEvent,
-            scheduler,
-          ],
-        ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
-
-  @override
-  _i21.Future<bool> updateCheckStatus({
-    required _i9.Build? build,
-    required Map<String, dynamic>? userDataMap,
-    required _i46.LuciBuildServiceV2? luciBuildService,
-    required _i14.RepositorySlug? slug,
-    bool? rescheduled = false,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #updateCheckStatus,
-          [],
-          {
-            #build: build,
-            #userDataMap: userDataMap,
-            #luciBuildService: luciBuildService,
-            #slug: slug,
-            #rescheduled: rescheduled,
-          },
-        ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
-
-  @override
-  bool taskFailed(_i9.Status? status) => (super.noSuchMethod(
-        Invocation.method(
-          #taskFailed,
-          [status],
-        ),
-        returnValue: false,
-      ) as bool);
-
-  @override
-  int currentAttempt(List<_i9.StringPair>? tags) => (super.noSuchMethod(
-        Invocation.method(
-          #currentAttempt,
-          [tags],
-        ),
-        returnValue: 0,
-      ) as int);
-
-  @override
-  String getGithubSummary(String? summary) => (super.noSuchMethod(
-        Invocation.method(
-          #getGithubSummary,
-          [summary],
-        ),
-        returnValue: _i32.dummyValue<String>(
-          this,
-          Invocation.method(
-            #getGithubSummary,
-            [summary],
-          ),
-        ),
-      ) as String);
-
-  @override
-  _i14.CheckRunConclusion conclusionForResult(_i9.Status? status) => (super.noSuchMethod(
-        Invocation.method(
-          #conclusionForResult,
-          [status],
-        ),
-        returnValue: _FakeCheckRunConclusion_41(
-          this,
-          Invocation.method(
-            #conclusionForResult,
-            [status],
-          ),
-        ),
-      ) as _i14.CheckRunConclusion);
-
-  @override
-  _i14.CheckRunStatus statusForResult(_i9.Status? status) => (super.noSuchMethod(
-        Invocation.method(
-          #statusForResult,
-          [status],
-        ),
-        returnValue: _FakeCheckRunStatus_42(
-          this,
-          Invocation.method(
-            #statusForResult,
-            [status],
-          ),
-        ),
-      ) as _i14.CheckRunStatus);
-
-  @override
-  _i21.Future<_i14.PullRequest?> findMatchingPullRequest(
-    _i14.RepositorySlug? slug,
-    String? headSha,
-    int? checkSuiteId,
-  ) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #findMatchingPullRequest,
-          [
-            slug,
-            headSha,
-            checkSuiteId,
-          ],
-        ),
-        returnValue: _i21.Future<_i14.PullRequest?>.value(),
-      ) as _i21.Future<_i14.PullRequest?>);
+        returnValue: _i20.Future<_i13.PullRequest?>.value(),
+      ) as _i20.Future<_i13.PullRequest?>);
 }
 
 /// A class which mocks [GithubChecksUtil].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockGithubChecksUtil extends _i1.Mock implements _i25.GithubChecksUtil {
+class MockGithubChecksUtil extends _i1.Mock implements _i24.GithubChecksUtil {
   MockGithubChecksUtil() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i21.Future<Map<String, _i14.CheckRun>> allCheckRuns(
-    _i14.GitHub? gitHubClient,
-    _i34.CheckSuiteEvent? checkSuiteEvent,
+  _i20.Future<Map<String, _i13.CheckRun>> allCheckRuns(
+    _i13.GitHub? gitHubClient,
+    _i32.CheckSuiteEvent? checkSuiteEvent,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -4099,13 +3689,13 @@
             checkSuiteEvent,
           ],
         ),
-        returnValue: _i21.Future<Map<String, _i14.CheckRun>>.value(<String, _i14.CheckRun>{}),
-      ) as _i21.Future<Map<String, _i14.CheckRun>>);
+        returnValue: _i20.Future<Map<String, _i13.CheckRun>>.value(<String, _i13.CheckRun>{}),
+      ) as _i20.Future<Map<String, _i13.CheckRun>>);
 
   @override
-  _i21.Future<_i14.CheckSuite> getCheckSuite(
-    _i14.GitHub? gitHubClient,
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.CheckSuite> getCheckSuite(
+    _i13.GitHub? gitHubClient,
+    _i13.RepositorySlug? slug,
     int? checkSuiteId,
   ) =>
       (super.noSuchMethod(
@@ -4117,7 +3707,7 @@
             checkSuiteId,
           ],
         ),
-        returnValue: _i21.Future<_i14.CheckSuite>.value(_FakeCheckSuite_43(
+        returnValue: _i20.Future<_i13.CheckSuite>.value(_FakeCheckSuite_39(
           this,
           Invocation.method(
             #getCheckSuite,
@@ -4128,12 +3718,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.CheckSuite>);
+      ) as _i20.Future<_i13.CheckSuite>);
 
   @override
-  _i21.Future<List<_i14.CheckSuite>> listCheckSuitesForRef(
-    _i14.GitHub? gitHubClient,
-    _i14.RepositorySlug? slug, {
+  _i20.Future<List<_i13.CheckSuite>> listCheckSuitesForRef(
+    _i13.GitHub? gitHubClient,
+    _i13.RepositorySlug? slug, {
     required String? ref,
     int? appId,
     String? checkName,
@@ -4151,18 +3741,18 @@
             #checkName: checkName,
           },
         ),
-        returnValue: _i21.Future<List<_i14.CheckSuite>>.value(<_i14.CheckSuite>[]),
-      ) as _i21.Future<List<_i14.CheckSuite>>);
+        returnValue: _i20.Future<List<_i13.CheckSuite>>.value(<_i13.CheckSuite>[]),
+      ) as _i20.Future<List<_i13.CheckSuite>>);
 
   @override
-  _i21.Future<void> updateCheckRun(
+  _i20.Future<void> updateCheckRun(
     _i3.Config? config,
-    _i14.RepositorySlug? slug,
-    _i14.CheckRun? checkRun, {
-    _i14.CheckRunStatus? status = _i14.CheckRunStatus.queued,
-    _i14.CheckRunConclusion? conclusion,
+    _i13.RepositorySlug? slug,
+    _i13.CheckRun? checkRun, {
+    _i13.CheckRunStatus? status = _i13.CheckRunStatus.queued,
+    _i13.CheckRunConclusion? conclusion,
     String? detailsUrl,
-    _i14.CheckRunOutput? output,
+    _i13.CheckRunOutput? output,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -4179,14 +3769,14 @@
             #output: output,
           },
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<_i14.CheckRun> getCheckRun(
+  _i20.Future<_i13.CheckRun> getCheckRun(
     _i3.Config? config,
-    _i14.RepositorySlug? slug,
+    _i13.RepositorySlug? slug,
     int? id,
   ) =>
       (super.noSuchMethod(
@@ -4198,7 +3788,7 @@
             id,
           ],
         ),
-        returnValue: _i21.Future<_i14.CheckRun>.value(_FakeCheckRun_44(
+        returnValue: _i20.Future<_i13.CheckRun>.value(_FakeCheckRun_40(
           this,
           Invocation.method(
             #getCheckRun,
@@ -4209,15 +3799,15 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.CheckRun>);
+      ) as _i20.Future<_i13.CheckRun>);
 
   @override
-  _i21.Future<_i14.CheckRun> createCheckRun(
+  _i20.Future<_i13.CheckRun> createCheckRun(
     _i3.Config? config,
-    _i14.RepositorySlug? slug,
+    _i13.RepositorySlug? slug,
     String? sha,
     String? name, {
-    _i14.CheckRunOutput? output,
+    _i13.CheckRunOutput? output,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -4230,7 +3820,7 @@
           ],
           {#output: output},
         ),
-        returnValue: _i21.Future<_i14.CheckRun>.value(_FakeCheckRun_44(
+        returnValue: _i20.Future<_i13.CheckRun>.value(_FakeCheckRun_40(
           this,
           Invocation.method(
             #createCheckRun,
@@ -4243,29 +3833,29 @@
             {#output: output},
           ),
         )),
-      ) as _i21.Future<_i14.CheckRun>);
+      ) as _i20.Future<_i13.CheckRun>);
 }
 
 /// A class which mocks [GithubService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockGithubService extends _i1.Mock implements _i18.GithubService {
+class MockGithubService extends _i1.Mock implements _i17.GithubService {
   MockGithubService() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i14.GitHub get github => (super.noSuchMethod(
+  _i13.GitHub get github => (super.noSuchMethod(
         Invocation.getter(#github),
-        returnValue: _FakeGitHub_20(
+        returnValue: _FakeGitHub_16(
           this,
           Invocation.getter(#github),
         ),
-      ) as _i14.GitHub);
+      ) as _i13.GitHub);
 
   @override
-  _i21.Future<List<_i14.RepositoryCommit>> listBranchedCommits(
-    _i14.RepositorySlug? slug,
+  _i20.Future<List<_i13.RepositoryCommit>> listBranchedCommits(
+    _i13.RepositorySlug? slug,
     String? branch,
     int? lastCommitTimestampMills,
   ) =>
@@ -4278,12 +3868,12 @@
             lastCommitTimestampMills,
           ],
         ),
-        returnValue: _i21.Future<List<_i14.RepositoryCommit>>.value(<_i14.RepositoryCommit>[]),
-      ) as _i21.Future<List<_i14.RepositoryCommit>>);
+        returnValue: _i20.Future<List<_i13.RepositoryCommit>>.value(<_i13.RepositoryCommit>[]),
+      ) as _i20.Future<List<_i13.RepositoryCommit>>);
 
   @override
-  _i21.Future<List<_i14.PullRequest>> listPullRequests(
-    _i14.RepositorySlug? slug,
+  _i20.Future<List<_i13.PullRequest>> listPullRequests(
+    _i13.RepositorySlug? slug,
     String? branch,
   ) =>
       (super.noSuchMethod(
@@ -4294,17 +3884,17 @@
             branch,
           ],
         ),
-        returnValue: _i21.Future<List<_i14.PullRequest>>.value(<_i14.PullRequest>[]),
-      ) as _i21.Future<List<_i14.PullRequest>>);
+        returnValue: _i20.Future<List<_i13.PullRequest>>.value(<_i13.PullRequest>[]),
+      ) as _i20.Future<List<_i13.PullRequest>>);
 
   @override
-  _i21.Future<_i14.PullRequest> createPullRequest(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<_i13.PullRequest> createPullRequest(
+    _i13.RepositorySlug? slug, {
     required String? title,
     String? body,
     String? commitMessage,
-    required _i14.GitReference? baseRef,
-    List<_i14.CreateGitTreeEntry>? entries,
+    required _i13.GitReference? baseRef,
+    List<_i13.CreateGitTreeEntry>? entries,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -4318,7 +3908,7 @@
             #entries: entries,
           },
         ),
-        returnValue: _i21.Future<_i14.PullRequest>.value(_FakePullRequest_45(
+        returnValue: _i20.Future<_i13.PullRequest>.value(_FakePullRequest_41(
           this,
           Invocation.method(
             #createPullRequest,
@@ -4332,11 +3922,11 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.PullRequest>);
+      ) as _i20.Future<_i13.PullRequest>);
 
   @override
-  _i21.Future<void> assignReviewer(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<void> assignReviewer(
+    _i13.RepositorySlug? slug, {
     int? pullRequestNumber,
     String? reviewer,
   }) =>
@@ -4349,13 +3939,13 @@
             #reviewer: reviewer,
           },
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<List<_i14.IssueLabel>> getIssueLabels(
-    _i14.RepositorySlug? slug,
+  _i20.Future<List<_i13.IssueLabel>> getIssueLabels(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
   ) =>
       (super.noSuchMethod(
@@ -4366,12 +3956,12 @@
             issueNumber,
           ],
         ),
-        returnValue: _i21.Future<List<_i14.IssueLabel>>.value(<_i14.IssueLabel>[]),
-      ) as _i21.Future<List<_i14.IssueLabel>>);
+        returnValue: _i20.Future<List<_i13.IssueLabel>>.value(<_i13.IssueLabel>[]),
+      ) as _i20.Future<List<_i13.IssueLabel>>);
 
   @override
-  _i21.Future<List<_i14.IssueLabel>> addIssueLabels(
-    _i14.RepositorySlug? slug,
+  _i20.Future<List<_i13.IssueLabel>> addIssueLabels(
+    _i13.RepositorySlug? slug,
     int? issueNumber,
     List<String>? labels,
   ) =>
@@ -4384,12 +3974,12 @@
             labels,
           ],
         ),
-        returnValue: _i21.Future<List<_i14.IssueLabel>>.value(<_i14.IssueLabel>[]),
-      ) as _i21.Future<List<_i14.IssueLabel>>);
+        returnValue: _i20.Future<List<_i13.IssueLabel>>.value(<_i13.IssueLabel>[]),
+      ) as _i20.Future<List<_i13.IssueLabel>>);
 
   @override
-  _i21.Future<List<_i14.Issue>> listIssues(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<List<_i13.Issue>> listIssues(
+    _i13.RepositorySlug? slug, {
     List<String>? labels,
     String? state = r'open',
   }) =>
@@ -4402,23 +3992,23 @@
             #state: state,
           },
         ),
-        returnValue: _i21.Future<List<_i14.Issue>>.value(<_i14.Issue>[]),
-      ) as _i21.Future<List<_i14.Issue>>);
+        returnValue: _i20.Future<List<_i13.Issue>>.value(<_i13.Issue>[]),
+      ) as _i20.Future<List<_i13.Issue>>);
 
   @override
-  _i21.Future<_i14.Issue>? getIssue(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<_i13.Issue>? getIssue(
+    _i13.RepositorySlug? slug, {
     required int? issueNumber,
   }) =>
       (super.noSuchMethod(Invocation.method(
         #getIssue,
         [slug],
         {#issueNumber: issueNumber},
-      )) as _i21.Future<_i14.Issue>?);
+      )) as _i20.Future<_i13.Issue>?);
 
   @override
-  _i21.Future<void> assignIssue(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<void> assignIssue(
+    _i13.RepositorySlug? slug, {
     required int? issueNumber,
     required String? assignee,
   }) =>
@@ -4431,13 +4021,13 @@
             #assignee: assignee,
           },
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<_i14.Issue> createIssue(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<_i13.Issue> createIssue(
+    _i13.RepositorySlug? slug, {
     String? title,
     String? body,
     List<String>? labels,
@@ -4454,7 +4044,7 @@
             #assignee: assignee,
           },
         ),
-        returnValue: _i21.Future<_i14.Issue>.value(_FakeIssue_36(
+        returnValue: _i20.Future<_i13.Issue>.value(_FakeIssue_32(
           this,
           Invocation.method(
             #createIssue,
@@ -4467,11 +4057,11 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.Issue>);
+      ) as _i20.Future<_i13.Issue>);
 
   @override
-  _i21.Future<_i14.IssueComment?> createComment(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<_i13.IssueComment?> createComment(
+    _i13.RepositorySlug? slug, {
     required int? issueNumber,
     required String? body,
   }) =>
@@ -4484,12 +4074,12 @@
             #body: body,
           },
         ),
-        returnValue: _i21.Future<_i14.IssueComment?>.value(),
-      ) as _i21.Future<_i14.IssueComment?>);
+        returnValue: _i20.Future<_i13.IssueComment?>.value(),
+      ) as _i20.Future<_i13.IssueComment?>);
 
   @override
-  _i21.Future<List<_i14.IssueLabel>> replaceLabelsForIssue(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<List<_i13.IssueLabel>> replaceLabelsForIssue(
+    _i13.RepositorySlug? slug, {
     required int? issueNumber,
     required List<String>? labels,
   }) =>
@@ -4502,21 +4092,21 @@
             #labels: labels,
           },
         ),
-        returnValue: _i21.Future<List<_i14.IssueLabel>>.value(<_i14.IssueLabel>[]),
-      ) as _i21.Future<List<_i14.IssueLabel>>);
+        returnValue: _i20.Future<List<_i13.IssueLabel>>.value(<_i13.IssueLabel>[]),
+      ) as _i20.Future<List<_i13.IssueLabel>>);
 
   @override
-  _i21.Future<List<String>> listFiles(_i14.PullRequest? pullRequest) => (super.noSuchMethod(
+  _i20.Future<List<String>> listFiles(_i13.PullRequest? pullRequest) => (super.noSuchMethod(
         Invocation.method(
           #listFiles,
           [pullRequest],
         ),
-        returnValue: _i21.Future<List<String>>.value(<String>[]),
-      ) as _i21.Future<List<String>>);
+        returnValue: _i20.Future<List<String>>.value(<String>[]),
+      ) as _i20.Future<List<String>>);
 
   @override
-  _i21.Future<String> getFileContent(
-    _i14.RepositorySlug? slug,
+  _i20.Future<String> getFileContent(
+    _i13.RepositorySlug? slug,
     String? path, {
     String? ref,
   }) =>
@@ -4529,7 +4119,7 @@
           ],
           {#ref: ref},
         ),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.method(
             #getFileContent,
@@ -4540,11 +4130,11 @@
             {#ref: ref},
           ),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<_i14.GitReference> getReference(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.GitReference> getReference(
+    _i13.RepositorySlug? slug,
     String? ref,
   ) =>
       (super.noSuchMethod(
@@ -4555,7 +4145,7 @@
             ref,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitReference>.value(_FakeGitReference_46(
+        returnValue: _i20.Future<_i13.GitReference>.value(_FakeGitReference_42(
           this,
           Invocation.method(
             #getReference,
@@ -4565,26 +4155,26 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitReference>);
+      ) as _i20.Future<_i13.GitReference>);
 
   @override
-  _i21.Future<_i14.RateLimit> getRateLimit() => (super.noSuchMethod(
+  _i20.Future<_i13.RateLimit> getRateLimit() => (super.noSuchMethod(
         Invocation.method(
           #getRateLimit,
           [],
         ),
-        returnValue: _i21.Future<_i14.RateLimit>.value(_FakeRateLimit_47(
+        returnValue: _i20.Future<_i13.RateLimit>.value(_FakeRateLimit_43(
           this,
           Invocation.method(
             #getRateLimit,
             [],
           ),
         )),
-      ) as _i21.Future<_i14.RateLimit>);
+      ) as _i20.Future<_i13.RateLimit>);
 
   @override
-  _i21.Future<List<_i14.Issue>> searchIssuesAndPRs(
-    _i14.RepositorySlug? slug,
+  _i20.Future<List<_i13.Issue>> searchIssuesAndPRs(
+    _i13.RepositorySlug? slug,
     String? query, {
     String? sort,
     int? pages = 2,
@@ -4601,12 +4191,12 @@
             #pages: pages,
           },
         ),
-        returnValue: _i21.Future<List<_i14.Issue>>.value(<_i14.Issue>[]),
-      ) as _i21.Future<List<_i14.Issue>>);
+        returnValue: _i20.Future<List<_i13.Issue>>.value(<_i13.Issue>[]),
+      ) as _i20.Future<List<_i13.Issue>>);
 
   @override
-  _i21.Future<_i14.PullRequest> getPullRequest(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.PullRequest> getPullRequest(
+    _i13.RepositorySlug? slug,
     int? number,
   ) =>
       (super.noSuchMethod(
@@ -4617,7 +4207,7 @@
             number,
           ],
         ),
-        returnValue: _i21.Future<_i14.PullRequest>.value(_FakePullRequest_45(
+        returnValue: _i20.Future<_i13.PullRequest>.value(_FakePullRequest_41(
           this,
           Invocation.method(
             #getPullRequest,
@@ -4627,29 +4217,29 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.PullRequest>);
+      ) as _i20.Future<_i13.PullRequest>);
 }
 
 /// A class which mocks [GitService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockGitService extends _i1.Mock implements _i14.GitService {
+class MockGitService extends _i1.Mock implements _i13.GitService {
   MockGitService() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i14.GitHub get github => (super.noSuchMethod(
+  _i13.GitHub get github => (super.noSuchMethod(
         Invocation.getter(#github),
-        returnValue: _FakeGitHub_20(
+        returnValue: _FakeGitHub_16(
           this,
           Invocation.getter(#github),
         ),
-      ) as _i14.GitHub);
+      ) as _i13.GitHub);
 
   @override
-  _i21.Future<_i14.GitBlob> getBlob(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.GitBlob> getBlob(
+    _i13.RepositorySlug? slug,
     String? sha,
   ) =>
       (super.noSuchMethod(
@@ -4660,7 +4250,7 @@
             sha,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitBlob>.value(_FakeGitBlob_48(
+        returnValue: _i20.Future<_i13.GitBlob>.value(_FakeGitBlob_44(
           this,
           Invocation.method(
             #getBlob,
@@ -4670,12 +4260,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitBlob>);
+      ) as _i20.Future<_i13.GitBlob>);
 
   @override
-  _i21.Future<_i14.GitBlob> createBlob(
-    _i14.RepositorySlug? slug,
-    _i14.CreateGitBlob? blob,
+  _i20.Future<_i13.GitBlob> createBlob(
+    _i13.RepositorySlug? slug,
+    _i13.CreateGitBlob? blob,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -4685,7 +4275,7 @@
             blob,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitBlob>.value(_FakeGitBlob_48(
+        returnValue: _i20.Future<_i13.GitBlob>.value(_FakeGitBlob_44(
           this,
           Invocation.method(
             #createBlob,
@@ -4695,11 +4285,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitBlob>);
+      ) as _i20.Future<_i13.GitBlob>);
 
   @override
-  _i21.Future<_i14.GitCommit> getCommit(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.GitCommit> getCommit(
+    _i13.RepositorySlug? slug,
     String? sha,
   ) =>
       (super.noSuchMethod(
@@ -4710,7 +4300,7 @@
             sha,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitCommit>.value(_FakeGitCommit_49(
+        returnValue: _i20.Future<_i13.GitCommit>.value(_FakeGitCommit_45(
           this,
           Invocation.method(
             #getCommit,
@@ -4720,12 +4310,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitCommit>);
+      ) as _i20.Future<_i13.GitCommit>);
 
   @override
-  _i21.Future<_i14.GitCommit> createCommit(
-    _i14.RepositorySlug? slug,
-    _i14.CreateGitCommit? commit,
+  _i20.Future<_i13.GitCommit> createCommit(
+    _i13.RepositorySlug? slug,
+    _i13.CreateGitCommit? commit,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -4735,7 +4325,7 @@
             commit,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitCommit>.value(_FakeGitCommit_49(
+        returnValue: _i20.Future<_i13.GitCommit>.value(_FakeGitCommit_45(
           this,
           Invocation.method(
             #createCommit,
@@ -4745,11 +4335,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitCommit>);
+      ) as _i20.Future<_i13.GitCommit>);
 
   @override
-  _i21.Future<_i14.GitReference> getReference(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.GitReference> getReference(
+    _i13.RepositorySlug? slug,
     String? ref,
   ) =>
       (super.noSuchMethod(
@@ -4760,7 +4350,7 @@
             ref,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitReference>.value(_FakeGitReference_46(
+        returnValue: _i20.Future<_i13.GitReference>.value(_FakeGitReference_42(
           this,
           Invocation.method(
             #getReference,
@@ -4770,11 +4360,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitReference>);
+      ) as _i20.Future<_i13.GitReference>);
 
   @override
-  _i21.Stream<_i14.GitReference> listReferences(
-    _i14.RepositorySlug? slug, {
+  _i20.Stream<_i13.GitReference> listReferences(
+    _i13.RepositorySlug? slug, {
     String? type,
   }) =>
       (super.noSuchMethod(
@@ -4783,12 +4373,12 @@
           [slug],
           {#type: type},
         ),
-        returnValue: _i21.Stream<_i14.GitReference>.empty(),
-      ) as _i21.Stream<_i14.GitReference>);
+        returnValue: _i20.Stream<_i13.GitReference>.empty(),
+      ) as _i20.Stream<_i13.GitReference>);
 
   @override
-  _i21.Future<_i14.GitReference> createReference(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.GitReference> createReference(
+    _i13.RepositorySlug? slug,
     String? ref,
     String? sha,
   ) =>
@@ -4801,7 +4391,7 @@
             sha,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitReference>.value(_FakeGitReference_46(
+        returnValue: _i20.Future<_i13.GitReference>.value(_FakeGitReference_42(
           this,
           Invocation.method(
             #createReference,
@@ -4812,11 +4402,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitReference>);
+      ) as _i20.Future<_i13.GitReference>);
 
   @override
-  _i21.Future<_i14.GitReference> editReference(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.GitReference> editReference(
+    _i13.RepositorySlug? slug,
     String? ref,
     String? sha, {
     bool? force = false,
@@ -4831,7 +4421,7 @@
           ],
           {#force: force},
         ),
-        returnValue: _i21.Future<_i14.GitReference>.value(_FakeGitReference_46(
+        returnValue: _i20.Future<_i13.GitReference>.value(_FakeGitReference_42(
           this,
           Invocation.method(
             #editReference,
@@ -4843,11 +4433,11 @@
             {#force: force},
           ),
         )),
-      ) as _i21.Future<_i14.GitReference>);
+      ) as _i20.Future<_i13.GitReference>);
 
   @override
-  _i21.Future<bool> deleteReference(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> deleteReference(
+    _i13.RepositorySlug? slug,
     String? ref,
   ) =>
       (super.noSuchMethod(
@@ -4858,12 +4448,12 @@
             ref,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<_i14.GitTag> getTag(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.GitTag> getTag(
+    _i13.RepositorySlug? slug,
     String? sha,
   ) =>
       (super.noSuchMethod(
@@ -4874,7 +4464,7 @@
             sha,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitTag>.value(_FakeGitTag_50(
+        returnValue: _i20.Future<_i13.GitTag>.value(_FakeGitTag_46(
           this,
           Invocation.method(
             #getTag,
@@ -4884,12 +4474,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitTag>);
+      ) as _i20.Future<_i13.GitTag>);
 
   @override
-  _i21.Future<_i14.GitTag> createTag(
-    _i14.RepositorySlug? slug,
-    _i14.CreateGitTag? tag,
+  _i20.Future<_i13.GitTag> createTag(
+    _i13.RepositorySlug? slug,
+    _i13.CreateGitTag? tag,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -4899,7 +4489,7 @@
             tag,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitTag>.value(_FakeGitTag_50(
+        returnValue: _i20.Future<_i13.GitTag>.value(_FakeGitTag_46(
           this,
           Invocation.method(
             #createTag,
@@ -4909,11 +4499,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitTag>);
+      ) as _i20.Future<_i13.GitTag>);
 
   @override
-  _i21.Future<_i14.GitTree> getTree(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.GitTree> getTree(
+    _i13.RepositorySlug? slug,
     String? sha, {
     bool? recursive = false,
   }) =>
@@ -4926,7 +4516,7 @@
           ],
           {#recursive: recursive},
         ),
-        returnValue: _i21.Future<_i14.GitTree>.value(_FakeGitTree_51(
+        returnValue: _i20.Future<_i13.GitTree>.value(_FakeGitTree_47(
           this,
           Invocation.method(
             #getTree,
@@ -4937,12 +4527,12 @@
             {#recursive: recursive},
           ),
         )),
-      ) as _i21.Future<_i14.GitTree>);
+      ) as _i20.Future<_i13.GitTree>);
 
   @override
-  _i21.Future<_i14.GitTree> createTree(
-    _i14.RepositorySlug? slug,
-    _i14.CreateGitTree? tree,
+  _i20.Future<_i13.GitTree> createTree(
+    _i13.RepositorySlug? slug,
+    _i13.CreateGitTree? tree,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -4952,7 +4542,7 @@
             tree,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitTree>.value(_FakeGitTree_51(
+        returnValue: _i20.Future<_i13.GitTree>.value(_FakeGitTree_47(
           this,
           Invocation.method(
             #createTree,
@@ -4962,28 +4552,28 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitTree>);
+      ) as _i20.Future<_i13.GitTree>);
 }
 
 /// A class which mocks [GraphQLClient].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockGraphQLClient extends _i1.Mock implements _i15.GraphQLClient {
+class MockGraphQLClient extends _i1.Mock implements _i14.GraphQLClient {
   MockGraphQLClient() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i15.DefaultPolicies get defaultPolicies => (super.noSuchMethod(
+  _i14.DefaultPolicies get defaultPolicies => (super.noSuchMethod(
         Invocation.getter(#defaultPolicies),
-        returnValue: _FakeDefaultPolicies_52(
+        returnValue: _FakeDefaultPolicies_48(
           this,
           Invocation.getter(#defaultPolicies),
         ),
-      ) as _i15.DefaultPolicies);
+      ) as _i14.DefaultPolicies);
 
   @override
-  set defaultPolicies(_i15.DefaultPolicies? _defaultPolicies) => super.noSuchMethod(
+  set defaultPolicies(_i14.DefaultPolicies? _defaultPolicies) => super.noSuchMethod(
         Invocation.setter(
           #defaultPolicies,
           _defaultPolicies,
@@ -4992,34 +4582,34 @@
       );
 
   @override
-  _i15.Link get link => (super.noSuchMethod(
+  _i14.Link get link => (super.noSuchMethod(
         Invocation.getter(#link),
-        returnValue: _FakeLink_53(
+        returnValue: _FakeLink_49(
           this,
           Invocation.getter(#link),
         ),
-      ) as _i15.Link);
+      ) as _i14.Link);
 
   @override
-  _i15.GraphQLCache get cache => (super.noSuchMethod(
+  _i14.GraphQLCache get cache => (super.noSuchMethod(
         Invocation.getter(#cache),
-        returnValue: _FakeGraphQLCache_54(
+        returnValue: _FakeGraphQLCache_50(
           this,
           Invocation.getter(#cache),
         ),
-      ) as _i15.GraphQLCache);
+      ) as _i14.GraphQLCache);
 
   @override
-  _i15.QueryManager get queryManager => (super.noSuchMethod(
+  _i14.QueryManager get queryManager => (super.noSuchMethod(
         Invocation.getter(#queryManager),
-        returnValue: _FakeQueryManager_55(
+        returnValue: _FakeQueryManager_51(
           this,
           Invocation.getter(#queryManager),
         ),
-      ) as _i15.QueryManager);
+      ) as _i14.QueryManager);
 
   @override
-  set queryManager(_i15.QueryManager? _queryManager) => super.noSuchMethod(
+  set queryManager(_i14.QueryManager? _queryManager) => super.noSuchMethod(
         Invocation.setter(
           #queryManager,
           _queryManager,
@@ -5028,10 +4618,10 @@
       );
 
   @override
-  _i15.GraphQLClient copyWith({
-    _i15.Link? link,
-    _i15.GraphQLCache? cache,
-    _i15.DefaultPolicies? defaultPolicies,
+  _i14.GraphQLClient copyWith({
+    _i14.Link? link,
+    _i14.GraphQLCache? cache,
+    _i14.DefaultPolicies? defaultPolicies,
     bool? alwaysRebroadcast,
   }) =>
       (super.noSuchMethod(
@@ -5045,7 +4635,7 @@
             #alwaysRebroadcast: alwaysRebroadcast,
           },
         ),
-        returnValue: _FakeGraphQLClient_21(
+        returnValue: _FakeGraphQLClient_17(
           this,
           Invocation.method(
             #copyWith,
@@ -5058,83 +4648,83 @@
             },
           ),
         ),
-      ) as _i15.GraphQLClient);
+      ) as _i14.GraphQLClient);
 
   @override
-  _i15.ObservableQuery<TParsed> watchQuery<TParsed>(_i15.WatchQueryOptions<TParsed>? options) => (super.noSuchMethod(
+  _i14.ObservableQuery<TParsed> watchQuery<TParsed>(_i14.WatchQueryOptions<TParsed>? options) => (super.noSuchMethod(
         Invocation.method(
           #watchQuery,
           [options],
         ),
-        returnValue: _FakeObservableQuery_56<TParsed>(
+        returnValue: _FakeObservableQuery_52<TParsed>(
           this,
           Invocation.method(
             #watchQuery,
             [options],
           ),
         ),
-      ) as _i15.ObservableQuery<TParsed>);
+      ) as _i14.ObservableQuery<TParsed>);
 
   @override
-  _i15.ObservableQuery<TParsed> watchMutation<TParsed>(_i15.WatchQueryOptions<TParsed>? options) => (super.noSuchMethod(
+  _i14.ObservableQuery<TParsed> watchMutation<TParsed>(_i14.WatchQueryOptions<TParsed>? options) => (super.noSuchMethod(
         Invocation.method(
           #watchMutation,
           [options],
         ),
-        returnValue: _FakeObservableQuery_56<TParsed>(
+        returnValue: _FakeObservableQuery_52<TParsed>(
           this,
           Invocation.method(
             #watchMutation,
             [options],
           ),
         ),
-      ) as _i15.ObservableQuery<TParsed>);
+      ) as _i14.ObservableQuery<TParsed>);
 
   @override
-  _i21.Future<_i15.QueryResult<TParsed>> query<TParsed>(_i15.QueryOptions<TParsed>? options) => (super.noSuchMethod(
+  _i20.Future<_i14.QueryResult<TParsed>> query<TParsed>(_i14.QueryOptions<TParsed>? options) => (super.noSuchMethod(
         Invocation.method(
           #query,
           [options],
         ),
-        returnValue: _i21.Future<_i15.QueryResult<TParsed>>.value(_FakeQueryResult_57<TParsed>(
+        returnValue: _i20.Future<_i14.QueryResult<TParsed>>.value(_FakeQueryResult_53<TParsed>(
           this,
           Invocation.method(
             #query,
             [options],
           ),
         )),
-      ) as _i21.Future<_i15.QueryResult<TParsed>>);
+      ) as _i20.Future<_i14.QueryResult<TParsed>>);
 
   @override
-  _i21.Future<_i15.QueryResult<TParsed>> mutate<TParsed>(_i15.MutationOptions<TParsed>? options) => (super.noSuchMethod(
+  _i20.Future<_i14.QueryResult<TParsed>> mutate<TParsed>(_i14.MutationOptions<TParsed>? options) => (super.noSuchMethod(
         Invocation.method(
           #mutate,
           [options],
         ),
-        returnValue: _i21.Future<_i15.QueryResult<TParsed>>.value(_FakeQueryResult_57<TParsed>(
+        returnValue: _i20.Future<_i14.QueryResult<TParsed>>.value(_FakeQueryResult_53<TParsed>(
           this,
           Invocation.method(
             #mutate,
             [options],
           ),
         )),
-      ) as _i21.Future<_i15.QueryResult<TParsed>>);
+      ) as _i20.Future<_i14.QueryResult<TParsed>>);
 
   @override
-  _i21.Stream<_i15.QueryResult<TParsed>> subscribe<TParsed>(_i15.SubscriptionOptions<TParsed>? options) =>
+  _i20.Stream<_i14.QueryResult<TParsed>> subscribe<TParsed>(_i14.SubscriptionOptions<TParsed>? options) =>
       (super.noSuchMethod(
         Invocation.method(
           #subscribe,
           [options],
         ),
-        returnValue: _i21.Stream<_i15.QueryResult<TParsed>>.empty(),
-      ) as _i21.Stream<_i15.QueryResult<TParsed>>);
+        returnValue: _i20.Stream<_i14.QueryResult<TParsed>>.empty(),
+      ) as _i20.Stream<_i14.QueryResult<TParsed>>);
 
   @override
-  _i21.Future<_i15.QueryResult<TParsed>> fetchMore<TParsed>(
-    _i15.FetchMoreOptions? fetchMoreOptions, {
-    required _i15.QueryOptions<TParsed>? originalOptions,
-    required _i15.QueryResult<TParsed>? previousResult,
+  _i20.Future<_i14.QueryResult<TParsed>> fetchMore<TParsed>(
+    _i14.FetchMoreOptions? fetchMoreOptions, {
+    required _i14.QueryOptions<TParsed>? originalOptions,
+    required _i14.QueryResult<TParsed>? previousResult,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -5145,7 +4735,7 @@
             #previousResult: previousResult,
           },
         ),
-        returnValue: _i21.Future<_i15.QueryResult<TParsed>>.value(_FakeQueryResult_57<TParsed>(
+        returnValue: _i20.Future<_i14.QueryResult<TParsed>>.value(_FakeQueryResult_53<TParsed>(
           this,
           Invocation.method(
             #fetchMore,
@@ -5156,11 +4746,11 @@
             },
           ),
         )),
-      ) as _i21.Future<_i15.QueryResult<TParsed>>);
+      ) as _i20.Future<_i14.QueryResult<TParsed>>);
 
   @override
   Map<String, dynamic>? readQuery(
-    _i15.Request? request, {
+    _i14.Request? request, {
     bool? optimistic = true,
   }) =>
       (super.noSuchMethod(Invocation.method(
@@ -5171,7 +4761,7 @@
 
   @override
   Map<String, dynamic>? readFragment(
-    _i15.FragmentRequest? fragmentRequest, {
+    _i14.FragmentRequest? fragmentRequest, {
     bool? optimistic = true,
   }) =>
       (super.noSuchMethod(Invocation.method(
@@ -5182,7 +4772,7 @@
 
   @override
   void writeQuery(
-    _i15.Request? request, {
+    _i14.Request? request, {
     required Map<String, dynamic>? data,
     bool? broadcast = true,
   }) =>
@@ -5200,7 +4790,7 @@
 
   @override
   void writeFragment(
-    _i15.FragmentRequest? fragmentRequest, {
+    _i14.FragmentRequest? fragmentRequest, {
     bool? broadcast = true,
     required Map<String, dynamic>? data,
   }) =>
@@ -5217,18 +4807,18 @@
       );
 
   @override
-  _i21.Future<List<_i15.QueryResult<Object?>?>>? resetStore({bool? refetchQueries = true}) =>
+  _i20.Future<List<_i14.QueryResult<Object?>?>>? resetStore({bool? refetchQueries = true}) =>
       (super.noSuchMethod(Invocation.method(
         #resetStore,
         [],
         {#refetchQueries: refetchQueries},
-      )) as _i21.Future<List<_i15.QueryResult<Object?>?>>?);
+      )) as _i20.Future<List<_i14.QueryResult<Object?>?>>?);
 }
 
 /// A class which mocks [HttpClient].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockHttpClient extends _i1.Mock implements _i26.HttpClient {
+class MockHttpClient extends _i1.Mock implements _i25.HttpClient {
   MockHttpClient() {
     _i1.throwOnMissingStub(this);
   }
@@ -5236,7 +4826,7 @@
   @override
   Duration get idleTimeout => (super.noSuchMethod(
         Invocation.getter(#idleTimeout),
-        returnValue: _FakeDuration_19(
+        returnValue: _FakeDuration_15(
           this,
           Invocation.getter(#idleTimeout),
         ),
@@ -5295,7 +4885,7 @@
 
   @override
   set authenticate(
-          _i21.Future<bool> Function(
+          _i20.Future<bool> Function(
             Uri,
             String,
             String?,
@@ -5310,7 +4900,7 @@
 
   @override
   set connectionFactory(
-          _i21.Future<_i26.ConnectionTask<_i26.Socket>> Function(
+          _i20.Future<_i25.ConnectionTask<_i25.Socket>> Function(
             Uri,
             String?,
             int?,
@@ -5334,7 +4924,7 @@
 
   @override
   set authenticateProxy(
-          _i21.Future<bool> Function(
+          _i20.Future<bool> Function(
             String,
             int,
             String,
@@ -5351,7 +4941,7 @@
   @override
   set badCertificateCallback(
           bool Function(
-            _i26.X509Certificate,
+            _i25.X509Certificate,
             String,
             int,
           )? callback) =>
@@ -5373,7 +4963,7 @@
       );
 
   @override
-  _i21.Future<_i26.HttpClientRequest> open(
+  _i20.Future<_i25.HttpClientRequest> open(
     String? method,
     String? host,
     int? port,
@@ -5389,7 +4979,7 @@
             path,
           ],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #open,
@@ -5401,10 +4991,10 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> openUrl(
+  _i20.Future<_i25.HttpClientRequest> openUrl(
     String? method,
     Uri? url,
   ) =>
@@ -5416,7 +5006,7 @@
             url,
           ],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #openUrl,
@@ -5426,10 +5016,10 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> get(
+  _i20.Future<_i25.HttpClientRequest> get(
     String? host,
     int? port,
     String? path,
@@ -5443,7 +5033,7 @@
             path,
           ],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #get,
@@ -5454,25 +5044,25 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> getUrl(Uri? url) => (super.noSuchMethod(
+  _i20.Future<_i25.HttpClientRequest> getUrl(Uri? url) => (super.noSuchMethod(
         Invocation.method(
           #getUrl,
           [url],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #getUrl,
             [url],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> post(
+  _i20.Future<_i25.HttpClientRequest> post(
     String? host,
     int? port,
     String? path,
@@ -5486,7 +5076,7 @@
             path,
           ],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #post,
@@ -5497,25 +5087,25 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> postUrl(Uri? url) => (super.noSuchMethod(
+  _i20.Future<_i25.HttpClientRequest> postUrl(Uri? url) => (super.noSuchMethod(
         Invocation.method(
           #postUrl,
           [url],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #postUrl,
             [url],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> put(
+  _i20.Future<_i25.HttpClientRequest> put(
     String? host,
     int? port,
     String? path,
@@ -5529,7 +5119,7 @@
             path,
           ],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #put,
@@ -5540,25 +5130,25 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> putUrl(Uri? url) => (super.noSuchMethod(
+  _i20.Future<_i25.HttpClientRequest> putUrl(Uri? url) => (super.noSuchMethod(
         Invocation.method(
           #putUrl,
           [url],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #putUrl,
             [url],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> delete(
+  _i20.Future<_i25.HttpClientRequest> delete(
     String? host,
     int? port,
     String? path,
@@ -5572,7 +5162,7 @@
             path,
           ],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #delete,
@@ -5583,25 +5173,25 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> deleteUrl(Uri? url) => (super.noSuchMethod(
+  _i20.Future<_i25.HttpClientRequest> deleteUrl(Uri? url) => (super.noSuchMethod(
         Invocation.method(
           #deleteUrl,
           [url],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #deleteUrl,
             [url],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> patch(
+  _i20.Future<_i25.HttpClientRequest> patch(
     String? host,
     int? port,
     String? path,
@@ -5615,7 +5205,7 @@
             path,
           ],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #patch,
@@ -5626,25 +5216,25 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> patchUrl(Uri? url) => (super.noSuchMethod(
+  _i20.Future<_i25.HttpClientRequest> patchUrl(Uri? url) => (super.noSuchMethod(
         Invocation.method(
           #patchUrl,
           [url],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #patchUrl,
             [url],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> head(
+  _i20.Future<_i25.HttpClientRequest> head(
     String? host,
     int? port,
     String? path,
@@ -5658,7 +5248,7 @@
             path,
           ],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #head,
@@ -5669,28 +5259,28 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
-  _i21.Future<_i26.HttpClientRequest> headUrl(Uri? url) => (super.noSuchMethod(
+  _i20.Future<_i25.HttpClientRequest> headUrl(Uri? url) => (super.noSuchMethod(
         Invocation.method(
           #headUrl,
           [url],
         ),
-        returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+        returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
           this,
           Invocation.method(
             #headUrl,
             [url],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientRequest>);
+      ) as _i20.Future<_i25.HttpClientRequest>);
 
   @override
   void addCredentials(
     Uri? url,
     String? realm,
-    _i26.HttpClientCredentials? credentials,
+    _i25.HttpClientCredentials? credentials,
   ) =>
       super.noSuchMethod(
         Invocation.method(
@@ -5709,7 +5299,7 @@
     String? host,
     int? port,
     String? realm,
-    _i26.HttpClientCredentials? credentials,
+    _i25.HttpClientCredentials? credentials,
   ) =>
       super.noSuchMethod(
         Invocation.method(
@@ -5738,7 +5328,7 @@
 /// A class which mocks [HttpClientRequest].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockHttpClientRequest extends _i1.Mock implements _i26.HttpClientRequest {
+class MockHttpClientRequest extends _i1.Mock implements _i25.HttpClientRequest {
   MockHttpClientRequest() {
     _i1.throwOnMissingStub(this);
   }
@@ -5821,7 +5411,7 @@
   @override
   String get method => (super.noSuchMethod(
         Invocation.getter(#method),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#method),
         ),
@@ -5830,47 +5420,47 @@
   @override
   Uri get uri => (super.noSuchMethod(
         Invocation.getter(#uri),
-        returnValue: _FakeUri_59(
+        returnValue: _FakeUri_55(
           this,
           Invocation.getter(#uri),
         ),
       ) as Uri);
 
   @override
-  _i26.HttpHeaders get headers => (super.noSuchMethod(
+  _i25.HttpHeaders get headers => (super.noSuchMethod(
         Invocation.getter(#headers),
-        returnValue: _FakeHttpHeaders_60(
+        returnValue: _FakeHttpHeaders_56(
           this,
           Invocation.getter(#headers),
         ),
-      ) as _i26.HttpHeaders);
+      ) as _i25.HttpHeaders);
 
   @override
-  List<_i26.Cookie> get cookies => (super.noSuchMethod(
+  List<_i25.Cookie> get cookies => (super.noSuchMethod(
         Invocation.getter(#cookies),
-        returnValue: <_i26.Cookie>[],
-      ) as List<_i26.Cookie>);
+        returnValue: <_i25.Cookie>[],
+      ) as List<_i25.Cookie>);
 
   @override
-  _i21.Future<_i26.HttpClientResponse> get done => (super.noSuchMethod(
+  _i20.Future<_i25.HttpClientResponse> get done => (super.noSuchMethod(
         Invocation.getter(#done),
-        returnValue: _i21.Future<_i26.HttpClientResponse>.value(_FakeHttpClientResponse_61(
+        returnValue: _i20.Future<_i25.HttpClientResponse>.value(_FakeHttpClientResponse_57(
           this,
           Invocation.getter(#done),
         )),
-      ) as _i21.Future<_i26.HttpClientResponse>);
+      ) as _i20.Future<_i25.HttpClientResponse>);
 
   @override
-  _i27.Encoding get encoding => (super.noSuchMethod(
+  _i26.Encoding get encoding => (super.noSuchMethod(
         Invocation.getter(#encoding),
-        returnValue: _FakeEncoding_62(
+        returnValue: _FakeEncoding_58(
           this,
           Invocation.getter(#encoding),
         ),
-      ) as _i27.Encoding);
+      ) as _i26.Encoding);
 
   @override
-  set encoding(_i27.Encoding? _encoding) => super.noSuchMethod(
+  set encoding(_i26.Encoding? _encoding) => super.noSuchMethod(
         Invocation.setter(
           #encoding,
           _encoding,
@@ -5879,19 +5469,19 @@
       );
 
   @override
-  _i21.Future<_i26.HttpClientResponse> close() => (super.noSuchMethod(
+  _i20.Future<_i25.HttpClientResponse> close() => (super.noSuchMethod(
         Invocation.method(
           #close,
           [],
         ),
-        returnValue: _i21.Future<_i26.HttpClientResponse>.value(_FakeHttpClientResponse_61(
+        returnValue: _i20.Future<_i25.HttpClientResponse>.value(_FakeHttpClientResponse_57(
           this,
           Invocation.method(
             #close,
             [],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientResponse>);
+      ) as _i20.Future<_i25.HttpClientResponse>);
 
   @override
   void abort([
@@ -5978,28 +5568,28 @@
       );
 
   @override
-  _i21.Future<dynamic> addStream(_i21.Stream<List<int>>? stream) => (super.noSuchMethod(
+  _i20.Future<dynamic> addStream(_i20.Stream<List<int>>? stream) => (super.noSuchMethod(
         Invocation.method(
           #addStream,
           [stream],
         ),
-        returnValue: _i21.Future<dynamic>.value(),
-      ) as _i21.Future<dynamic>);
+        returnValue: _i20.Future<dynamic>.value(),
+      ) as _i20.Future<dynamic>);
 
   @override
-  _i21.Future<dynamic> flush() => (super.noSuchMethod(
+  _i20.Future<dynamic> flush() => (super.noSuchMethod(
         Invocation.method(
           #flush,
           [],
         ),
-        returnValue: _i21.Future<dynamic>.value(),
-      ) as _i21.Future<dynamic>);
+        returnValue: _i20.Future<dynamic>.value(),
+      ) as _i20.Future<dynamic>);
 }
 
 /// A class which mocks [HttpClientResponse].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockHttpClientResponse extends _i1.Mock implements _i26.HttpClientResponse {
+class MockHttpClientResponse extends _i1.Mock implements _i25.HttpClientResponse {
   MockHttpClientResponse() {
     _i1.throwOnMissingStub(this);
   }
@@ -6013,7 +5603,7 @@
   @override
   String get reasonPhrase => (super.noSuchMethod(
         Invocation.getter(#reasonPhrase),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#reasonPhrase),
         ),
@@ -6026,10 +5616,10 @@
       ) as int);
 
   @override
-  _i26.HttpClientResponseCompressionState get compressionState => (super.noSuchMethod(
+  _i25.HttpClientResponseCompressionState get compressionState => (super.noSuchMethod(
         Invocation.getter(#compressionState),
-        returnValue: _i26.HttpClientResponseCompressionState.notCompressed,
-      ) as _i26.HttpClientResponseCompressionState);
+        returnValue: _i25.HttpClientResponseCompressionState.notCompressed,
+      ) as _i25.HttpClientResponseCompressionState);
 
   @override
   bool get persistentConnection => (super.noSuchMethod(
@@ -6044,25 +5634,25 @@
       ) as bool);
 
   @override
-  List<_i26.RedirectInfo> get redirects => (super.noSuchMethod(
+  List<_i25.RedirectInfo> get redirects => (super.noSuchMethod(
         Invocation.getter(#redirects),
-        returnValue: <_i26.RedirectInfo>[],
-      ) as List<_i26.RedirectInfo>);
+        returnValue: <_i25.RedirectInfo>[],
+      ) as List<_i25.RedirectInfo>);
 
   @override
-  _i26.HttpHeaders get headers => (super.noSuchMethod(
+  _i25.HttpHeaders get headers => (super.noSuchMethod(
         Invocation.getter(#headers),
-        returnValue: _FakeHttpHeaders_60(
+        returnValue: _FakeHttpHeaders_56(
           this,
           Invocation.getter(#headers),
         ),
-      ) as _i26.HttpHeaders);
+      ) as _i25.HttpHeaders);
 
   @override
-  List<_i26.Cookie> get cookies => (super.noSuchMethod(
+  List<_i25.Cookie> get cookies => (super.noSuchMethod(
         Invocation.getter(#cookies),
-        returnValue: <_i26.Cookie>[],
-      ) as List<_i26.Cookie>);
+        returnValue: <_i25.Cookie>[],
+      ) as List<_i25.Cookie>);
 
   @override
   bool get isBroadcast => (super.noSuchMethod(
@@ -6071,37 +5661,37 @@
       ) as bool);
 
   @override
-  _i21.Future<int> get length => (super.noSuchMethod(
+  _i20.Future<int> get length => (super.noSuchMethod(
         Invocation.getter(#length),
-        returnValue: _i21.Future<int>.value(0),
-      ) as _i21.Future<int>);
+        returnValue: _i20.Future<int>.value(0),
+      ) as _i20.Future<int>);
 
   @override
-  _i21.Future<bool> get isEmpty => (super.noSuchMethod(
+  _i20.Future<bool> get isEmpty => (super.noSuchMethod(
         Invocation.getter(#isEmpty),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<List<int>> get first => (super.noSuchMethod(
+  _i20.Future<List<int>> get first => (super.noSuchMethod(
         Invocation.getter(#first),
-        returnValue: _i21.Future<List<int>>.value(<int>[]),
-      ) as _i21.Future<List<int>>);
+        returnValue: _i20.Future<List<int>>.value(<int>[]),
+      ) as _i20.Future<List<int>>);
 
   @override
-  _i21.Future<List<int>> get last => (super.noSuchMethod(
+  _i20.Future<List<int>> get last => (super.noSuchMethod(
         Invocation.getter(#last),
-        returnValue: _i21.Future<List<int>>.value(<int>[]),
-      ) as _i21.Future<List<int>>);
+        returnValue: _i20.Future<List<int>>.value(<int>[]),
+      ) as _i20.Future<List<int>>);
 
   @override
-  _i21.Future<List<int>> get single => (super.noSuchMethod(
+  _i20.Future<List<int>> get single => (super.noSuchMethod(
         Invocation.getter(#single),
-        returnValue: _i21.Future<List<int>>.value(<int>[]),
-      ) as _i21.Future<List<int>>);
+        returnValue: _i20.Future<List<int>>.value(<int>[]),
+      ) as _i20.Future<List<int>>);
 
   @override
-  _i21.Future<_i26.HttpClientResponse> redirect([
+  _i20.Future<_i25.HttpClientResponse> redirect([
     String? method,
     Uri? url,
     bool? followLoops,
@@ -6115,7 +5705,7 @@
             followLoops,
           ],
         ),
-        returnValue: _i21.Future<_i26.HttpClientResponse>.value(_FakeHttpClientResponse_61(
+        returnValue: _i20.Future<_i25.HttpClientResponse>.value(_FakeHttpClientResponse_57(
           this,
           Invocation.method(
             #redirect,
@@ -6126,27 +5716,27 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i26.HttpClientResponse>);
+      ) as _i20.Future<_i25.HttpClientResponse>);
 
   @override
-  _i21.Future<_i26.Socket> detachSocket() => (super.noSuchMethod(
+  _i20.Future<_i25.Socket> detachSocket() => (super.noSuchMethod(
         Invocation.method(
           #detachSocket,
           [],
         ),
-        returnValue: _i21.Future<_i26.Socket>.value(_FakeSocket_63(
+        returnValue: _i20.Future<_i25.Socket>.value(_FakeSocket_59(
           this,
           Invocation.method(
             #detachSocket,
             [],
           ),
         )),
-      ) as _i21.Future<_i26.Socket>);
+      ) as _i20.Future<_i25.Socket>);
 
   @override
-  _i21.Stream<List<int>> asBroadcastStream({
-    void Function(_i21.StreamSubscription<List<int>>)? onListen,
-    void Function(_i21.StreamSubscription<List<int>>)? onCancel,
+  _i20.Stream<List<int>> asBroadcastStream({
+    void Function(_i20.StreamSubscription<List<int>>)? onListen,
+    void Function(_i20.StreamSubscription<List<int>>)? onCancel,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -6157,11 +5747,11 @@
             #onCancel: onCancel,
           },
         ),
-        returnValue: _i21.Stream<List<int>>.empty(),
-      ) as _i21.Stream<List<int>>);
+        returnValue: _i20.Stream<List<int>>.empty(),
+      ) as _i20.Stream<List<int>>);
 
   @override
-  _i21.StreamSubscription<List<int>> listen(
+  _i20.StreamSubscription<List<int>> listen(
     void Function(List<int>)? onData, {
     Function? onError,
     void Function()? onDone,
@@ -6177,7 +5767,7 @@
             #cancelOnError: cancelOnError,
           },
         ),
-        returnValue: _FakeStreamSubscription_64<List<int>>(
+        returnValue: _FakeStreamSubscription_60<List<int>>(
           this,
           Invocation.method(
             #listen,
@@ -6189,46 +5779,46 @@
             },
           ),
         ),
-      ) as _i21.StreamSubscription<List<int>>);
+      ) as _i20.StreamSubscription<List<int>>);
 
   @override
-  _i21.Stream<List<int>> where(bool Function(List<int>)? test) => (super.noSuchMethod(
+  _i20.Stream<List<int>> where(bool Function(List<int>)? test) => (super.noSuchMethod(
         Invocation.method(
           #where,
           [test],
         ),
-        returnValue: _i21.Stream<List<int>>.empty(),
-      ) as _i21.Stream<List<int>>);
+        returnValue: _i20.Stream<List<int>>.empty(),
+      ) as _i20.Stream<List<int>>);
 
   @override
-  _i21.Stream<S> map<S>(S Function(List<int>)? convert) => (super.noSuchMethod(
+  _i20.Stream<S> map<S>(S Function(List<int>)? convert) => (super.noSuchMethod(
         Invocation.method(
           #map,
           [convert],
         ),
-        returnValue: _i21.Stream<S>.empty(),
-      ) as _i21.Stream<S>);
+        returnValue: _i20.Stream<S>.empty(),
+      ) as _i20.Stream<S>);
 
   @override
-  _i21.Stream<E> asyncMap<E>(_i21.FutureOr<E> Function(List<int>)? convert) => (super.noSuchMethod(
+  _i20.Stream<E> asyncMap<E>(_i20.FutureOr<E> Function(List<int>)? convert) => (super.noSuchMethod(
         Invocation.method(
           #asyncMap,
           [convert],
         ),
-        returnValue: _i21.Stream<E>.empty(),
-      ) as _i21.Stream<E>);
+        returnValue: _i20.Stream<E>.empty(),
+      ) as _i20.Stream<E>);
 
   @override
-  _i21.Stream<E> asyncExpand<E>(_i21.Stream<E>? Function(List<int>)? convert) => (super.noSuchMethod(
+  _i20.Stream<E> asyncExpand<E>(_i20.Stream<E>? Function(List<int>)? convert) => (super.noSuchMethod(
         Invocation.method(
           #asyncExpand,
           [convert],
         ),
-        returnValue: _i21.Stream<E>.empty(),
-      ) as _i21.Stream<E>);
+        returnValue: _i20.Stream<E>.empty(),
+      ) as _i20.Stream<E>);
 
   @override
-  _i21.Stream<List<int>> handleError(
+  _i20.Stream<List<int>> handleError(
     Function? onError, {
     bool Function(dynamic)? test,
   }) =>
@@ -6238,38 +5828,38 @@
           [onError],
           {#test: test},
         ),
-        returnValue: _i21.Stream<List<int>>.empty(),
-      ) as _i21.Stream<List<int>>);
+        returnValue: _i20.Stream<List<int>>.empty(),
+      ) as _i20.Stream<List<int>>);
 
   @override
-  _i21.Stream<S> expand<S>(Iterable<S> Function(List<int>)? convert) => (super.noSuchMethod(
+  _i20.Stream<S> expand<S>(Iterable<S> Function(List<int>)? convert) => (super.noSuchMethod(
         Invocation.method(
           #expand,
           [convert],
         ),
-        returnValue: _i21.Stream<S>.empty(),
-      ) as _i21.Stream<S>);
+        returnValue: _i20.Stream<S>.empty(),
+      ) as _i20.Stream<S>);
 
   @override
-  _i21.Future<dynamic> pipe(_i21.StreamConsumer<List<int>>? streamConsumer) => (super.noSuchMethod(
+  _i20.Future<dynamic> pipe(_i20.StreamConsumer<List<int>>? streamConsumer) => (super.noSuchMethod(
         Invocation.method(
           #pipe,
           [streamConsumer],
         ),
-        returnValue: _i21.Future<dynamic>.value(),
-      ) as _i21.Future<dynamic>);
+        returnValue: _i20.Future<dynamic>.value(),
+      ) as _i20.Future<dynamic>);
 
   @override
-  _i21.Stream<S> transform<S>(_i21.StreamTransformer<List<int>, S>? streamTransformer) => (super.noSuchMethod(
+  _i20.Stream<S> transform<S>(_i20.StreamTransformer<List<int>, S>? streamTransformer) => (super.noSuchMethod(
         Invocation.method(
           #transform,
           [streamTransformer],
         ),
-        returnValue: _i21.Stream<S>.empty(),
-      ) as _i21.Stream<S>);
+        returnValue: _i20.Stream<S>.empty(),
+      ) as _i20.Stream<S>);
 
   @override
-  _i21.Future<List<int>> reduce(
+  _i20.Future<List<int>> reduce(
           List<int> Function(
             List<int>,
             List<int>,
@@ -6279,11 +5869,11 @@
           #reduce,
           [combine],
         ),
-        returnValue: _i21.Future<List<int>>.value(<int>[]),
-      ) as _i21.Future<List<int>>);
+        returnValue: _i20.Future<List<int>>.value(<int>[]),
+      ) as _i20.Future<List<int>>);
 
   @override
-  _i21.Future<S> fold<S>(
+  _i20.Future<S> fold<S>(
     S? initialValue,
     S Function(
       S,
@@ -6298,8 +5888,8 @@
             combine,
           ],
         ),
-        returnValue: _i32.ifNotNull(
-              _i32.dummyValueOrNull<S>(
+        returnValue: _i30.ifNotNull(
+              _i30.dummyValueOrNull<S>(
                 this,
                 Invocation.method(
                   #fold,
@@ -6309,9 +5899,9 @@
                   ],
                 ),
               ),
-              (S v) => _i21.Future<S>.value(v),
+              (S v) => _i20.Future<S>.value(v),
             ) ??
-            _FakeFuture_27<S>(
+            _FakeFuture_23<S>(
               this,
               Invocation.method(
                 #fold,
@@ -6321,150 +5911,150 @@
                 ],
               ),
             ),
-      ) as _i21.Future<S>);
+      ) as _i20.Future<S>);
 
   @override
-  _i21.Future<String> join([String? separator = r'']) => (super.noSuchMethod(
+  _i20.Future<String> join([String? separator = r'']) => (super.noSuchMethod(
         Invocation.method(
           #join,
           [separator],
         ),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.method(
             #join,
             [separator],
           ),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<bool> contains(Object? needle) => (super.noSuchMethod(
+  _i20.Future<bool> contains(Object? needle) => (super.noSuchMethod(
         Invocation.method(
           #contains,
           [needle],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<void> forEach(void Function(List<int>)? action) => (super.noSuchMethod(
+  _i20.Future<void> forEach(void Function(List<int>)? action) => (super.noSuchMethod(
         Invocation.method(
           #forEach,
           [action],
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<bool> every(bool Function(List<int>)? test) => (super.noSuchMethod(
+  _i20.Future<bool> every(bool Function(List<int>)? test) => (super.noSuchMethod(
         Invocation.method(
           #every,
           [test],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<bool> any(bool Function(List<int>)? test) => (super.noSuchMethod(
+  _i20.Future<bool> any(bool Function(List<int>)? test) => (super.noSuchMethod(
         Invocation.method(
           #any,
           [test],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<R> cast<R>() => (super.noSuchMethod(
+  _i20.Stream<R> cast<R>() => (super.noSuchMethod(
         Invocation.method(
           #cast,
           [],
         ),
-        returnValue: _i21.Stream<R>.empty(),
-      ) as _i21.Stream<R>);
+        returnValue: _i20.Stream<R>.empty(),
+      ) as _i20.Stream<R>);
 
   @override
-  _i21.Future<List<List<int>>> toList() => (super.noSuchMethod(
+  _i20.Future<List<List<int>>> toList() => (super.noSuchMethod(
         Invocation.method(
           #toList,
           [],
         ),
-        returnValue: _i21.Future<List<List<int>>>.value(<List<int>>[]),
-      ) as _i21.Future<List<List<int>>>);
+        returnValue: _i20.Future<List<List<int>>>.value(<List<int>>[]),
+      ) as _i20.Future<List<List<int>>>);
 
   @override
-  _i21.Future<Set<List<int>>> toSet() => (super.noSuchMethod(
+  _i20.Future<Set<List<int>>> toSet() => (super.noSuchMethod(
         Invocation.method(
           #toSet,
           [],
         ),
-        returnValue: _i21.Future<Set<List<int>>>.value(<List<int>>{}),
-      ) as _i21.Future<Set<List<int>>>);
+        returnValue: _i20.Future<Set<List<int>>>.value(<List<int>>{}),
+      ) as _i20.Future<Set<List<int>>>);
 
   @override
-  _i21.Future<E> drain<E>([E? futureValue]) => (super.noSuchMethod(
+  _i20.Future<E> drain<E>([E? futureValue]) => (super.noSuchMethod(
         Invocation.method(
           #drain,
           [futureValue],
         ),
-        returnValue: _i32.ifNotNull(
-              _i32.dummyValueOrNull<E>(
+        returnValue: _i30.ifNotNull(
+              _i30.dummyValueOrNull<E>(
                 this,
                 Invocation.method(
                   #drain,
                   [futureValue],
                 ),
               ),
-              (E v) => _i21.Future<E>.value(v),
+              (E v) => _i20.Future<E>.value(v),
             ) ??
-            _FakeFuture_27<E>(
+            _FakeFuture_23<E>(
               this,
               Invocation.method(
                 #drain,
                 [futureValue],
               ),
             ),
-      ) as _i21.Future<E>);
+      ) as _i20.Future<E>);
 
   @override
-  _i21.Stream<List<int>> take(int? count) => (super.noSuchMethod(
+  _i20.Stream<List<int>> take(int? count) => (super.noSuchMethod(
         Invocation.method(
           #take,
           [count],
         ),
-        returnValue: _i21.Stream<List<int>>.empty(),
-      ) as _i21.Stream<List<int>>);
+        returnValue: _i20.Stream<List<int>>.empty(),
+      ) as _i20.Stream<List<int>>);
 
   @override
-  _i21.Stream<List<int>> takeWhile(bool Function(List<int>)? test) => (super.noSuchMethod(
+  _i20.Stream<List<int>> takeWhile(bool Function(List<int>)? test) => (super.noSuchMethod(
         Invocation.method(
           #takeWhile,
           [test],
         ),
-        returnValue: _i21.Stream<List<int>>.empty(),
-      ) as _i21.Stream<List<int>>);
+        returnValue: _i20.Stream<List<int>>.empty(),
+      ) as _i20.Stream<List<int>>);
 
   @override
-  _i21.Stream<List<int>> skip(int? count) => (super.noSuchMethod(
+  _i20.Stream<List<int>> skip(int? count) => (super.noSuchMethod(
         Invocation.method(
           #skip,
           [count],
         ),
-        returnValue: _i21.Stream<List<int>>.empty(),
-      ) as _i21.Stream<List<int>>);
+        returnValue: _i20.Stream<List<int>>.empty(),
+      ) as _i20.Stream<List<int>>);
 
   @override
-  _i21.Stream<List<int>> skipWhile(bool Function(List<int>)? test) => (super.noSuchMethod(
+  _i20.Stream<List<int>> skipWhile(bool Function(List<int>)? test) => (super.noSuchMethod(
         Invocation.method(
           #skipWhile,
           [test],
         ),
-        returnValue: _i21.Stream<List<int>>.empty(),
-      ) as _i21.Stream<List<int>>);
+        returnValue: _i20.Stream<List<int>>.empty(),
+      ) as _i20.Stream<List<int>>);
 
   @override
-  _i21.Stream<List<int>> distinct(
+  _i20.Stream<List<int>> distinct(
           [bool Function(
             List<int>,
             List<int>,
@@ -6474,11 +6064,11 @@
           #distinct,
           [equals],
         ),
-        returnValue: _i21.Stream<List<int>>.empty(),
-      ) as _i21.Stream<List<int>>);
+        returnValue: _i20.Stream<List<int>>.empty(),
+      ) as _i20.Stream<List<int>>);
 
   @override
-  _i21.Future<List<int>> firstWhere(
+  _i20.Future<List<int>> firstWhere(
     bool Function(List<int>)? test, {
     List<int> Function()? orElse,
   }) =>
@@ -6488,11 +6078,11 @@
           [test],
           {#orElse: orElse},
         ),
-        returnValue: _i21.Future<List<int>>.value(<int>[]),
-      ) as _i21.Future<List<int>>);
+        returnValue: _i20.Future<List<int>>.value(<int>[]),
+      ) as _i20.Future<List<int>>);
 
   @override
-  _i21.Future<List<int>> lastWhere(
+  _i20.Future<List<int>> lastWhere(
     bool Function(List<int>)? test, {
     List<int> Function()? orElse,
   }) =>
@@ -6502,11 +6092,11 @@
           [test],
           {#orElse: orElse},
         ),
-        returnValue: _i21.Future<List<int>>.value(<int>[]),
-      ) as _i21.Future<List<int>>);
+        returnValue: _i20.Future<List<int>>.value(<int>[]),
+      ) as _i20.Future<List<int>>);
 
   @override
-  _i21.Future<List<int>> singleWhere(
+  _i20.Future<List<int>> singleWhere(
     bool Function(List<int>)? test, {
     List<int> Function()? orElse,
   }) =>
@@ -6516,22 +6106,22 @@
           [test],
           {#orElse: orElse},
         ),
-        returnValue: _i21.Future<List<int>>.value(<int>[]),
-      ) as _i21.Future<List<int>>);
+        returnValue: _i20.Future<List<int>>.value(<int>[]),
+      ) as _i20.Future<List<int>>);
 
   @override
-  _i21.Future<List<int>> elementAt(int? index) => (super.noSuchMethod(
+  _i20.Future<List<int>> elementAt(int? index) => (super.noSuchMethod(
         Invocation.method(
           #elementAt,
           [index],
         ),
-        returnValue: _i21.Future<List<int>>.value(<int>[]),
-      ) as _i21.Future<List<int>>);
+        returnValue: _i20.Future<List<int>>.value(<int>[]),
+      ) as _i20.Future<List<int>>);
 
   @override
-  _i21.Stream<List<int>> timeout(
+  _i20.Stream<List<int>> timeout(
     Duration? timeLimit, {
-    void Function(_i21.EventSink<List<int>>)? onTimeout,
+    void Function(_i20.EventSink<List<int>>)? onTimeout,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -6539,8 +6129,8 @@
           [timeLimit],
           {#onTimeout: onTimeout},
         ),
-        returnValue: _i21.Stream<List<int>>.empty(),
-      ) as _i21.Stream<List<int>>);
+        returnValue: _i20.Stream<List<int>>.empty(),
+      ) as _i20.Stream<List<int>>);
 }
 
 /// A class which mocks [JobsResource].
@@ -6552,7 +6142,7 @@
   }
 
   @override
-  _i21.Future<_i6.JobCancelResponse> cancel(
+  _i20.Future<_i6.JobCancelResponse> cancel(
     String? projectId,
     String? jobId, {
     String? location,
@@ -6570,7 +6160,7 @@
             #$fields: $fields,
           },
         ),
-        returnValue: _i21.Future<_i6.JobCancelResponse>.value(_FakeJobCancelResponse_65(
+        returnValue: _i20.Future<_i6.JobCancelResponse>.value(_FakeJobCancelResponse_61(
           this,
           Invocation.method(
             #cancel,
@@ -6584,10 +6174,10 @@
             },
           ),
         )),
-      ) as _i21.Future<_i6.JobCancelResponse>);
+      ) as _i20.Future<_i6.JobCancelResponse>);
 
   @override
-  _i21.Future<void> delete(
+  _i20.Future<void> delete(
     String? projectId,
     String? jobId, {
     String? location,
@@ -6605,12 +6195,12 @@
             #$fields: $fields,
           },
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<_i6.Job> get(
+  _i20.Future<_i6.Job> get(
     String? projectId,
     String? jobId, {
     String? location,
@@ -6628,7 +6218,7 @@
             #$fields: $fields,
           },
         ),
-        returnValue: _i21.Future<_i6.Job>.value(_FakeJob_66(
+        returnValue: _i20.Future<_i6.Job>.value(_FakeJob_62(
           this,
           Invocation.method(
             #get,
@@ -6642,10 +6232,10 @@
             },
           ),
         )),
-      ) as _i21.Future<_i6.Job>);
+      ) as _i20.Future<_i6.Job>);
 
   @override
-  _i21.Future<_i6.GetQueryResultsResponse> getQueryResults(
+  _i20.Future<_i6.GetQueryResultsResponse> getQueryResults(
     String? projectId,
     String? jobId, {
     String? location,
@@ -6671,7 +6261,7 @@
             #$fields: $fields,
           },
         ),
-        returnValue: _i21.Future<_i6.GetQueryResultsResponse>.value(_FakeGetQueryResultsResponse_67(
+        returnValue: _i20.Future<_i6.GetQueryResultsResponse>.value(_FakeGetQueryResultsResponse_63(
           this,
           Invocation.method(
             #getQueryResults,
@@ -6689,10 +6279,10 @@
             },
           ),
         )),
-      ) as _i21.Future<_i6.GetQueryResultsResponse>);
+      ) as _i20.Future<_i6.GetQueryResultsResponse>);
 
   @override
-  _i21.Future<_i6.Job> insert(
+  _i20.Future<_i6.Job> insert(
     _i6.Job? request,
     String? projectId, {
     String? $fields,
@@ -6712,7 +6302,7 @@
             #uploadMedia: uploadMedia,
           },
         ),
-        returnValue: _i21.Future<_i6.Job>.value(_FakeJob_66(
+        returnValue: _i20.Future<_i6.Job>.value(_FakeJob_62(
           this,
           Invocation.method(
             #insert,
@@ -6727,10 +6317,10 @@
             },
           ),
         )),
-      ) as _i21.Future<_i6.Job>);
+      ) as _i20.Future<_i6.Job>);
 
   @override
-  _i21.Future<_i6.JobList> list(
+  _i20.Future<_i6.JobList> list(
     String? projectId, {
     bool? allUsers,
     String? maxCreationTime,
@@ -6758,7 +6348,7 @@
             #$fields: $fields,
           },
         ),
-        returnValue: _i21.Future<_i6.JobList>.value(_FakeJobList_68(
+        returnValue: _i20.Future<_i6.JobList>.value(_FakeJobList_64(
           this,
           Invocation.method(
             #list,
@@ -6776,10 +6366,10 @@
             },
           ),
         )),
-      ) as _i21.Future<_i6.JobList>);
+      ) as _i20.Future<_i6.JobList>);
 
   @override
-  _i21.Future<_i6.QueryResponse> query(
+  _i20.Future<_i6.QueryResponse> query(
     _i6.QueryRequest? request,
     String? projectId, {
     String? $fields,
@@ -6793,7 +6383,7 @@
           ],
           {#$fields: $fields},
         ),
-        returnValue: _i21.Future<_i6.QueryResponse>.value(_FakeQueryResponse_69(
+        returnValue: _i20.Future<_i6.QueryResponse>.value(_FakeQueryResponse_65(
           this,
           Invocation.method(
             #query,
@@ -6804,28 +6394,28 @@
             {#$fields: $fields},
           ),
         )),
-      ) as _i21.Future<_i6.QueryResponse>);
+      ) as _i20.Future<_i6.QueryResponse>);
 }
 
 /// A class which mocks [LuciBuildService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockLuciBuildService extends _i1.Mock implements _i16.LuciBuildService {
+class MockLuciBuildService extends _i1.Mock implements _i15.LuciBuildService {
   MockLuciBuildService() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i16.BuildBucketClient get buildBucketClient => (super.noSuchMethod(
+  _i15.BuildBucketClient get buildBucketClient => (super.noSuchMethod(
         Invocation.getter(#buildBucketClient),
-        returnValue: _FakeBuildBucketClient_70(
+        returnValue: _FakeBuildBucketClient_66(
           this,
           Invocation.getter(#buildBucketClient),
         ),
-      ) as _i16.BuildBucketClient);
+      ) as _i15.BuildBucketClient);
 
   @override
-  set buildBucketClient(_i16.BuildBucketClient? _buildBucketClient) => super.noSuchMethod(
+  set buildBucketClient(_i15.BuildBucketClient? _buildBucketClient) => super.noSuchMethod(
         Invocation.setter(
           #buildBucketClient,
           _buildBucketClient,
@@ -6834,31 +6424,13 @@
       );
 
   @override
-  _i28.BuildBucketV2Client get buildBucketV2Client => (super.noSuchMethod(
-        Invocation.getter(#buildBucketV2Client),
-        returnValue: _FakeBuildBucketV2Client_71(
-          this,
-          Invocation.getter(#buildBucketV2Client),
-        ),
-      ) as _i28.BuildBucketV2Client);
-
-  @override
-  set buildBucketV2Client(_i28.BuildBucketV2Client? _buildBucketV2Client) => super.noSuchMethod(
-        Invocation.setter(
-          #buildBucketV2Client,
-          _buildBucketV2Client,
-        ),
-        returnValueForMissingStub: null,
-      );
-
-  @override
-  _i16.CacheService get cache => (super.noSuchMethod(
+  _i15.CacheService get cache => (super.noSuchMethod(
         Invocation.getter(#cache),
-        returnValue: _FakeCacheService_72(
+        returnValue: _FakeCacheService_67(
           this,
           Invocation.getter(#cache),
         ),
-      ) as _i16.CacheService);
+      ) as _i15.CacheService);
 
   @override
   _i3.Config get config => (super.noSuchMethod(
@@ -6879,16 +6451,16 @@
       );
 
   @override
-  _i25.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
+  _i24.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
         Invocation.getter(#githubChecksUtil),
-        returnValue: _FakeGithubChecksUtil_40(
+        returnValue: _FakeGithubChecksUtil_36(
           this,
           Invocation.getter(#githubChecksUtil),
         ),
-      ) as _i25.GithubChecksUtil);
+      ) as _i24.GithubChecksUtil);
 
   @override
-  set githubChecksUtil(_i25.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
+  set githubChecksUtil(_i24.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
         Invocation.setter(
           #githubChecksUtil,
           _githubChecksUtil,
@@ -6915,16 +6487,16 @@
       );
 
   @override
-  _i16.PubSub get pubsub => (super.noSuchMethod(
+  _i15.PubSub get pubsub => (super.noSuchMethod(
         Invocation.getter(#pubsub),
-        returnValue: _FakePubSub_73(
+        returnValue: _FakePubSub_68(
           this,
           Invocation.getter(#pubsub),
         ),
-      ) as _i16.PubSub);
+      ) as _i15.PubSub);
 
   @override
-  _i21.Future<List<List<_i8.Request>>> shard(
+  _i20.Future<List<List<_i8.Request>>> shard(
     List<_i8.Request>? requests,
     int? max,
   ) =>
@@ -6936,12 +6508,12 @@
             max,
           ],
         ),
-        returnValue: _i21.Future<List<List<_i8.Request>>>.value(<List<_i8.Request>>[]),
-      ) as _i21.Future<List<List<_i8.Request>>>);
+        returnValue: _i20.Future<List<List<_i8.Request>>>.value(<List<_i8.Request>>[]),
+      ) as _i20.Future<List<List<_i8.Request>>>);
 
   @override
-  _i21.Future<Iterable<_i8.Build>> getTryBuilds(
-    _i14.RepositorySlug? slug,
+  _i20.Future<Iterable<_i8.Build>> getTryBuilds(
+    _i13.RepositorySlug? slug,
     String? sha,
     String? builderName,
   ) =>
@@ -6954,48 +6526,21 @@
             builderName,
           ],
         ),
-        returnValue: _i21.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
-      ) as _i21.Future<Iterable<_i8.Build>>);
+        returnValue: _i20.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
+      ) as _i20.Future<Iterable<_i8.Build>>);
 
   @override
-  _i21.Future<Iterable<_i9.Build>> getTryBuildsV2(
-    _i14.RepositorySlug? slug,
-    String? sha,
-    String? builderName,
-  ) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getTryBuildsV2,
-          [
-            slug,
-            sha,
-            builderName,
-          ],
-        ),
-        returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
-      ) as _i21.Future<Iterable<_i9.Build>>);
-
-  @override
-  _i21.Future<Iterable<_i8.Build>> getTryBuildsByPullRequest(_i14.PullRequest? pullRequest) => (super.noSuchMethod(
+  _i20.Future<Iterable<_i8.Build>> getTryBuildsByPullRequest(_i13.PullRequest? pullRequest) => (super.noSuchMethod(
         Invocation.method(
           #getTryBuildsByPullRequest,
           [pullRequest],
         ),
-        returnValue: _i21.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
-      ) as _i21.Future<Iterable<_i8.Build>>);
+        returnValue: _i20.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
+      ) as _i20.Future<Iterable<_i8.Build>>);
 
   @override
-  _i21.Future<Iterable<_i9.Build>> getTryBuildsByPullRequestV2(_i14.PullRequest? pullRequest) => (super.noSuchMethod(
-        Invocation.method(
-          #getTryBuildsByPullRequestV2,
-          [pullRequest],
-        ),
-        returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
-      ) as _i21.Future<Iterable<_i9.Build>>);
-
-  @override
-  _i21.Future<Iterable<_i8.Build>> getProdBuilds(
-    _i14.RepositorySlug? slug,
+  _i20.Future<Iterable<_i8.Build>> getProdBuilds(
+    _i13.RepositorySlug? slug,
     String? commitSha,
     String? builderName,
   ) =>
@@ -7008,12 +6553,12 @@
             builderName,
           ],
         ),
-        returnValue: _i21.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
-      ) as _i21.Future<Iterable<_i8.Build>>);
+        returnValue: _i20.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
+      ) as _i20.Future<Iterable<_i8.Build>>);
 
   @override
-  _i21.Future<Iterable<_i8.Build>> getBuilds(
-    _i14.RepositorySlug? slug,
+  _i20.Future<Iterable<_i8.Build>> getBuilds(
+    _i13.RepositorySlug? slug,
     String? commitSha,
     String? builderName,
     String? bucket,
@@ -7030,36 +6575,14 @@
             tags,
           ],
         ),
-        returnValue: _i21.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
-      ) as _i21.Future<Iterable<_i8.Build>>);
+        returnValue: _i20.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
+      ) as _i20.Future<Iterable<_i8.Build>>);
 
   @override
-  _i21.Future<Iterable<_i9.Build>> getBuildsV2(
-    _i14.RepositorySlug? slug,
-    String? commitSha,
-    String? builderName,
-    String? bucket,
-    List<_i9.StringPair>? tags,
-  ) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getBuildsV2,
-          [
-            slug,
-            commitSha,
-            builderName,
-            bucket,
-            tags,
-          ],
-        ),
-        returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
-      ) as _i21.Future<Iterable<_i9.Build>>);
-
-  @override
-  _i21.Future<List<_i47.Target>> scheduleTryBuilds({
-    required List<_i47.Target>? targets,
-    required _i14.PullRequest? pullRequest,
-    _i34.CheckSuiteEvent? checkSuiteEvent,
+  _i20.Future<List<_i42.Target>> scheduleTryBuilds({
+    required List<_i42.Target>? targets,
+    required _i13.PullRequest? pullRequest,
+    _i32.CheckSuiteEvent? checkSuiteEvent,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -7071,12 +6594,12 @@
             #checkSuiteEvent: checkSuiteEvent,
           },
         ),
-        returnValue: _i21.Future<List<_i47.Target>>.value(<_i47.Target>[]),
-      ) as _i21.Future<List<_i47.Target>>);
+        returnValue: _i20.Future<List<_i42.Target>>.value(<_i42.Target>[]),
+      ) as _i20.Future<List<_i42.Target>>);
 
   @override
-  _i21.Future<void> cancelBuilds(
-    _i14.PullRequest? pullRequest,
+  _i20.Future<void> cancelBuilds(
+    _i13.PullRequest? pullRequest,
     String? reason,
   ) =>
       (super.noSuchMethod(
@@ -7087,31 +6610,14 @@
             reason,
           ],
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<void> cancelBuildsV2(
-    _i14.PullRequest? pullRequest,
-    String? reason,
-  ) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #cancelBuildsV2,
-          [
-            pullRequest,
-            reason,
-          ],
-        ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
-
-  @override
-  _i21.Future<List<_i8.Build?>> failedBuilds(
-    _i14.PullRequest? pullRequest,
-    List<_i47.Target>? targets,
+  _i20.Future<List<_i8.Build?>> failedBuilds(
+    _i13.PullRequest? pullRequest,
+    List<_i42.Target>? targets,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -7121,13 +6627,13 @@
             targets,
           ],
         ),
-        returnValue: _i21.Future<List<_i8.Build?>>.value(<_i8.Build?>[]),
-      ) as _i21.Future<List<_i8.Build?>>);
+        returnValue: _i20.Future<List<_i8.Build?>>.value(<_i8.Build?>[]),
+      ) as _i20.Future<List<_i8.Build?>>);
 
   @override
-  _i21.Future<_i8.Build> rescheduleBuild({
+  _i20.Future<_i8.Build> rescheduleBuild({
     required String? builderName,
-    required _i43.BuildPushMessage? buildPushMessage,
+    required _i41.BuildPushMessage? buildPushMessage,
     required int? rescheduleAttempt,
   }) =>
       (super.noSuchMethod(
@@ -7140,7 +6646,7 @@
             #rescheduleAttempt: rescheduleAttempt,
           },
         ),
-        returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+        returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
           this,
           Invocation.method(
             #rescheduleBuild,
@@ -7152,27 +6658,27 @@
             },
           ),
         )),
-      ) as _i21.Future<_i8.Build>);
+      ) as _i20.Future<_i8.Build>);
 
   @override
-  _i21.Future<_i8.Build> reschedulePresubmitBuildUsingCheckRunEvent(_i48.CheckRunEvent? checkRunEvent) =>
+  _i20.Future<_i8.Build> reschedulePresubmitBuildUsingCheckRunEvent(_i43.CheckRunEvent? checkRunEvent) =>
       (super.noSuchMethod(
         Invocation.method(
           #reschedulePresubmitBuildUsingCheckRunEvent,
           [checkRunEvent],
         ),
-        returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+        returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
           this,
           Invocation.method(
             #reschedulePresubmitBuildUsingCheckRunEvent,
             [checkRunEvent],
           ),
         )),
-      ) as _i21.Future<_i8.Build>);
+      ) as _i20.Future<_i8.Build>);
 
   @override
   List<String>? extractPrefixedLabels(
-    List<_i14.IssueLabel>? issueLabels,
+    List<_i13.IssueLabel>? issueLabels,
     String? prefix,
   ) =>
       (super.noSuchMethod(Invocation.method(
@@ -7184,11 +6690,11 @@
       )) as List<String>?);
 
   @override
-  _i21.Future<_i8.Build> reschedulePostsubmitBuildUsingCheckRunEvent(
-    _i48.CheckRunEvent? checkRunEvent, {
-    required _i36.Commit? commit,
-    required _i37.Task? task,
-    required _i47.Target? target,
+  _i20.Future<_i8.Build> reschedulePostsubmitBuildUsingCheckRunEvent(
+    _i43.CheckRunEvent? checkRunEvent, {
+    required _i34.Commit? commit,
+    required _i35.Task? task,
+    required _i42.Target? target,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -7200,7 +6706,7 @@
             #target: target,
           },
         ),
-        returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+        returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
           this,
           Invocation.method(
             #reschedulePostsubmitBuildUsingCheckRunEvent,
@@ -7212,10 +6718,10 @@
             },
           ),
         )),
-      ) as _i21.Future<_i8.Build>);
+      ) as _i20.Future<_i8.Build>);
 
   @override
-  _i21.Future<_i8.Build> getBuildById(
+  _i20.Future<_i8.Build> getBuildById(
     String? id, {
     String? fields,
   }) =>
@@ -7225,7 +6731,7 @@
           [id],
           {#fields: fields},
         ),
-        returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+        returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
           this,
           Invocation.method(
             #getBuildById,
@@ -7233,31 +6739,10 @@
             {#fields: fields},
           ),
         )),
-      ) as _i21.Future<_i8.Build>);
+      ) as _i20.Future<_i8.Build>);
 
   @override
-  _i21.Future<_i9.Build> getBuildByIdV2(
-    _i49.Int64? id, {
-    _i9.BuildMask? buildMask,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getBuildByIdV2,
-          [id],
-          {#buildMask: buildMask},
-        ),
-        returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
-          this,
-          Invocation.method(
-            #getBuildByIdV2,
-            [id],
-            {#buildMask: buildMask},
-          ),
-        )),
-      ) as _i21.Future<_i9.Build>);
-
-  @override
-  _i21.Future<Set<String>> getAvailableBuilderSet({
+  _i20.Future<Set<String>> getAvailableBuilderSet({
     String? project = r'flutter',
     String? bucket = r'prod',
   }) =>
@@ -7270,13 +6755,13 @@
             #bucket: bucket,
           },
         ),
-        returnValue: _i21.Future<Set<String>>.value(<String>{}),
-      ) as _i21.Future<Set<String>>);
+        returnValue: _i20.Future<Set<String>>.value(<String>{}),
+      ) as _i20.Future<Set<String>>);
 
   @override
-  _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>> schedulePostsubmitBuilds({
-    required _i36.Commit? commit,
-    required List<_i16.Tuple<_i47.Target, _i37.Task, int>>? toBeScheduled,
+  _i20.Future<List<_i15.Tuple<_i42.Target, _i35.Task, int>>> schedulePostsubmitBuilds({
+    required _i34.Commit? commit,
+    required List<_i15.Tuple<_i42.Target, _i35.Task, int>>? toBeScheduled,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -7287,14 +6772,14 @@
             #toBeScheduled: toBeScheduled,
           },
         ),
-        returnValue: _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>>.value(
-            <_i16.Tuple<_i47.Target, _i37.Task, int>>[]),
-      ) as _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>>);
+        returnValue: _i20.Future<List<_i15.Tuple<_i42.Target, _i35.Task, int>>>.value(
+            <_i15.Tuple<_i42.Target, _i35.Task, int>>[]),
+      ) as _i20.Future<List<_i15.Tuple<_i42.Target, _i35.Task, int>>>);
 
   @override
-  _i21.Future<void> createPostsubmitCheckRun(
-    _i36.Commit? commit,
-    _i47.Target? target,
+  _i20.Future<void> createPostsubmitCheckRun(
+    _i34.Commit? commit,
+    _i42.Target? target,
     Map<String, dynamic>? rawUserData,
   ) =>
       (super.noSuchMethod(
@@ -7306,20 +6791,20 @@
             rawUserData,
           ],
         ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
+        returnValue: _i20.Future<void>.value(),
+        returnValueForMissingStub: _i20.Future<void>.value(),
+      ) as _i20.Future<void>);
 
   @override
-  _i21.Future<bool> checkRerunBuilder({
-    required _i36.Commit? commit,
-    required _i47.Target? target,
-    required _i37.Task? task,
-    required _i10.DatastoreService? datastore,
-    required _i42.Task? taskDocument,
-    required _i16.FirestoreService? firestoreService,
+  _i20.Future<bool> checkRerunBuilder({
+    required _i34.Commit? commit,
+    required _i42.Target? target,
+    required _i35.Task? task,
+    required _i9.DatastoreService? datastore,
+    _i15.FirestoreService? firestoreService,
     Map<String, List<String>>? tags,
     bool? ignoreChecks = false,
+    _i40.Task? taskDocument,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -7330,474 +6815,32 @@
             #target: target,
             #task: task,
             #datastore: datastore,
-            #taskDocument: taskDocument,
             #firestoreService: firestoreService,
             #tags: tags,
             #ignoreChecks: ignoreChecks,
-          },
-        ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
-}
-
-/// A class which mocks [LuciBuildServiceV2].
-///
-/// See the documentation for Mockito's code generation for more information.
-class MockLuciBuildServiceV2 extends _i1.Mock implements _i46.LuciBuildServiceV2 {
-  MockLuciBuildServiceV2() {
-    _i1.throwOnMissingStub(this);
-  }
-
-  @override
-  _i28.BuildBucketV2Client get buildBucketV2Client => (super.noSuchMethod(
-        Invocation.getter(#buildBucketV2Client),
-        returnValue: _FakeBuildBucketV2Client_71(
-          this,
-          Invocation.getter(#buildBucketV2Client),
-        ),
-      ) as _i28.BuildBucketV2Client);
-
-  @override
-  set buildBucketV2Client(_i28.BuildBucketV2Client? _buildBucketV2Client) => super.noSuchMethod(
-        Invocation.setter(
-          #buildBucketV2Client,
-          _buildBucketV2Client,
-        ),
-        returnValueForMissingStub: null,
-      );
-
-  @override
-  _i16.CacheService get cache => (super.noSuchMethod(
-        Invocation.getter(#cache),
-        returnValue: _FakeCacheService_72(
-          this,
-          Invocation.getter(#cache),
-        ),
-      ) as _i16.CacheService);
-
-  @override
-  _i3.Config get config => (super.noSuchMethod(
-        Invocation.getter(#config),
-        returnValue: _FakeConfig_1(
-          this,
-          Invocation.getter(#config),
-        ),
-      ) as _i3.Config);
-
-  @override
-  set config(_i3.Config? _config) => super.noSuchMethod(
-        Invocation.setter(
-          #config,
-          _config,
-        ),
-        returnValueForMissingStub: null,
-      );
-
-  @override
-  _i25.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
-        Invocation.getter(#githubChecksUtil),
-        returnValue: _FakeGithubChecksUtil_40(
-          this,
-          Invocation.getter(#githubChecksUtil),
-        ),
-      ) as _i25.GithubChecksUtil);
-
-  @override
-  set githubChecksUtil(_i25.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
-        Invocation.setter(
-          #githubChecksUtil,
-          _githubChecksUtil,
-        ),
-        returnValueForMissingStub: null,
-      );
-
-  @override
-  _i7.GerritService get gerritService => (super.noSuchMethod(
-        Invocation.getter(#gerritService),
-        returnValue: _FakeGerritService_6(
-          this,
-          Invocation.getter(#gerritService),
-        ),
-      ) as _i7.GerritService);
-
-  @override
-  set gerritService(_i7.GerritService? _gerritService) => super.noSuchMethod(
-        Invocation.setter(
-          #gerritService,
-          _gerritService,
-        ),
-        returnValueForMissingStub: null,
-      );
-
-  @override
-  _i16.PubSub get pubsub => (super.noSuchMethod(
-        Invocation.getter(#pubsub),
-        returnValue: _FakePubSub_73(
-          this,
-          Invocation.getter(#pubsub),
-        ),
-      ) as _i16.PubSub);
-
-  @override
-  _i21.Future<List<List<_i9.BatchRequest_Request>>> shard({
-    required List<_i9.BatchRequest_Request>? requests,
-    required int? maxShardSize,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #shard,
-          [],
-          {
-            #requests: requests,
-            #maxShardSize: maxShardSize,
-          },
-        ),
-        returnValue: _i21.Future<List<List<_i9.BatchRequest_Request>>>.value(<List<_i9.BatchRequest_Request>>[]),
-      ) as _i21.Future<List<List<_i9.BatchRequest_Request>>>);
-
-  @override
-  _i21.Future<Iterable<_i9.Build>> getTryBuilds({
-    required _i14.RepositorySlug? slug,
-    required String? sha,
-    String? builderName,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getTryBuilds,
-          [],
-          {
-            #slug: slug,
-            #sha: sha,
-            #builderName: builderName,
-          },
-        ),
-        returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
-      ) as _i21.Future<Iterable<_i9.Build>>);
-
-  @override
-  _i21.Future<Iterable<_i9.Build>> getTryBuildsByPullRequest({required _i14.PullRequest? pullRequest}) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getTryBuildsByPullRequest,
-          [],
-          {#pullRequest: pullRequest},
-        ),
-        returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
-      ) as _i21.Future<Iterable<_i9.Build>>);
-
-  @override
-  _i21.Future<Iterable<_i9.Build>> getProdBuilds({
-    required _i14.RepositorySlug? slug,
-    required String? commitSha,
-    String? builderName,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getProdBuilds,
-          [],
-          {
-            #slug: slug,
-            #commitSha: commitSha,
-            #builderName: builderName,
-          },
-        ),
-        returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
-      ) as _i21.Future<Iterable<_i9.Build>>);
-
-  @override
-  _i21.Future<Iterable<_i9.Build>> getBuilds({
-    required _i14.RepositorySlug? slug,
-    required String? commitSha,
-    required String? builderName,
-    required String? bucket,
-    required List<_i9.StringPair>? tags,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getBuilds,
-          [],
-          {
-            #slug: slug,
-            #commitSha: commitSha,
-            #builderName: builderName,
-            #bucket: bucket,
-            #tags: tags,
-          },
-        ),
-        returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
-      ) as _i21.Future<Iterable<_i9.Build>>);
-
-  @override
-  _i21.Future<List<_i47.Target>> scheduleTryBuilds({
-    required List<_i47.Target>? targets,
-    required _i14.PullRequest? pullRequest,
-    _i34.CheckSuiteEvent? checkSuiteEvent,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #scheduleTryBuilds,
-          [],
-          {
-            #targets: targets,
-            #pullRequest: pullRequest,
-            #checkSuiteEvent: checkSuiteEvent,
-          },
-        ),
-        returnValue: _i21.Future<List<_i47.Target>>.value(<_i47.Target>[]),
-      ) as _i21.Future<List<_i47.Target>>);
-
-  @override
-  _i21.Future<void> cancelBuilds({
-    required _i14.PullRequest? pullRequest,
-    required String? reason,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #cancelBuilds,
-          [],
-          {
-            #pullRequest: pullRequest,
-            #reason: reason,
-          },
-        ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
-
-  @override
-  _i21.Future<List<_i9.Build?>> failedBuilds({
-    required _i14.PullRequest? pullRequest,
-    required List<_i47.Target>? targets,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #failedBuilds,
-          [],
-          {
-            #pullRequest: pullRequest,
-            #targets: targets,
-          },
-        ),
-        returnValue: _i21.Future<List<_i9.Build?>>.value(<_i9.Build?>[]),
-      ) as _i21.Future<List<_i9.Build?>>);
-
-  @override
-  _i21.Future<_i9.Build> rescheduleBuild({
-    required String? builderName,
-    required _i9.Build? build,
-    required int? rescheduleAttempt,
-    required Map<String, dynamic>? userDataMap,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #rescheduleBuild,
-          [],
-          {
-            #builderName: builderName,
-            #build: build,
-            #rescheduleAttempt: rescheduleAttempt,
-            #userDataMap: userDataMap,
-          },
-        ),
-        returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
-          this,
-          Invocation.method(
-            #rescheduleBuild,
-            [],
-            {
-              #builderName: builderName,
-              #build: build,
-              #rescheduleAttempt: rescheduleAttempt,
-              #userDataMap: userDataMap,
-            },
-          ),
-        )),
-      ) as _i21.Future<_i9.Build>);
-
-  @override
-  _i21.Future<_i9.Build> reschedulePresubmitBuildUsingCheckRunEvent({required _i48.CheckRunEvent? checkRunEvent}) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #reschedulePresubmitBuildUsingCheckRunEvent,
-          [],
-          {#checkRunEvent: checkRunEvent},
-        ),
-        returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
-          this,
-          Invocation.method(
-            #reschedulePresubmitBuildUsingCheckRunEvent,
-            [],
-            {#checkRunEvent: checkRunEvent},
-          ),
-        )),
-      ) as _i21.Future<_i9.Build>);
-
-  @override
-  List<String>? extractPrefixedLabels({
-    List<_i14.IssueLabel>? issueLabels,
-    required String? prefix,
-  }) =>
-      (super.noSuchMethod(Invocation.method(
-        #extractPrefixedLabels,
-        [],
-        {
-          #issueLabels: issueLabels,
-          #prefix: prefix,
-        },
-      )) as List<String>?);
-
-  @override
-  _i21.Future<_i9.Build> reschedulePostsubmitBuildUsingCheckRunEvent(
-    _i48.CheckRunEvent? checkRunEvent, {
-    required _i36.Commit? commit,
-    required _i37.Task? task,
-    required _i47.Target? target,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #reschedulePostsubmitBuildUsingCheckRunEvent,
-          [checkRunEvent],
-          {
-            #commit: commit,
-            #task: task,
-            #target: target,
-          },
-        ),
-        returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
-          this,
-          Invocation.method(
-            #reschedulePostsubmitBuildUsingCheckRunEvent,
-            [checkRunEvent],
-            {
-              #commit: commit,
-              #task: task,
-              #target: target,
-            },
-          ),
-        )),
-      ) as _i21.Future<_i9.Build>);
-
-  @override
-  _i21.Future<_i9.Build> getBuildById(
-    _i49.Int64? id, {
-    _i9.BuildMask? buildMask,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getBuildById,
-          [id],
-          {#buildMask: buildMask},
-        ),
-        returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
-          this,
-          Invocation.method(
-            #getBuildById,
-            [id],
-            {#buildMask: buildMask},
-          ),
-        )),
-      ) as _i21.Future<_i9.Build>);
-
-  @override
-  _i21.Future<Set<String>> getAvailableBuilderSet({
-    String? project = r'flutter',
-    String? bucket = r'prod',
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #getAvailableBuilderSet,
-          [],
-          {
-            #project: project,
-            #bucket: bucket,
-          },
-        ),
-        returnValue: _i21.Future<Set<String>>.value(<String>{}),
-      ) as _i21.Future<Set<String>>);
-
-  @override
-  _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>> schedulePostsubmitBuilds({
-    required _i36.Commit? commit,
-    required List<_i16.Tuple<_i47.Target, _i37.Task, int>>? toBeScheduled,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #schedulePostsubmitBuilds,
-          [],
-          {
-            #commit: commit,
-            #toBeScheduled: toBeScheduled,
-          },
-        ),
-        returnValue: _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>>.value(
-            <_i16.Tuple<_i47.Target, _i37.Task, int>>[]),
-      ) as _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>>);
-
-  @override
-  _i21.Future<void> createPostsubmitCheckRun(
-    _i36.Commit? commit,
-    _i47.Target? target,
-    Map<String, dynamic>? rawUserData,
-  ) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #createPostsubmitCheckRun,
-          [
-            commit,
-            target,
-            rawUserData,
-          ],
-        ),
-        returnValue: _i21.Future<void>.value(),
-        returnValueForMissingStub: _i21.Future<void>.value(),
-      ) as _i21.Future<void>);
-
-  @override
-  _i21.Future<bool> checkRerunBuilder({
-    required _i36.Commit? commit,
-    required _i47.Target? target,
-    required _i37.Task? task,
-    required _i10.DatastoreService? datastore,
-    required _i42.Task? taskDocument,
-    required _i16.FirestoreService? firestoreService,
-    List<_i9.StringPair>? tags,
-    bool? ignoreChecks = false,
-  }) =>
-      (super.noSuchMethod(
-        Invocation.method(
-          #checkRerunBuilder,
-          [],
-          {
-            #commit: commit,
-            #target: target,
-            #task: task,
-            #datastore: datastore,
             #taskDocument: taskDocument,
-            #firestoreService: firestoreService,
-            #tags: tags,
-            #ignoreChecks: ignoreChecks,
           },
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 }
 
 /// A class which mocks [ProcessManager].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockProcessManager extends _i1.Mock implements _i50.ProcessManager {
+class MockProcessManager extends _i1.Mock implements _i44.ProcessManager {
   MockProcessManager() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i21.Future<_i26.Process> start(
+  _i20.Future<_i25.Process> start(
     List<Object>? command, {
     String? workingDirectory,
     Map<String, String>? environment,
     bool? includeParentEnvironment = true,
     bool? runInShell = false,
-    _i26.ProcessStartMode? mode = _i26.ProcessStartMode.normal,
+    _i25.ProcessStartMode? mode = _i25.ProcessStartMode.normal,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -7811,7 +6854,7 @@
             #mode: mode,
           },
         ),
-        returnValue: _i21.Future<_i26.Process>.value(_FakeProcess_74(
+        returnValue: _i20.Future<_i25.Process>.value(_FakeProcess_69(
           this,
           Invocation.method(
             #start,
@@ -7825,17 +6868,17 @@
             },
           ),
         )),
-      ) as _i21.Future<_i26.Process>);
+      ) as _i20.Future<_i25.Process>);
 
   @override
-  _i21.Future<_i26.ProcessResult> run(
+  _i20.Future<_i25.ProcessResult> run(
     List<Object>? command, {
     String? workingDirectory,
     Map<String, String>? environment,
     bool? includeParentEnvironment = true,
     bool? runInShell = false,
-    _i27.Encoding? stdoutEncoding = const _i26.SystemEncoding(),
-    _i27.Encoding? stderrEncoding = const _i26.SystemEncoding(),
+    _i26.Encoding? stdoutEncoding = const _i25.SystemEncoding(),
+    _i26.Encoding? stderrEncoding = const _i25.SystemEncoding(),
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -7850,7 +6893,7 @@
             #stderrEncoding: stderrEncoding,
           },
         ),
-        returnValue: _i21.Future<_i26.ProcessResult>.value(_i32.dummyValue<_i26.ProcessResult>(
+        returnValue: _i20.Future<_i25.ProcessResult>.value(_i30.dummyValue<_i25.ProcessResult>(
           this,
           Invocation.method(
             #run,
@@ -7865,17 +6908,17 @@
             },
           ),
         )),
-      ) as _i21.Future<_i26.ProcessResult>);
+      ) as _i20.Future<_i25.ProcessResult>);
 
   @override
-  _i26.ProcessResult runSync(
+  _i25.ProcessResult runSync(
     List<Object>? command, {
     String? workingDirectory,
     Map<String, String>? environment,
     bool? includeParentEnvironment = true,
     bool? runInShell = false,
-    _i27.Encoding? stdoutEncoding = const _i26.SystemEncoding(),
-    _i27.Encoding? stderrEncoding = const _i26.SystemEncoding(),
+    _i26.Encoding? stdoutEncoding = const _i25.SystemEncoding(),
+    _i26.Encoding? stderrEncoding = const _i25.SystemEncoding(),
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -7890,7 +6933,7 @@
             #stderrEncoding: stderrEncoding,
           },
         ),
-        returnValue: _i32.dummyValue<_i26.ProcessResult>(
+        returnValue: _i30.dummyValue<_i25.ProcessResult>(
           this,
           Invocation.method(
             #runSync,
@@ -7905,7 +6948,7 @@
             },
           ),
         ),
-      ) as _i26.ProcessResult);
+      ) as _i25.ProcessResult);
 
   @override
   bool canRun(
@@ -7924,7 +6967,7 @@
   @override
   bool killPid(
     int? pid, [
-    _i26.ProcessSignal? signal = _i26.ProcessSignal.sigterm,
+    _i25.ProcessSignal? signal = _i25.ProcessSignal.sigterm,
   ]) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -7941,23 +6984,23 @@
 /// A class which mocks [PullRequestsService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockPullRequestsService extends _i1.Mock implements _i14.PullRequestsService {
+class MockPullRequestsService extends _i1.Mock implements _i13.PullRequestsService {
   MockPullRequestsService() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i14.GitHub get github => (super.noSuchMethod(
+  _i13.GitHub get github => (super.noSuchMethod(
         Invocation.getter(#github),
-        returnValue: _FakeGitHub_20(
+        returnValue: _FakeGitHub_16(
           this,
           Invocation.getter(#github),
         ),
-      ) as _i14.GitHub);
+      ) as _i13.GitHub);
 
   @override
-  _i21.Stream<_i14.PullRequest> list(
-    _i14.RepositorySlug? slug, {
+  _i20.Stream<_i13.PullRequest> list(
+    _i13.RepositorySlug? slug, {
     int? pages,
     String? base,
     String? direction = r'desc',
@@ -7978,12 +7021,12 @@
             #state: state,
           },
         ),
-        returnValue: _i21.Stream<_i14.PullRequest>.empty(),
-      ) as _i21.Stream<_i14.PullRequest>);
+        returnValue: _i20.Stream<_i13.PullRequest>.empty(),
+      ) as _i20.Stream<_i13.PullRequest>);
 
   @override
-  _i21.Future<_i14.PullRequest> get(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.PullRequest> get(
+    _i13.RepositorySlug? slug,
     int? number,
   ) =>
       (super.noSuchMethod(
@@ -7994,7 +7037,7 @@
             number,
           ],
         ),
-        returnValue: _i21.Future<_i14.PullRequest>.value(_FakePullRequest_45(
+        returnValue: _i20.Future<_i13.PullRequest>.value(_FakePullRequest_41(
           this,
           Invocation.method(
             #get,
@@ -8004,12 +7047,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.PullRequest>);
+      ) as _i20.Future<_i13.PullRequest>);
 
   @override
-  _i21.Future<_i14.PullRequest> create(
-    _i14.RepositorySlug? slug,
-    _i14.CreatePullRequest? request,
+  _i20.Future<_i13.PullRequest> create(
+    _i13.RepositorySlug? slug,
+    _i13.CreatePullRequest? request,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -8019,7 +7062,7 @@
             request,
           ],
         ),
-        returnValue: _i21.Future<_i14.PullRequest>.value(_FakePullRequest_45(
+        returnValue: _i20.Future<_i13.PullRequest>.value(_FakePullRequest_41(
           this,
           Invocation.method(
             #create,
@@ -8029,11 +7072,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.PullRequest>);
+      ) as _i20.Future<_i13.PullRequest>);
 
   @override
-  _i21.Future<_i14.PullRequest> edit(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.PullRequest> edit(
+    _i13.RepositorySlug? slug,
     int? number, {
     String? title,
     String? body,
@@ -8054,7 +7097,7 @@
             #base: base,
           },
         ),
-        returnValue: _i21.Future<_i14.PullRequest>.value(_FakePullRequest_45(
+        returnValue: _i20.Future<_i13.PullRequest>.value(_FakePullRequest_41(
           this,
           Invocation.method(
             #edit,
@@ -8070,11 +7113,11 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.PullRequest>);
+      ) as _i20.Future<_i13.PullRequest>);
 
   @override
-  _i21.Stream<_i14.RepositoryCommit> listCommits(
-    _i14.RepositorySlug? slug,
+  _i20.Stream<_i13.RepositoryCommit> listCommits(
+    _i13.RepositorySlug? slug,
     int? number,
   ) =>
       (super.noSuchMethod(
@@ -8085,12 +7128,12 @@
             number,
           ],
         ),
-        returnValue: _i21.Stream<_i14.RepositoryCommit>.empty(),
-      ) as _i21.Stream<_i14.RepositoryCommit>);
+        returnValue: _i20.Stream<_i13.RepositoryCommit>.empty(),
+      ) as _i20.Stream<_i13.RepositoryCommit>);
 
   @override
-  _i21.Stream<_i14.PullRequestFile> listFiles(
-    _i14.RepositorySlug? slug,
+  _i20.Stream<_i13.PullRequestFile> listFiles(
+    _i13.RepositorySlug? slug,
     int? number,
   ) =>
       (super.noSuchMethod(
@@ -8101,12 +7144,12 @@
             number,
           ],
         ),
-        returnValue: _i21.Stream<_i14.PullRequestFile>.empty(),
-      ) as _i21.Stream<_i14.PullRequestFile>);
+        returnValue: _i20.Stream<_i13.PullRequestFile>.empty(),
+      ) as _i20.Stream<_i13.PullRequestFile>);
 
   @override
-  _i21.Stream<_i14.PullRequestReview> listReviews(
-    _i14.RepositorySlug? slug,
+  _i20.Stream<_i13.PullRequestReview> listReviews(
+    _i13.RepositorySlug? slug,
     int? number,
   ) =>
       (super.noSuchMethod(
@@ -8117,12 +7160,12 @@
             number,
           ],
         ),
-        returnValue: _i21.Stream<_i14.PullRequestReview>.empty(),
-      ) as _i21.Stream<_i14.PullRequestReview>);
+        returnValue: _i20.Stream<_i13.PullRequestReview>.empty(),
+      ) as _i20.Stream<_i13.PullRequestReview>);
 
   @override
-  _i21.Future<bool> isMerged(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> isMerged(
+    _i13.RepositorySlug? slug,
     int? number,
   ) =>
       (super.noSuchMethod(
@@ -8133,15 +7176,15 @@
             number,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<_i14.PullRequestMerge> merge(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.PullRequestMerge> merge(
+    _i13.RepositorySlug? slug,
     int? number, {
     String? message,
-    _i14.MergeMethod? mergeMethod = _i14.MergeMethod.merge,
+    _i13.MergeMethod? mergeMethod = _i13.MergeMethod.merge,
     String? requestSha,
   }) =>
       (super.noSuchMethod(
@@ -8157,7 +7200,7 @@
             #requestSha: requestSha,
           },
         ),
-        returnValue: _i21.Future<_i14.PullRequestMerge>.value(_FakePullRequestMerge_75(
+        returnValue: _i20.Future<_i13.PullRequestMerge>.value(_FakePullRequestMerge_70(
           this,
           Invocation.method(
             #merge,
@@ -8172,11 +7215,11 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.PullRequestMerge>);
+      ) as _i20.Future<_i13.PullRequestMerge>);
 
   @override
-  _i21.Stream<_i14.PullRequestComment> listCommentsByPullRequest(
-    _i14.RepositorySlug? slug,
+  _i20.Stream<_i13.PullRequestComment> listCommentsByPullRequest(
+    _i13.RepositorySlug? slug,
     int? number,
   ) =>
       (super.noSuchMethod(
@@ -8187,23 +7230,23 @@
             number,
           ],
         ),
-        returnValue: _i21.Stream<_i14.PullRequestComment>.empty(),
-      ) as _i21.Stream<_i14.PullRequestComment>);
+        returnValue: _i20.Stream<_i13.PullRequestComment>.empty(),
+      ) as _i20.Stream<_i13.PullRequestComment>);
 
   @override
-  _i21.Stream<_i14.PullRequestComment> listComments(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.PullRequestComment> listComments(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listComments,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.PullRequestComment>.empty(),
-      ) as _i21.Stream<_i14.PullRequestComment>);
+        returnValue: _i20.Stream<_i13.PullRequestComment>.empty(),
+      ) as _i20.Stream<_i13.PullRequestComment>);
 
   @override
-  _i21.Future<_i14.PullRequestComment> createComment(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.PullRequestComment> createComment(
+    _i13.RepositorySlug? slug,
     int? number,
-    _i14.CreatePullRequestComment? comment,
+    _i13.CreatePullRequestComment? comment,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -8214,7 +7257,7 @@
             comment,
           ],
         ),
-        returnValue: _i21.Future<_i14.PullRequestComment>.value(_FakePullRequestComment_76(
+        returnValue: _i20.Future<_i13.PullRequestComment>.value(_FakePullRequestComment_71(
           this,
           Invocation.method(
             #createComment,
@@ -8225,12 +7268,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.PullRequestComment>);
+      ) as _i20.Future<_i13.PullRequestComment>);
 
   @override
-  _i21.Future<_i14.PullRequestReview> createReview(
-    _i14.RepositorySlug? slug,
-    _i14.CreatePullRequestReview? review,
+  _i20.Future<_i13.PullRequestReview> createReview(
+    _i13.RepositorySlug? slug,
+    _i13.CreatePullRequestReview? review,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -8240,7 +7283,7 @@
             review,
           ],
         ),
-        returnValue: _i21.Future<_i14.PullRequestReview>.value(_FakePullRequestReview_77(
+        returnValue: _i20.Future<_i13.PullRequestReview>.value(_FakePullRequestReview_72(
           this,
           Invocation.method(
             #createReview,
@@ -8250,28 +7293,28 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.PullRequestReview>);
+      ) as _i20.Future<_i13.PullRequestReview>);
 }
 
 /// A class which mocks [RepositoriesService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockRepositoriesService extends _i1.Mock implements _i14.RepositoriesService {
+class MockRepositoriesService extends _i1.Mock implements _i13.RepositoriesService {
   MockRepositoriesService() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i14.GitHub get github => (super.noSuchMethod(
+  _i13.GitHub get github => (super.noSuchMethod(
         Invocation.getter(#github),
-        returnValue: _FakeGitHub_20(
+        returnValue: _FakeGitHub_16(
           this,
           Invocation.getter(#github),
         ),
-      ) as _i14.GitHub);
+      ) as _i13.GitHub);
 
   @override
-  _i21.Stream<_i14.Repository> listRepositories({
+  _i20.Stream<_i13.Repository> listRepositories({
     String? type = r'owner',
     String? sort = r'full_name',
     String? direction = r'asc',
@@ -8286,11 +7329,11 @@
             #direction: direction,
           },
         ),
-        returnValue: _i21.Stream<_i14.Repository>.empty(),
-      ) as _i21.Stream<_i14.Repository>);
+        returnValue: _i20.Stream<_i13.Repository>.empty(),
+      ) as _i20.Stream<_i13.Repository>);
 
   @override
-  _i21.Stream<_i14.Repository> listUserRepositories(
+  _i20.Stream<_i13.Repository> listUserRepositories(
     String? user, {
     String? type = r'owner',
     String? sort = r'full_name',
@@ -8306,11 +7349,11 @@
             #direction: direction,
           },
         ),
-        returnValue: _i21.Stream<_i14.Repository>.empty(),
-      ) as _i21.Stream<_i14.Repository>);
+        returnValue: _i20.Stream<_i13.Repository>.empty(),
+      ) as _i20.Stream<_i13.Repository>);
 
   @override
-  _i21.Stream<_i14.Repository> listOrganizationRepositories(
+  _i20.Stream<_i13.Repository> listOrganizationRepositories(
     String? org, {
     String? type = r'all',
   }) =>
@@ -8320,11 +7363,11 @@
           [org],
           {#type: type},
         ),
-        returnValue: _i21.Stream<_i14.Repository>.empty(),
-      ) as _i21.Stream<_i14.Repository>);
+        returnValue: _i20.Stream<_i13.Repository>.empty(),
+      ) as _i20.Stream<_i13.Repository>);
 
   @override
-  _i21.Stream<_i14.Repository> listPublicRepositories({
+  _i20.Stream<_i13.Repository> listPublicRepositories({
     int? limit = 50,
     DateTime? since,
   }) =>
@@ -8337,12 +7380,12 @@
             #since: since,
           },
         ),
-        returnValue: _i21.Stream<_i14.Repository>.empty(),
-      ) as _i21.Stream<_i14.Repository>);
+        returnValue: _i20.Stream<_i13.Repository>.empty(),
+      ) as _i20.Stream<_i13.Repository>);
 
   @override
-  _i21.Future<_i14.Repository> createRepository(
-    _i14.CreateRepository? repository, {
+  _i20.Future<_i13.Repository> createRepository(
+    _i13.CreateRepository? repository, {
     String? org,
   }) =>
       (super.noSuchMethod(
@@ -8351,7 +7394,7 @@
           [repository],
           {#org: org},
         ),
-        returnValue: _i21.Future<_i14.Repository>.value(_FakeRepository_78(
+        returnValue: _i20.Future<_i13.Repository>.value(_FakeRepository_73(
           this,
           Invocation.method(
             #createRepository,
@@ -8359,50 +7402,50 @@
             {#org: org},
           ),
         )),
-      ) as _i21.Future<_i14.Repository>);
+      ) as _i20.Future<_i13.Repository>);
 
   @override
-  _i21.Future<_i14.LicenseDetails> getLicense(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<_i13.LicenseDetails> getLicense(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #getLicense,
           [slug],
         ),
-        returnValue: _i21.Future<_i14.LicenseDetails>.value(_FakeLicenseDetails_79(
+        returnValue: _i20.Future<_i13.LicenseDetails>.value(_FakeLicenseDetails_74(
           this,
           Invocation.method(
             #getLicense,
             [slug],
           ),
         )),
-      ) as _i21.Future<_i14.LicenseDetails>);
+      ) as _i20.Future<_i13.LicenseDetails>);
 
   @override
-  _i21.Future<_i14.Repository> getRepository(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<_i13.Repository> getRepository(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #getRepository,
           [slug],
         ),
-        returnValue: _i21.Future<_i14.Repository>.value(_FakeRepository_78(
+        returnValue: _i20.Future<_i13.Repository>.value(_FakeRepository_73(
           this,
           Invocation.method(
             #getRepository,
             [slug],
           ),
         )),
-      ) as _i21.Future<_i14.Repository>);
+      ) as _i20.Future<_i13.Repository>);
 
   @override
-  _i21.Stream<_i14.Repository> getRepositories(List<_i14.RepositorySlug>? slugs) => (super.noSuchMethod(
+  _i20.Stream<_i13.Repository> getRepositories(List<_i13.RepositorySlug>? slugs) => (super.noSuchMethod(
         Invocation.method(
           #getRepositories,
           [slugs],
         ),
-        returnValue: _i21.Stream<_i14.Repository>.empty(),
-      ) as _i21.Stream<_i14.Repository>);
+        returnValue: _i20.Stream<_i13.Repository>.empty(),
+      ) as _i20.Stream<_i13.Repository>);
 
   @override
-  _i21.Future<_i14.Repository> editRepository(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<_i13.Repository> editRepository(
+    _i13.RepositorySlug? slug, {
     String? name,
     String? description,
     String? homepage,
@@ -8425,7 +7468,7 @@
             #hasDownloads: hasDownloads,
           },
         ),
-        returnValue: _i21.Future<_i14.Repository>.value(_FakeRepository_78(
+        returnValue: _i20.Future<_i13.Repository>.value(_FakeRepository_73(
           this,
           Invocation.method(
             #editRepository,
@@ -8441,20 +7484,20 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.Repository>);
+      ) as _i20.Future<_i13.Repository>);
 
   @override
-  _i21.Future<bool> deleteRepository(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<bool> deleteRepository(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #deleteRepository,
           [slug],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.Contributor> listContributors(
-    _i14.RepositorySlug? slug, {
+  _i20.Stream<_i13.Contributor> listContributors(
+    _i13.RepositorySlug? slug, {
     bool? anon = false,
   }) =>
       (super.noSuchMethod(
@@ -8463,36 +7506,36 @@
           [slug],
           {#anon: anon},
         ),
-        returnValue: _i21.Stream<_i14.Contributor>.empty(),
-      ) as _i21.Stream<_i14.Contributor>);
+        returnValue: _i20.Stream<_i13.Contributor>.empty(),
+      ) as _i20.Stream<_i13.Contributor>);
 
   @override
-  _i21.Stream<_i14.Team> listTeams(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.Team> listTeams(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listTeams,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.Team>.empty(),
-      ) as _i21.Stream<_i14.Team>);
+        returnValue: _i20.Stream<_i13.Team>.empty(),
+      ) as _i20.Stream<_i13.Team>);
 
   @override
-  _i21.Future<_i14.LanguageBreakdown> listLanguages(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<_i13.LanguageBreakdown> listLanguages(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listLanguages,
           [slug],
         ),
-        returnValue: _i21.Future<_i14.LanguageBreakdown>.value(_FakeLanguageBreakdown_80(
+        returnValue: _i20.Future<_i13.LanguageBreakdown>.value(_FakeLanguageBreakdown_75(
           this,
           Invocation.method(
             #listLanguages,
             [slug],
           ),
         )),
-      ) as _i21.Future<_i14.LanguageBreakdown>);
+      ) as _i20.Future<_i13.LanguageBreakdown>);
 
   @override
-  _i21.Stream<_i14.Tag> listTags(
-    _i14.RepositorySlug? slug, {
+  _i20.Stream<_i13.Tag> listTags(
+    _i13.RepositorySlug? slug, {
     int? page = 1,
     int? pages,
     int? perPage = 30,
@@ -8507,21 +7550,21 @@
             #perPage: perPage,
           },
         ),
-        returnValue: _i21.Stream<_i14.Tag>.empty(),
-      ) as _i21.Stream<_i14.Tag>);
+        returnValue: _i20.Stream<_i13.Tag>.empty(),
+      ) as _i20.Stream<_i13.Tag>);
 
   @override
-  _i21.Stream<_i14.Branch> listBranches(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.Branch> listBranches(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listBranches,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.Branch>.empty(),
-      ) as _i21.Stream<_i14.Branch>);
+        returnValue: _i20.Stream<_i13.Branch>.empty(),
+      ) as _i20.Stream<_i13.Branch>);
 
   @override
-  _i21.Future<_i14.Branch> getBranch(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.Branch> getBranch(
+    _i13.RepositorySlug? slug,
     String? branch,
   ) =>
       (super.noSuchMethod(
@@ -8532,7 +7575,7 @@
             branch,
           ],
         ),
-        returnValue: _i21.Future<_i14.Branch>.value(_FakeBranch_81(
+        returnValue: _i20.Future<_i13.Branch>.value(_FakeBranch_76(
           this,
           Invocation.method(
             #getBranch,
@@ -8542,20 +7585,20 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.Branch>);
+      ) as _i20.Future<_i13.Branch>);
 
   @override
-  _i21.Stream<_i14.Collaborator> listCollaborators(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.Collaborator> listCollaborators(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listCollaborators,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.Collaborator>.empty(),
-      ) as _i21.Stream<_i14.Collaborator>);
+        returnValue: _i20.Stream<_i13.Collaborator>.empty(),
+      ) as _i20.Stream<_i13.Collaborator>);
 
   @override
-  _i21.Future<bool> isCollaborator(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> isCollaborator(
+    _i13.RepositorySlug? slug,
     String? user,
   ) =>
       (super.noSuchMethod(
@@ -8566,12 +7609,12 @@
             user,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<bool> addCollaborator(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> addCollaborator(
+    _i13.RepositorySlug? slug,
     String? user,
   ) =>
       (super.noSuchMethod(
@@ -8582,12 +7625,12 @@
             user,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<bool> removeCollaborator(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> removeCollaborator(
+    _i13.RepositorySlug? slug,
     String? user,
   ) =>
       (super.noSuchMethod(
@@ -8598,13 +7641,13 @@
             user,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.CommitComment> listSingleCommitComments(
-    _i14.RepositorySlug? slug,
-    _i14.RepositoryCommit? commit,
+  _i20.Stream<_i13.CommitComment> listSingleCommitComments(
+    _i13.RepositorySlug? slug,
+    _i13.RepositoryCommit? commit,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -8614,22 +7657,22 @@
             commit,
           ],
         ),
-        returnValue: _i21.Stream<_i14.CommitComment>.empty(),
-      ) as _i21.Stream<_i14.CommitComment>);
+        returnValue: _i20.Stream<_i13.CommitComment>.empty(),
+      ) as _i20.Stream<_i13.CommitComment>);
 
   @override
-  _i21.Stream<_i14.CommitComment> listCommitComments(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.CommitComment> listCommitComments(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listCommitComments,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.CommitComment>.empty(),
-      ) as _i21.Stream<_i14.CommitComment>);
+        returnValue: _i20.Stream<_i13.CommitComment>.empty(),
+      ) as _i20.Stream<_i13.CommitComment>);
 
   @override
-  _i21.Future<_i14.CommitComment> createCommitComment(
-    _i14.RepositorySlug? slug,
-    _i14.RepositoryCommit? commit, {
+  _i20.Future<_i13.CommitComment> createCommitComment(
+    _i13.RepositorySlug? slug,
+    _i13.RepositoryCommit? commit, {
     required String? body,
     String? path,
     int? position,
@@ -8649,7 +7692,7 @@
             #line: line,
           },
         ),
-        returnValue: _i21.Future<_i14.CommitComment>.value(_FakeCommitComment_82(
+        returnValue: _i20.Future<_i13.CommitComment>.value(_FakeCommitComment_77(
           this,
           Invocation.method(
             #createCommitComment,
@@ -8665,11 +7708,11 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.CommitComment>);
+      ) as _i20.Future<_i13.CommitComment>);
 
   @override
-  _i21.Future<_i14.CommitComment> getCommitComment(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<_i13.CommitComment> getCommitComment(
+    _i13.RepositorySlug? slug, {
     required int? id,
   }) =>
       (super.noSuchMethod(
@@ -8678,7 +7721,7 @@
           [slug],
           {#id: id},
         ),
-        returnValue: _i21.Future<_i14.CommitComment>.value(_FakeCommitComment_82(
+        returnValue: _i20.Future<_i13.CommitComment>.value(_FakeCommitComment_77(
           this,
           Invocation.method(
             #getCommitComment,
@@ -8686,11 +7729,11 @@
             {#id: id},
           ),
         )),
-      ) as _i21.Future<_i14.CommitComment>);
+      ) as _i20.Future<_i13.CommitComment>);
 
   @override
-  _i21.Future<_i14.CommitComment> updateCommitComment(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<_i13.CommitComment> updateCommitComment(
+    _i13.RepositorySlug? slug, {
     required int? id,
     required String? body,
   }) =>
@@ -8703,7 +7746,7 @@
             #body: body,
           },
         ),
-        returnValue: _i21.Future<_i14.CommitComment>.value(_FakeCommitComment_82(
+        returnValue: _i20.Future<_i13.CommitComment>.value(_FakeCommitComment_77(
           this,
           Invocation.method(
             #updateCommitComment,
@@ -8714,11 +7757,11 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.CommitComment>);
+      ) as _i20.Future<_i13.CommitComment>);
 
   @override
-  _i21.Future<bool> deleteCommitComment(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<bool> deleteCommitComment(
+    _i13.RepositorySlug? slug, {
     required int? id,
   }) =>
       (super.noSuchMethod(
@@ -8727,12 +7770,12 @@
           [slug],
           {#id: id},
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.RepositoryCommit> listCommits(
-    _i14.RepositorySlug? slug, {
+  _i20.Stream<_i13.RepositoryCommit> listCommits(
+    _i13.RepositorySlug? slug, {
     String? sha,
     String? path,
     String? author,
@@ -8753,12 +7796,12 @@
             #until: until,
           },
         ),
-        returnValue: _i21.Stream<_i14.RepositoryCommit>.empty(),
-      ) as _i21.Stream<_i14.RepositoryCommit>);
+        returnValue: _i20.Stream<_i13.RepositoryCommit>.empty(),
+      ) as _i20.Stream<_i13.RepositoryCommit>);
 
   @override
-  _i21.Future<_i14.RepositoryCommit> getCommit(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.RepositoryCommit> getCommit(
+    _i13.RepositorySlug? slug,
     String? sha,
   ) =>
       (super.noSuchMethod(
@@ -8769,7 +7812,7 @@
             sha,
           ],
         ),
-        returnValue: _i21.Future<_i14.RepositoryCommit>.value(_FakeRepositoryCommit_83(
+        returnValue: _i20.Future<_i13.RepositoryCommit>.value(_FakeRepositoryCommit_78(
           this,
           Invocation.method(
             #getCommit,
@@ -8779,11 +7822,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.RepositoryCommit>);
+      ) as _i20.Future<_i13.RepositoryCommit>);
 
   @override
-  _i21.Future<String> getCommitDiff(
-    _i14.RepositorySlug? slug,
+  _i20.Future<String> getCommitDiff(
+    _i13.RepositorySlug? slug,
     String? sha,
   ) =>
       (super.noSuchMethod(
@@ -8794,7 +7837,7 @@
             sha,
           ],
         ),
-        returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+        returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
           this,
           Invocation.method(
             #getCommitDiff,
@@ -8804,11 +7847,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<String>);
+      ) as _i20.Future<String>);
 
   @override
-  _i21.Future<_i14.GitHubComparison> compareCommits(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.GitHubComparison> compareCommits(
+    _i13.RepositorySlug? slug,
     String? refBase,
     String? refHead,
   ) =>
@@ -8821,7 +7864,7 @@
             refHead,
           ],
         ),
-        returnValue: _i21.Future<_i14.GitHubComparison>.value(_FakeGitHubComparison_84(
+        returnValue: _i20.Future<_i13.GitHubComparison>.value(_FakeGitHubComparison_79(
           this,
           Invocation.method(
             #compareCommits,
@@ -8832,11 +7875,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.GitHubComparison>);
+      ) as _i20.Future<_i13.GitHubComparison>);
 
   @override
-  _i21.Future<_i14.GitHubFile> getReadme(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<_i13.GitHubFile> getReadme(
+    _i13.RepositorySlug? slug, {
     String? ref,
   }) =>
       (super.noSuchMethod(
@@ -8845,7 +7888,7 @@
           [slug],
           {#ref: ref},
         ),
-        returnValue: _i21.Future<_i14.GitHubFile>.value(_FakeGitHubFile_85(
+        returnValue: _i20.Future<_i13.GitHubFile>.value(_FakeGitHubFile_80(
           this,
           Invocation.method(
             #getReadme,
@@ -8853,11 +7896,11 @@
             {#ref: ref},
           ),
         )),
-      ) as _i21.Future<_i14.GitHubFile>);
+      ) as _i20.Future<_i13.GitHubFile>);
 
   @override
-  _i21.Future<_i14.RepositoryContents> getContents(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.RepositoryContents> getContents(
+    _i13.RepositorySlug? slug,
     String? path, {
     String? ref,
   }) =>
@@ -8870,7 +7913,7 @@
           ],
           {#ref: ref},
         ),
-        returnValue: _i21.Future<_i14.RepositoryContents>.value(_FakeRepositoryContents_86(
+        returnValue: _i20.Future<_i13.RepositoryContents>.value(_FakeRepositoryContents_81(
           this,
           Invocation.method(
             #getContents,
@@ -8881,12 +7924,12 @@
             {#ref: ref},
           ),
         )),
-      ) as _i21.Future<_i14.RepositoryContents>);
+      ) as _i20.Future<_i13.RepositoryContents>);
 
   @override
-  _i21.Future<_i14.ContentCreation> createFile(
-    _i14.RepositorySlug? slug,
-    _i14.CreateFile? file,
+  _i20.Future<_i13.ContentCreation> createFile(
+    _i13.RepositorySlug? slug,
+    _i13.CreateFile? file,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -8896,7 +7939,7 @@
             file,
           ],
         ),
-        returnValue: _i21.Future<_i14.ContentCreation>.value(_FakeContentCreation_87(
+        returnValue: _i20.Future<_i13.ContentCreation>.value(_FakeContentCreation_82(
           this,
           Invocation.method(
             #createFile,
@@ -8906,11 +7949,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.ContentCreation>);
+      ) as _i20.Future<_i13.ContentCreation>);
 
   @override
-  _i21.Future<_i14.ContentCreation> updateFile(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.ContentCreation> updateFile(
+    _i13.RepositorySlug? slug,
     String? path,
     String? message,
     String? content,
@@ -8929,7 +7972,7 @@
           ],
           {#branch: branch},
         ),
-        returnValue: _i21.Future<_i14.ContentCreation>.value(_FakeContentCreation_87(
+        returnValue: _i20.Future<_i13.ContentCreation>.value(_FakeContentCreation_82(
           this,
           Invocation.method(
             #updateFile,
@@ -8943,11 +7986,11 @@
             {#branch: branch},
           ),
         )),
-      ) as _i21.Future<_i14.ContentCreation>);
+      ) as _i20.Future<_i13.ContentCreation>);
 
   @override
-  _i21.Future<_i14.ContentCreation> deleteFile(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.ContentCreation> deleteFile(
+    _i13.RepositorySlug? slug,
     String? path,
     String? message,
     String? sha,
@@ -8964,7 +8007,7 @@
             branch,
           ],
         ),
-        returnValue: _i21.Future<_i14.ContentCreation>.value(_FakeContentCreation_87(
+        returnValue: _i20.Future<_i13.ContentCreation>.value(_FakeContentCreation_82(
           this,
           Invocation.method(
             #deleteFile,
@@ -8977,11 +8020,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.ContentCreation>);
+      ) as _i20.Future<_i13.ContentCreation>);
 
   @override
-  _i21.Future<String?> getArchiveLink(
-    _i14.RepositorySlug? slug,
+  _i20.Future<String?> getArchiveLink(
+    _i13.RepositorySlug? slug,
     String? ref, {
     String? format = r'tarball',
   }) =>
@@ -8994,22 +8037,22 @@
           ],
           {#format: format},
         ),
-        returnValue: _i21.Future<String?>.value(),
-      ) as _i21.Future<String?>);
+        returnValue: _i20.Future<String?>.value(),
+      ) as _i20.Future<String?>);
 
   @override
-  _i21.Stream<_i14.Repository> listForks(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.Repository> listForks(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listForks,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.Repository>.empty(),
-      ) as _i21.Stream<_i14.Repository>);
+        returnValue: _i20.Stream<_i13.Repository>.empty(),
+      ) as _i20.Stream<_i13.Repository>);
 
   @override
-  _i21.Future<_i14.Repository> createFork(
-    _i14.RepositorySlug? slug, [
-    _i14.CreateFork? fork,
+  _i20.Future<_i13.Repository> createFork(
+    _i13.RepositorySlug? slug, [
+    _i13.CreateFork? fork,
   ]) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -9019,7 +8062,7 @@
             fork,
           ],
         ),
-        returnValue: _i21.Future<_i14.Repository>.value(_FakeRepository_78(
+        returnValue: _i20.Future<_i13.Repository>.value(_FakeRepository_73(
           this,
           Invocation.method(
             #createFork,
@@ -9029,20 +8072,20 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.Repository>);
+      ) as _i20.Future<_i13.Repository>);
 
   @override
-  _i21.Stream<_i14.Hook> listHooks(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.Hook> listHooks(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listHooks,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.Hook>.empty(),
-      ) as _i21.Stream<_i14.Hook>);
+        returnValue: _i20.Stream<_i13.Hook>.empty(),
+      ) as _i20.Stream<_i13.Hook>);
 
   @override
-  _i21.Future<_i14.Hook> getHook(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.Hook> getHook(
+    _i13.RepositorySlug? slug,
     int? id,
   ) =>
       (super.noSuchMethod(
@@ -9053,7 +8096,7 @@
             id,
           ],
         ),
-        returnValue: _i21.Future<_i14.Hook>.value(_FakeHook_88(
+        returnValue: _i20.Future<_i13.Hook>.value(_FakeHook_83(
           this,
           Invocation.method(
             #getHook,
@@ -9063,12 +8106,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.Hook>);
+      ) as _i20.Future<_i13.Hook>);
 
   @override
-  _i21.Future<_i14.Hook> createHook(
-    _i14.RepositorySlug? slug,
-    _i14.CreateHook? hook,
+  _i20.Future<_i13.Hook> createHook(
+    _i13.RepositorySlug? slug,
+    _i13.CreateHook? hook,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -9078,7 +8121,7 @@
             hook,
           ],
         ),
-        returnValue: _i21.Future<_i14.Hook>.value(_FakeHook_88(
+        returnValue: _i20.Future<_i13.Hook>.value(_FakeHook_83(
           this,
           Invocation.method(
             #createHook,
@@ -9088,12 +8131,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.Hook>);
+      ) as _i20.Future<_i13.Hook>);
 
   @override
-  _i21.Future<_i14.Hook> editHook(
-    _i14.RepositorySlug? slug,
-    _i14.Hook? hookToEdit, {
+  _i20.Future<_i13.Hook> editHook(
+    _i13.RepositorySlug? slug,
+    _i13.Hook? hookToEdit, {
     String? configUrl,
     String? configContentType,
     String? configSecret,
@@ -9121,7 +8164,7 @@
             #active: active,
           },
         ),
-        returnValue: _i21.Future<_i14.Hook>.value(_FakeHook_88(
+        returnValue: _i20.Future<_i13.Hook>.value(_FakeHook_83(
           this,
           Invocation.method(
             #editHook,
@@ -9141,11 +8184,11 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.Hook>);
+      ) as _i20.Future<_i13.Hook>);
 
   @override
-  _i21.Future<bool> testPushHook(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> testPushHook(
+    _i13.RepositorySlug? slug,
     int? id,
   ) =>
       (super.noSuchMethod(
@@ -9156,12 +8199,12 @@
             id,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<bool> pingHook(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> pingHook(
+    _i13.RepositorySlug? slug,
     int? id,
   ) =>
       (super.noSuchMethod(
@@ -9172,12 +8215,12 @@
             id,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<bool> deleteHook(
-    _i14.RepositorySlug? slug,
+  _i20.Future<bool> deleteHook(
+    _i13.RepositorySlug? slug,
     int? id,
   ) =>
       (super.noSuchMethod(
@@ -9188,21 +8231,21 @@
             id,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.PublicKey> listDeployKeys(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.PublicKey> listDeployKeys(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listDeployKeys,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.PublicKey>.empty(),
-      ) as _i21.Stream<_i14.PublicKey>);
+        returnValue: _i20.Stream<_i13.PublicKey>.empty(),
+      ) as _i20.Stream<_i13.PublicKey>);
 
   @override
-  _i21.Future<_i14.PublicKey> getDeployKey(
-    _i14.RepositorySlug? slug, {
+  _i20.Future<_i13.PublicKey> getDeployKey(
+    _i13.RepositorySlug? slug, {
     required int? id,
   }) =>
       (super.noSuchMethod(
@@ -9211,7 +8254,7 @@
           [slug],
           {#id: id},
         ),
-        returnValue: _i21.Future<_i14.PublicKey>.value(_FakePublicKey_89(
+        returnValue: _i20.Future<_i13.PublicKey>.value(_FakePublicKey_84(
           this,
           Invocation.method(
             #getDeployKey,
@@ -9219,12 +8262,12 @@
             {#id: id},
           ),
         )),
-      ) as _i21.Future<_i14.PublicKey>);
+      ) as _i20.Future<_i13.PublicKey>);
 
   @override
-  _i21.Future<_i14.PublicKey> createDeployKey(
-    _i14.RepositorySlug? slug,
-    _i14.CreatePublicKey? key,
+  _i20.Future<_i13.PublicKey> createDeployKey(
+    _i13.RepositorySlug? slug,
+    _i13.CreatePublicKey? key,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -9234,7 +8277,7 @@
             key,
           ],
         ),
-        returnValue: _i21.Future<_i14.PublicKey>.value(_FakePublicKey_89(
+        returnValue: _i20.Future<_i13.PublicKey>.value(_FakePublicKey_84(
           this,
           Invocation.method(
             #createDeployKey,
@@ -9244,12 +8287,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.PublicKey>);
+      ) as _i20.Future<_i13.PublicKey>);
 
   @override
-  _i21.Future<bool> deleteDeployKey({
-    required _i14.RepositorySlug? slug,
-    required _i14.PublicKey? key,
+  _i20.Future<bool> deleteDeployKey({
+    required _i13.RepositorySlug? slug,
+    required _i13.PublicKey? key,
   }) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -9260,13 +8303,13 @@
             #key: key,
           },
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<_i14.RepositoryCommit> merge(
-    _i14.RepositorySlug? slug,
-    _i14.CreateMerge? merge,
+  _i20.Future<_i13.RepositoryCommit> merge(
+    _i13.RepositorySlug? slug,
+    _i13.CreateMerge? merge,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -9276,7 +8319,7 @@
             merge,
           ],
         ),
-        returnValue: _i21.Future<_i14.RepositoryCommit>.value(_FakeRepositoryCommit_83(
+        returnValue: _i20.Future<_i13.RepositoryCommit>.value(_FakeRepositoryCommit_78(
           this,
           Invocation.method(
             #merge,
@@ -9286,74 +8329,74 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.RepositoryCommit>);
+      ) as _i20.Future<_i13.RepositoryCommit>);
 
   @override
-  _i21.Future<_i14.RepositoryPages> getPagesInfo(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<_i13.RepositoryPages> getPagesInfo(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #getPagesInfo,
           [slug],
         ),
-        returnValue: _i21.Future<_i14.RepositoryPages>.value(_FakeRepositoryPages_90(
+        returnValue: _i20.Future<_i13.RepositoryPages>.value(_FakeRepositoryPages_85(
           this,
           Invocation.method(
             #getPagesInfo,
             [slug],
           ),
         )),
-      ) as _i21.Future<_i14.RepositoryPages>);
+      ) as _i20.Future<_i13.RepositoryPages>);
 
   @override
-  _i21.Stream<_i14.PageBuild> listPagesBuilds(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.PageBuild> listPagesBuilds(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listPagesBuilds,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.PageBuild>.empty(),
-      ) as _i21.Stream<_i14.PageBuild>);
+        returnValue: _i20.Stream<_i13.PageBuild>.empty(),
+      ) as _i20.Stream<_i13.PageBuild>);
 
   @override
-  _i21.Future<_i14.PageBuild> getLatestPagesBuild(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<_i13.PageBuild> getLatestPagesBuild(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #getLatestPagesBuild,
           [slug],
         ),
-        returnValue: _i21.Future<_i14.PageBuild>.value(_FakePageBuild_91(
+        returnValue: _i20.Future<_i13.PageBuild>.value(_FakePageBuild_86(
           this,
           Invocation.method(
             #getLatestPagesBuild,
             [slug],
           ),
         )),
-      ) as _i21.Future<_i14.PageBuild>);
+      ) as _i20.Future<_i13.PageBuild>);
 
   @override
-  _i21.Stream<_i14.Release> listReleases(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.Release> listReleases(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listReleases,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.Release>.empty(),
-      ) as _i21.Stream<_i14.Release>);
+        returnValue: _i20.Stream<_i13.Release>.empty(),
+      ) as _i20.Stream<_i13.Release>);
 
   @override
-  _i21.Future<_i14.Release> getLatestRelease(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<_i13.Release> getLatestRelease(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #getLatestRelease,
           [slug],
         ),
-        returnValue: _i21.Future<_i14.Release>.value(_FakeRelease_92(
+        returnValue: _i20.Future<_i13.Release>.value(_FakeRelease_87(
           this,
           Invocation.method(
             #getLatestRelease,
             [slug],
           ),
         )),
-      ) as _i21.Future<_i14.Release>);
+      ) as _i20.Future<_i13.Release>);
 
   @override
-  _i21.Future<_i14.Release> getReleaseById(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.Release> getReleaseById(
+    _i13.RepositorySlug? slug,
     int? id,
   ) =>
       (super.noSuchMethod(
@@ -9364,7 +8407,7 @@
             id,
           ],
         ),
-        returnValue: _i21.Future<_i14.Release>.value(_FakeRelease_92(
+        returnValue: _i20.Future<_i13.Release>.value(_FakeRelease_87(
           this,
           Invocation.method(
             #getReleaseById,
@@ -9374,11 +8417,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.Release>);
+      ) as _i20.Future<_i13.Release>);
 
   @override
-  _i21.Future<_i14.Release> getReleaseByTagName(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.Release> getReleaseByTagName(
+    _i13.RepositorySlug? slug,
     String? tagName,
   ) =>
       (super.noSuchMethod(
@@ -9389,7 +8432,7 @@
             tagName,
           ],
         ),
-        returnValue: _i21.Future<_i14.Release>.value(_FakeRelease_92(
+        returnValue: _i20.Future<_i13.Release>.value(_FakeRelease_87(
           this,
           Invocation.method(
             #getReleaseByTagName,
@@ -9399,12 +8442,12 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.Release>);
+      ) as _i20.Future<_i13.Release>);
 
   @override
-  _i21.Future<_i14.Release> createRelease(
-    _i14.RepositorySlug? slug,
-    _i14.CreateRelease? createRelease, {
+  _i20.Future<_i13.Release> createRelease(
+    _i13.RepositorySlug? slug,
+    _i13.CreateRelease? createRelease, {
     bool? getIfExists = true,
   }) =>
       (super.noSuchMethod(
@@ -9416,7 +8459,7 @@
           ],
           {#getIfExists: getIfExists},
         ),
-        returnValue: _i21.Future<_i14.Release>.value(_FakeRelease_92(
+        returnValue: _i20.Future<_i13.Release>.value(_FakeRelease_87(
           this,
           Invocation.method(
             #createRelease,
@@ -9427,12 +8470,12 @@
             {#getIfExists: getIfExists},
           ),
         )),
-      ) as _i21.Future<_i14.Release>);
+      ) as _i20.Future<_i13.Release>);
 
   @override
-  _i21.Future<_i14.Release> editRelease(
-    _i14.RepositorySlug? slug,
-    _i14.Release? releaseToEdit, {
+  _i20.Future<_i13.Release> editRelease(
+    _i13.RepositorySlug? slug,
+    _i13.Release? releaseToEdit, {
     String? tagName,
     String? targetCommitish,
     String? name,
@@ -9456,7 +8499,7 @@
             #preRelease: preRelease,
           },
         ),
-        returnValue: _i21.Future<_i14.Release>.value(_FakeRelease_92(
+        returnValue: _i20.Future<_i13.Release>.value(_FakeRelease_87(
           this,
           Invocation.method(
             #editRelease,
@@ -9474,12 +8517,12 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.Release>);
+      ) as _i20.Future<_i13.Release>);
 
   @override
-  _i21.Future<bool> deleteRelease(
-    _i14.RepositorySlug? slug,
-    _i14.Release? release,
+  _i20.Future<bool> deleteRelease(
+    _i13.RepositorySlug? slug,
+    _i13.Release? release,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -9489,13 +8532,13 @@
             release,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.ReleaseAsset> listReleaseAssets(
-    _i14.RepositorySlug? slug,
-    _i14.Release? release,
+  _i20.Stream<_i13.ReleaseAsset> listReleaseAssets(
+    _i13.RepositorySlug? slug,
+    _i13.Release? release,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -9505,13 +8548,13 @@
             release,
           ],
         ),
-        returnValue: _i21.Stream<_i14.ReleaseAsset>.empty(),
-      ) as _i21.Stream<_i14.ReleaseAsset>);
+        returnValue: _i20.Stream<_i13.ReleaseAsset>.empty(),
+      ) as _i20.Stream<_i13.ReleaseAsset>);
 
   @override
-  _i21.Future<_i14.ReleaseAsset> getReleaseAsset(
-    _i14.RepositorySlug? slug,
-    _i14.Release? release, {
+  _i20.Future<_i13.ReleaseAsset> getReleaseAsset(
+    _i13.RepositorySlug? slug,
+    _i13.Release? release, {
     required int? assetId,
   }) =>
       (super.noSuchMethod(
@@ -9523,7 +8566,7 @@
           ],
           {#assetId: assetId},
         ),
-        returnValue: _i21.Future<_i14.ReleaseAsset>.value(_FakeReleaseAsset_93(
+        returnValue: _i20.Future<_i13.ReleaseAsset>.value(_FakeReleaseAsset_88(
           this,
           Invocation.method(
             #getReleaseAsset,
@@ -9534,12 +8577,12 @@
             {#assetId: assetId},
           ),
         )),
-      ) as _i21.Future<_i14.ReleaseAsset>);
+      ) as _i20.Future<_i13.ReleaseAsset>);
 
   @override
-  _i21.Future<_i14.ReleaseAsset> editReleaseAsset(
-    _i14.RepositorySlug? slug,
-    _i14.ReleaseAsset? assetToEdit, {
+  _i20.Future<_i13.ReleaseAsset> editReleaseAsset(
+    _i13.RepositorySlug? slug,
+    _i13.ReleaseAsset? assetToEdit, {
     String? name,
     String? label,
   }) =>
@@ -9555,7 +8598,7 @@
             #label: label,
           },
         ),
-        returnValue: _i21.Future<_i14.ReleaseAsset>.value(_FakeReleaseAsset_93(
+        returnValue: _i20.Future<_i13.ReleaseAsset>.value(_FakeReleaseAsset_88(
           this,
           Invocation.method(
             #editReleaseAsset,
@@ -9569,12 +8612,12 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.ReleaseAsset>);
+      ) as _i20.Future<_i13.ReleaseAsset>);
 
   @override
-  _i21.Future<bool> deleteReleaseAsset(
-    _i14.RepositorySlug? slug,
-    _i14.ReleaseAsset? asset,
+  _i20.Future<bool> deleteReleaseAsset(
+    _i13.RepositorySlug? slug,
+    _i13.ReleaseAsset? asset,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -9584,13 +8627,13 @@
             asset,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<List<_i14.ReleaseAsset>> uploadReleaseAssets(
-    _i14.Release? release,
-    Iterable<_i14.CreateReleaseAsset>? createReleaseAssets,
+  _i20.Future<List<_i13.ReleaseAsset>> uploadReleaseAssets(
+    _i13.Release? release,
+    Iterable<_i13.CreateReleaseAsset>? createReleaseAssets,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -9600,63 +8643,63 @@
             createReleaseAssets,
           ],
         ),
-        returnValue: _i21.Future<List<_i14.ReleaseAsset>>.value(<_i14.ReleaseAsset>[]),
-      ) as _i21.Future<List<_i14.ReleaseAsset>>);
+        returnValue: _i20.Future<List<_i13.ReleaseAsset>>.value(<_i13.ReleaseAsset>[]),
+      ) as _i20.Future<List<_i13.ReleaseAsset>>);
 
   @override
-  _i21.Future<List<_i14.ContributorStatistics>> listContributorStats(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<List<_i13.ContributorStatistics>> listContributorStats(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listContributorStats,
           [slug],
         ),
-        returnValue: _i21.Future<List<_i14.ContributorStatistics>>.value(<_i14.ContributorStatistics>[]),
-      ) as _i21.Future<List<_i14.ContributorStatistics>>);
+        returnValue: _i20.Future<List<_i13.ContributorStatistics>>.value(<_i13.ContributorStatistics>[]),
+      ) as _i20.Future<List<_i13.ContributorStatistics>>);
 
   @override
-  _i21.Stream<_i14.YearCommitCountWeek> listCommitActivity(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.YearCommitCountWeek> listCommitActivity(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listCommitActivity,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.YearCommitCountWeek>.empty(),
-      ) as _i21.Stream<_i14.YearCommitCountWeek>);
+        returnValue: _i20.Stream<_i13.YearCommitCountWeek>.empty(),
+      ) as _i20.Stream<_i13.YearCommitCountWeek>);
 
   @override
-  _i21.Stream<_i14.WeeklyChangesCount> listCodeFrequency(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.WeeklyChangesCount> listCodeFrequency(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listCodeFrequency,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.WeeklyChangesCount>.empty(),
-      ) as _i21.Stream<_i14.WeeklyChangesCount>);
+        returnValue: _i20.Stream<_i13.WeeklyChangesCount>.empty(),
+      ) as _i20.Stream<_i13.WeeklyChangesCount>);
 
   @override
-  _i21.Future<_i14.ContributorParticipation> getParticipation(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Future<_i13.ContributorParticipation> getParticipation(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #getParticipation,
           [slug],
         ),
-        returnValue: _i21.Future<_i14.ContributorParticipation>.value(_FakeContributorParticipation_94(
+        returnValue: _i20.Future<_i13.ContributorParticipation>.value(_FakeContributorParticipation_89(
           this,
           Invocation.method(
             #getParticipation,
             [slug],
           ),
         )),
-      ) as _i21.Future<_i14.ContributorParticipation>);
+      ) as _i20.Future<_i13.ContributorParticipation>);
 
   @override
-  _i21.Stream<_i14.PunchcardEntry> listPunchcard(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+  _i20.Stream<_i13.PunchcardEntry> listPunchcard(_i13.RepositorySlug? slug) => (super.noSuchMethod(
         Invocation.method(
           #listPunchcard,
           [slug],
         ),
-        returnValue: _i21.Stream<_i14.PunchcardEntry>.empty(),
-      ) as _i21.Stream<_i14.PunchcardEntry>);
+        returnValue: _i20.Stream<_i13.PunchcardEntry>.empty(),
+      ) as _i20.Stream<_i13.PunchcardEntry>);
 
   @override
-  _i21.Stream<_i14.RepositoryStatus> listStatuses(
-    _i14.RepositorySlug? slug,
+  _i20.Stream<_i13.RepositoryStatus> listStatuses(
+    _i13.RepositorySlug? slug,
     String? ref,
   ) =>
       (super.noSuchMethod(
@@ -9667,14 +8710,14 @@
             ref,
           ],
         ),
-        returnValue: _i21.Stream<_i14.RepositoryStatus>.empty(),
-      ) as _i21.Stream<_i14.RepositoryStatus>);
+        returnValue: _i20.Stream<_i13.RepositoryStatus>.empty(),
+      ) as _i20.Stream<_i13.RepositoryStatus>);
 
   @override
-  _i21.Future<_i14.RepositoryStatus> createStatus(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.RepositoryStatus> createStatus(
+    _i13.RepositorySlug? slug,
     String? ref,
-    _i14.CreateStatus? request,
+    _i13.CreateStatus? request,
   ) =>
       (super.noSuchMethod(
         Invocation.method(
@@ -9685,7 +8728,7 @@
             request,
           ],
         ),
-        returnValue: _i21.Future<_i14.RepositoryStatus>.value(_FakeRepositoryStatus_95(
+        returnValue: _i20.Future<_i13.RepositoryStatus>.value(_FakeRepositoryStatus_90(
           this,
           Invocation.method(
             #createStatus,
@@ -9696,11 +8739,11 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.RepositoryStatus>);
+      ) as _i20.Future<_i13.RepositoryStatus>);
 
   @override
-  _i21.Future<_i14.CombinedRepositoryStatus> getCombinedStatus(
-    _i14.RepositorySlug? slug,
+  _i20.Future<_i13.CombinedRepositoryStatus> getCombinedStatus(
+    _i13.RepositorySlug? slug,
     String? ref,
   ) =>
       (super.noSuchMethod(
@@ -9711,7 +8754,7 @@
             ref,
           ],
         ),
-        returnValue: _i21.Future<_i14.CombinedRepositoryStatus>.value(_FakeCombinedRepositoryStatus_96(
+        returnValue: _i20.Future<_i13.CombinedRepositoryStatus>.value(_FakeCombinedRepositoryStatus_91(
           this,
           Invocation.method(
             #getCombinedStatus,
@@ -9721,43 +8764,43 @@
             ],
           ),
         )),
-      ) as _i21.Future<_i14.CombinedRepositoryStatus>);
+      ) as _i20.Future<_i13.CombinedRepositoryStatus>);
 
   @override
-  _i21.Future<_i14.ReleaseNotes> generateReleaseNotes(_i14.CreateReleaseNotes? crn) => (super.noSuchMethod(
+  _i20.Future<_i13.ReleaseNotes> generateReleaseNotes(_i13.CreateReleaseNotes? crn) => (super.noSuchMethod(
         Invocation.method(
           #generateReleaseNotes,
           [crn],
         ),
-        returnValue: _i21.Future<_i14.ReleaseNotes>.value(_FakeReleaseNotes_97(
+        returnValue: _i20.Future<_i13.ReleaseNotes>.value(_FakeReleaseNotes_92(
           this,
           Invocation.method(
             #generateReleaseNotes,
             [crn],
           ),
         )),
-      ) as _i21.Future<_i14.ReleaseNotes>);
+      ) as _i20.Future<_i13.ReleaseNotes>);
 }
 
 /// A class which mocks [SearchService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockSearchService extends _i1.Mock implements _i14.SearchService {
+class MockSearchService extends _i1.Mock implements _i13.SearchService {
   MockSearchService() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i14.GitHub get github => (super.noSuchMethod(
+  _i13.GitHub get github => (super.noSuchMethod(
         Invocation.getter(#github),
-        returnValue: _FakeGitHub_20(
+        returnValue: _FakeGitHub_16(
           this,
           Invocation.getter(#github),
         ),
-      ) as _i14.GitHub);
+      ) as _i13.GitHub);
 
   @override
-  _i21.Stream<_i14.Repository> repositories(
+  _i20.Stream<_i13.Repository> repositories(
     String? query, {
     String? sort,
     int? pages = 2,
@@ -9771,11 +8814,11 @@
             #pages: pages,
           },
         ),
-        returnValue: _i21.Stream<_i14.Repository>.empty(),
-      ) as _i21.Stream<_i14.Repository>);
+        returnValue: _i20.Stream<_i13.Repository>.empty(),
+      ) as _i20.Stream<_i13.Repository>);
 
   @override
-  _i21.Stream<_i14.CodeSearchResults> code(
+  _i20.Stream<_i13.CodeSearchResults> code(
     String? query, {
     int? pages,
     int? perPage,
@@ -9811,11 +8854,11 @@
             #inPath: inPath,
           },
         ),
-        returnValue: _i21.Stream<_i14.CodeSearchResults>.empty(),
-      ) as _i21.Stream<_i14.CodeSearchResults>);
+        returnValue: _i20.Stream<_i13.CodeSearchResults>.empty(),
+      ) as _i20.Stream<_i13.CodeSearchResults>);
 
   @override
-  _i21.Stream<_i14.Issue> issues(
+  _i20.Stream<_i13.Issue> issues(
     String? query, {
     String? sort,
     int? pages = 2,
@@ -9829,11 +8872,11 @@
             #pages: pages,
           },
         ),
-        returnValue: _i21.Stream<_i14.Issue>.empty(),
-      ) as _i21.Stream<_i14.Issue>);
+        returnValue: _i20.Stream<_i13.Issue>.empty(),
+      ) as _i20.Stream<_i13.Issue>);
 
   @override
-  _i21.Stream<_i14.User> users(
+  _i20.Stream<_i13.User> users(
     String? query, {
     String? sort,
     int? pages = 2,
@@ -9849,8 +8892,8 @@
             #perPage: perPage,
           },
         ),
-        returnValue: _i21.Stream<_i14.User>.empty(),
-      ) as _i21.Stream<_i14.User>);
+        returnValue: _i20.Stream<_i13.User>.empty(),
+      ) as _i20.Stream<_i13.User>);
 }
 
 /// A class which mocks [TabledataResource].
@@ -9862,7 +8905,7 @@
   }
 
   @override
-  _i21.Future<_i6.TableDataInsertAllResponse> insertAll(
+  _i20.Future<_i6.TableDataInsertAllResponse> insertAll(
     _i6.TableDataInsertAllRequest? request,
     String? projectId,
     String? datasetId,
@@ -9880,7 +8923,7 @@
           ],
           {#$fields: $fields},
         ),
-        returnValue: _i21.Future<_i6.TableDataInsertAllResponse>.value(_FakeTableDataInsertAllResponse_98(
+        returnValue: _i20.Future<_i6.TableDataInsertAllResponse>.value(_FakeTableDataInsertAllResponse_93(
           this,
           Invocation.method(
             #insertAll,
@@ -9893,10 +8936,10 @@
             {#$fields: $fields},
           ),
         )),
-      ) as _i21.Future<_i6.TableDataInsertAllResponse>);
+      ) as _i20.Future<_i6.TableDataInsertAllResponse>);
 
   @override
-  _i21.Future<_i6.TableDataList> list(
+  _i20.Future<_i6.TableDataList> list(
     String? projectId,
     String? datasetId,
     String? tableId, {
@@ -9922,7 +8965,7 @@
             #$fields: $fields,
           },
         ),
-        returnValue: _i21.Future<_i6.TableDataList>.value(_FakeTableDataList_99(
+        returnValue: _i20.Future<_i6.TableDataList>.value(_FakeTableDataList_94(
           this,
           Invocation.method(
             #list,
@@ -9940,43 +8983,43 @@
             },
           ),
         )),
-      ) as _i21.Future<_i6.TableDataList>);
+      ) as _i20.Future<_i6.TableDataList>);
 }
 
 /// A class which mocks [UsersService].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockUsersService extends _i1.Mock implements _i14.UsersService {
+class MockUsersService extends _i1.Mock implements _i13.UsersService {
   MockUsersService() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i14.GitHub get github => (super.noSuchMethod(
+  _i13.GitHub get github => (super.noSuchMethod(
         Invocation.getter(#github),
-        returnValue: _FakeGitHub_20(
+        returnValue: _FakeGitHub_16(
           this,
           Invocation.getter(#github),
         ),
-      ) as _i14.GitHub);
+      ) as _i13.GitHub);
 
   @override
-  _i21.Future<_i14.User> getUser(String? name) => (super.noSuchMethod(
+  _i20.Future<_i13.User> getUser(String? name) => (super.noSuchMethod(
         Invocation.method(
           #getUser,
           [name],
         ),
-        returnValue: _i21.Future<_i14.User>.value(_FakeUser_100(
+        returnValue: _i20.Future<_i13.User>.value(_FakeUser_95(
           this,
           Invocation.method(
             #getUser,
             [name],
           ),
         )),
-      ) as _i21.Future<_i14.User>);
+      ) as _i20.Future<_i13.User>);
 
   @override
-  _i21.Future<_i14.CurrentUser> editCurrentUser({
+  _i20.Future<_i13.CurrentUser> editCurrentUser({
     String? name,
     String? email,
     String? blog,
@@ -9999,7 +9042,7 @@
             #bio: bio,
           },
         ),
-        returnValue: _i21.Future<_i14.CurrentUser>.value(_FakeCurrentUser_101(
+        returnValue: _i20.Future<_i13.CurrentUser>.value(_FakeCurrentUser_96(
           this,
           Invocation.method(
             #editCurrentUser,
@@ -10015,10 +9058,10 @@
             },
           ),
         )),
-      ) as _i21.Future<_i14.CurrentUser>);
+      ) as _i20.Future<_i13.CurrentUser>);
 
   @override
-  _i21.Stream<_i14.User> getUsers(
+  _i20.Stream<_i13.User> getUsers(
     List<String>? names, {
     int? pages,
   }) =>
@@ -10028,35 +9071,35 @@
           [names],
           {#pages: pages},
         ),
-        returnValue: _i21.Stream<_i14.User>.empty(),
-      ) as _i21.Stream<_i14.User>);
+        returnValue: _i20.Stream<_i13.User>.empty(),
+      ) as _i20.Stream<_i13.User>);
 
   @override
-  _i21.Future<_i14.CurrentUser> getCurrentUser() => (super.noSuchMethod(
+  _i20.Future<_i13.CurrentUser> getCurrentUser() => (super.noSuchMethod(
         Invocation.method(
           #getCurrentUser,
           [],
         ),
-        returnValue: _i21.Future<_i14.CurrentUser>.value(_FakeCurrentUser_101(
+        returnValue: _i20.Future<_i13.CurrentUser>.value(_FakeCurrentUser_96(
           this,
           Invocation.method(
             #getCurrentUser,
             [],
           ),
         )),
-      ) as _i21.Future<_i14.CurrentUser>);
+      ) as _i20.Future<_i13.CurrentUser>);
 
   @override
-  _i21.Future<bool> isUser(String? name) => (super.noSuchMethod(
+  _i20.Future<bool> isUser(String? name) => (super.noSuchMethod(
         Invocation.method(
           #isUser,
           [name],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.User> listUsers({
+  _i20.Stream<_i13.User> listUsers({
     int? pages,
     int? since,
   }) =>
@@ -10069,56 +9112,56 @@
             #since: since,
           },
         ),
-        returnValue: _i21.Stream<_i14.User>.empty(),
-      ) as _i21.Stream<_i14.User>);
+        returnValue: _i20.Stream<_i13.User>.empty(),
+      ) as _i20.Stream<_i13.User>);
 
   @override
-  _i21.Stream<_i14.UserEmail> listEmails() => (super.noSuchMethod(
+  _i20.Stream<_i13.UserEmail> listEmails() => (super.noSuchMethod(
         Invocation.method(
           #listEmails,
           [],
         ),
-        returnValue: _i21.Stream<_i14.UserEmail>.empty(),
-      ) as _i21.Stream<_i14.UserEmail>);
+        returnValue: _i20.Stream<_i13.UserEmail>.empty(),
+      ) as _i20.Stream<_i13.UserEmail>);
 
   @override
-  _i21.Stream<_i14.UserEmail> addEmails(List<String>? emails) => (super.noSuchMethod(
+  _i20.Stream<_i13.UserEmail> addEmails(List<String>? emails) => (super.noSuchMethod(
         Invocation.method(
           #addEmails,
           [emails],
         ),
-        returnValue: _i21.Stream<_i14.UserEmail>.empty(),
-      ) as _i21.Stream<_i14.UserEmail>);
+        returnValue: _i20.Stream<_i13.UserEmail>.empty(),
+      ) as _i20.Stream<_i13.UserEmail>);
 
   @override
-  _i21.Future<bool> deleteEmails(List<String>? emails) => (super.noSuchMethod(
+  _i20.Future<bool> deleteEmails(List<String>? emails) => (super.noSuchMethod(
         Invocation.method(
           #deleteEmails,
           [emails],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.User> listUserFollowers(String? user) => (super.noSuchMethod(
+  _i20.Stream<_i13.User> listUserFollowers(String? user) => (super.noSuchMethod(
         Invocation.method(
           #listUserFollowers,
           [user],
         ),
-        returnValue: _i21.Stream<_i14.User>.empty(),
-      ) as _i21.Stream<_i14.User>);
+        returnValue: _i20.Stream<_i13.User>.empty(),
+      ) as _i20.Stream<_i13.User>);
 
   @override
-  _i21.Future<bool> isFollowingUser(String? user) => (super.noSuchMethod(
+  _i20.Future<bool> isFollowingUser(String? user) => (super.noSuchMethod(
         Invocation.method(
           #isFollowingUser,
           [user],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<bool> isUserFollowing(
+  _i20.Future<bool> isUserFollowing(
     String? user,
     String? target,
   ) =>
@@ -10130,158 +9173,158 @@
             target,
           ],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<bool> followUser(String? user) => (super.noSuchMethod(
+  _i20.Future<bool> followUser(String? user) => (super.noSuchMethod(
         Invocation.method(
           #followUser,
           [user],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Future<bool> unfollowUser(String? user) => (super.noSuchMethod(
+  _i20.Future<bool> unfollowUser(String? user) => (super.noSuchMethod(
         Invocation.method(
           #unfollowUser,
           [user],
         ),
-        returnValue: _i21.Future<bool>.value(false),
-      ) as _i21.Future<bool>);
+        returnValue: _i20.Future<bool>.value(false),
+      ) as _i20.Future<bool>);
 
   @override
-  _i21.Stream<_i14.User> listCurrentUserFollowers() => (super.noSuchMethod(
+  _i20.Stream<_i13.User> listCurrentUserFollowers() => (super.noSuchMethod(
         Invocation.method(
           #listCurrentUserFollowers,
           [],
         ),
-        returnValue: _i21.Stream<_i14.User>.empty(),
-      ) as _i21.Stream<_i14.User>);
+        returnValue: _i20.Stream<_i13.User>.empty(),
+      ) as _i20.Stream<_i13.User>);
 
   @override
-  _i21.Stream<_i14.User> listCurrentUserFollowing() => (super.noSuchMethod(
+  _i20.Stream<_i13.User> listCurrentUserFollowing() => (super.noSuchMethod(
         Invocation.method(
           #listCurrentUserFollowing,
           [],
         ),
-        returnValue: _i21.Stream<_i14.User>.empty(),
-      ) as _i21.Stream<_i14.User>);
+        returnValue: _i20.Stream<_i13.User>.empty(),
+      ) as _i20.Stream<_i13.User>);
 
   @override
-  _i21.Stream<_i14.PublicKey> listPublicKeys([String? userLogin]) => (super.noSuchMethod(
+  _i20.Stream<_i13.PublicKey> listPublicKeys([String? userLogin]) => (super.noSuchMethod(
         Invocation.method(
           #listPublicKeys,
           [userLogin],
         ),
-        returnValue: _i21.Stream<_i14.PublicKey>.empty(),
-      ) as _i21.Stream<_i14.PublicKey>);
+        returnValue: _i20.Stream<_i13.PublicKey>.empty(),
+      ) as _i20.Stream<_i13.PublicKey>);
 
   @override
-  _i21.Future<_i14.PublicKey> createPublicKey(_i14.CreatePublicKey? key) => (super.noSuchMethod(
+  _i20.Future<_i13.PublicKey> createPublicKey(_i13.CreatePublicKey? key) => (super.noSuchMethod(
         Invocation.method(
           #createPublicKey,
           [key],
         ),
-        returnValue: _i21.Future<_i14.PublicKey>.value(_FakePublicKey_89(
+        returnValue: _i20.Future<_i13.PublicKey>.value(_FakePublicKey_84(
           this,
           Invocation.method(
             #createPublicKey,
             [key],
           ),
         )),
-      ) as _i21.Future<_i14.PublicKey>);
+      ) as _i20.Future<_i13.PublicKey>);
 }
 
 /// A class which mocks [Cache].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockCache extends _i1.Mock implements _i29.Cache<_i40.Uint8List> {
+class MockCache extends _i1.Mock implements _i27.Cache<_i38.Uint8List> {
   MockCache() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i29.Entry<_i40.Uint8List> operator [](String? key) => (super.noSuchMethod(
+  _i27.Entry<_i38.Uint8List> operator [](String? key) => (super.noSuchMethod(
         Invocation.method(
           #[],
           [key],
         ),
-        returnValue: _FakeEntry_102<_i40.Uint8List>(
+        returnValue: _FakeEntry_97<_i38.Uint8List>(
           this,
           Invocation.method(
             #[],
             [key],
           ),
         ),
-      ) as _i29.Entry<_i40.Uint8List>);
+      ) as _i27.Entry<_i38.Uint8List>);
 
   @override
-  _i29.Cache<_i40.Uint8List> withPrefix(String? prefix) => (super.noSuchMethod(
+  _i27.Cache<_i38.Uint8List> withPrefix(String? prefix) => (super.noSuchMethod(
         Invocation.method(
           #withPrefix,
           [prefix],
         ),
-        returnValue: _FakeCache_103<_i40.Uint8List>(
+        returnValue: _FakeCache_98<_i38.Uint8List>(
           this,
           Invocation.method(
             #withPrefix,
             [prefix],
           ),
         ),
-      ) as _i29.Cache<_i40.Uint8List>);
+      ) as _i27.Cache<_i38.Uint8List>);
 
   @override
-  _i29.Cache<S> withCodec<S>(_i27.Codec<S, _i40.Uint8List>? codec) => (super.noSuchMethod(
+  _i27.Cache<S> withCodec<S>(_i26.Codec<S, _i38.Uint8List>? codec) => (super.noSuchMethod(
         Invocation.method(
           #withCodec,
           [codec],
         ),
-        returnValue: _FakeCache_103<S>(
+        returnValue: _FakeCache_98<S>(
           this,
           Invocation.method(
             #withCodec,
             [codec],
           ),
         ),
-      ) as _i29.Cache<S>);
+      ) as _i27.Cache<S>);
 
   @override
-  _i29.Cache<_i40.Uint8List> withTTL(Duration? ttl) => (super.noSuchMethod(
+  _i27.Cache<_i38.Uint8List> withTTL(Duration? ttl) => (super.noSuchMethod(
         Invocation.method(
           #withTTL,
           [ttl],
         ),
-        returnValue: _FakeCache_103<_i40.Uint8List>(
+        returnValue: _FakeCache_98<_i38.Uint8List>(
           this,
           Invocation.method(
             #withTTL,
             [ttl],
           ),
         ),
-      ) as _i29.Cache<_i40.Uint8List>);
+      ) as _i27.Cache<_i38.Uint8List>);
 }
 
 /// A class which mocks [GitHub].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockGitHub extends _i1.Mock implements _i14.GitHub {
+class MockGitHub extends _i1.Mock implements _i13.GitHub {
   MockGitHub() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i14.Authentication get auth => (super.noSuchMethod(
+  _i13.Authentication get auth => (super.noSuchMethod(
         Invocation.getter(#auth),
-        returnValue: _FakeAuthentication_104(
+        returnValue: _FakeAuthentication_99(
           this,
           Invocation.getter(#auth),
         ),
-      ) as _i14.Authentication);
+      ) as _i13.Authentication);
 
   @override
-  set auth(_i14.Authentication? _auth) => super.noSuchMethod(
+  set auth(_i13.Authentication? _auth) => super.noSuchMethod(
         Invocation.setter(
           #auth,
           _auth,
@@ -10292,7 +9335,7 @@
   @override
   String get endpoint => (super.noSuchMethod(
         Invocation.getter(#endpoint),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#endpoint),
         ),
@@ -10301,7 +9344,7 @@
   @override
   String get version => (super.noSuchMethod(
         Invocation.getter(#version),
-        returnValue: _i32.dummyValue<String>(
+        returnValue: _i30.dummyValue<String>(
           this,
           Invocation.getter(#version),
         ),
@@ -10317,130 +9360,130 @@
       ) as _i2.Client);
 
   @override
-  _i14.ActivityService get activity => (super.noSuchMethod(
+  _i13.ActivityService get activity => (super.noSuchMethod(
         Invocation.getter(#activity),
-        returnValue: _FakeActivityService_105(
+        returnValue: _FakeActivityService_100(
           this,
           Invocation.getter(#activity),
         ),
-      ) as _i14.ActivityService);
+      ) as _i13.ActivityService);
 
   @override
-  _i14.AuthorizationsService get authorizations => (super.noSuchMethod(
+  _i13.AuthorizationsService get authorizations => (super.noSuchMethod(
         Invocation.getter(#authorizations),
-        returnValue: _FakeAuthorizationsService_106(
+        returnValue: _FakeAuthorizationsService_101(
           this,
           Invocation.getter(#authorizations),
         ),
-      ) as _i14.AuthorizationsService);
+      ) as _i13.AuthorizationsService);
 
   @override
-  _i14.GistsService get gists => (super.noSuchMethod(
+  _i13.GistsService get gists => (super.noSuchMethod(
         Invocation.getter(#gists),
-        returnValue: _FakeGistsService_107(
+        returnValue: _FakeGistsService_102(
           this,
           Invocation.getter(#gists),
         ),
-      ) as _i14.GistsService);
+      ) as _i13.GistsService);
 
   @override
-  _i14.GitService get git => (super.noSuchMethod(
+  _i13.GitService get git => (super.noSuchMethod(
         Invocation.getter(#git),
-        returnValue: _FakeGitService_108(
+        returnValue: _FakeGitService_103(
           this,
           Invocation.getter(#git),
         ),
-      ) as _i14.GitService);
+      ) as _i13.GitService);
 
   @override
-  _i14.IssuesService get issues => (super.noSuchMethod(
+  _i13.IssuesService get issues => (super.noSuchMethod(
         Invocation.getter(#issues),
-        returnValue: _FakeIssuesService_109(
+        returnValue: _FakeIssuesService_104(
           this,
           Invocation.getter(#issues),
         ),
-      ) as _i14.IssuesService);
+      ) as _i13.IssuesService);
 
   @override
-  _i14.MiscService get misc => (super.noSuchMethod(
+  _i13.MiscService get misc => (super.noSuchMethod(
         Invocation.getter(#misc),
-        returnValue: _FakeMiscService_110(
+        returnValue: _FakeMiscService_105(
           this,
           Invocation.getter(#misc),
         ),
-      ) as _i14.MiscService);
+      ) as _i13.MiscService);
 
   @override
-  _i14.OrganizationsService get organizations => (super.noSuchMethod(
+  _i13.OrganizationsService get organizations => (super.noSuchMethod(
         Invocation.getter(#organizations),
-        returnValue: _FakeOrganizationsService_111(
+        returnValue: _FakeOrganizationsService_106(
           this,
           Invocation.getter(#organizations),
         ),
-      ) as _i14.OrganizationsService);
+      ) as _i13.OrganizationsService);
 
   @override
-  _i14.PullRequestsService get pullRequests => (super.noSuchMethod(
+  _i13.PullRequestsService get pullRequests => (super.noSuchMethod(
         Invocation.getter(#pullRequests),
-        returnValue: _FakePullRequestsService_112(
+        returnValue: _FakePullRequestsService_107(
           this,
           Invocation.getter(#pullRequests),
         ),
-      ) as _i14.PullRequestsService);
+      ) as _i13.PullRequestsService);
 
   @override
-  _i14.RepositoriesService get repositories => (super.noSuchMethod(
+  _i13.RepositoriesService get repositories => (super.noSuchMethod(
         Invocation.getter(#repositories),
-        returnValue: _FakeRepositoriesService_113(
+        returnValue: _FakeRepositoriesService_108(
           this,
           Invocation.getter(#repositories),
         ),
-      ) as _i14.RepositoriesService);
+      ) as _i13.RepositoriesService);
 
   @override
-  _i14.SearchService get search => (super.noSuchMethod(
+  _i13.SearchService get search => (super.noSuchMethod(
         Invocation.getter(#search),
-        returnValue: _FakeSearchService_114(
+        returnValue: _FakeSearchService_109(
           this,
           Invocation.getter(#search),
         ),
-      ) as _i14.SearchService);
+      ) as _i13.SearchService);
 
   @override
-  _i14.UrlShortenerService get urlShortener => (super.noSuchMethod(
+  _i13.UrlShortenerService get urlShortener => (super.noSuchMethod(
         Invocation.getter(#urlShortener),
-        returnValue: _FakeUrlShortenerService_115(
+        returnValue: _FakeUrlShortenerService_110(
           this,
           Invocation.getter(#urlShortener),
         ),
-      ) as _i14.UrlShortenerService);
+      ) as _i13.UrlShortenerService);
 
   @override
-  _i14.UsersService get users => (super.noSuchMethod(
+  _i13.UsersService get users => (super.noSuchMethod(
         Invocation.getter(#users),
-        returnValue: _FakeUsersService_116(
+        returnValue: _FakeUsersService_111(
           this,
           Invocation.getter(#users),
         ),
-      ) as _i14.UsersService);
+      ) as _i13.UsersService);
 
   @override
-  _i14.ChecksService get checks => (super.noSuchMethod(
+  _i13.ChecksService get checks => (super.noSuchMethod(
         Invocation.getter(#checks),
-        returnValue: _FakeChecksService_117(
+        returnValue: _FakeChecksService_112(
           this,
           Invocation.getter(#checks),
         ),
-      ) as _i14.ChecksService);
+      ) as _i13.ChecksService);
 
   @override
-  _i21.Future<T> getJSON<S, T>(
+  _i20.Future<T> getJSON<S, T>(
     String? path, {
     int? statusCode,
     void Function(_i2.Response)? fail,
     Map<String, String>? headers,
     Map<String, String>? params,
-    _i14.JSONConverter<S, T>? convert,
+    _i13.JSONConverter<S, T>? convert,
     String? preview,
   }) =>
       (super.noSuchMethod(
@@ -10456,8 +9499,8 @@
             #preview: preview,
           },
         ),
-        returnValue: _i32.ifNotNull(
-              _i32.dummyValueOrNull<T>(
+        returnValue: _i30.ifNotNull(
+              _i30.dummyValueOrNull<T>(
                 this,
                 Invocation.method(
                   #getJSON,
@@ -10472,9 +9515,9 @@
                   },
                 ),
               ),
-              (T v) => _i21.Future<T>.value(v),
+              (T v) => _i20.Future<T>.value(v),
             ) ??
-            _FakeFuture_27<T>(
+            _FakeFuture_23<T>(
               this,
               Invocation.method(
                 #getJSON,
@@ -10489,16 +9532,16 @@
                 },
               ),
             ),
-      ) as _i21.Future<T>);
+      ) as _i20.Future<T>);
 
   @override
-  _i21.Future<T> postJSON<S, T>(
+  _i20.Future<T> postJSON<S, T>(
     String? path, {
     int? statusCode,
     void Function(_i2.Response)? fail,
     Map<String, String>? headers,
     Map<String, dynamic>? params,
-    _i14.JSONConverter<S, T>? convert,
+    _i13.JSONConverter<S, T>? convert,
     dynamic body,
     String? preview,
   }) =>
@@ -10516,7 +9559,7 @@
             #preview: preview,
           },
         ),
-        returnValue: _i51.postJsonShim<S, T>(
+        returnValue: _i45.postJsonShim<S, T>(
           path,
           statusCode: statusCode,
           fail: fail,
@@ -10526,16 +9569,16 @@
           body: body,
           preview: preview,
         ),
-      ) as _i21.Future<T>);
+      ) as _i20.Future<T>);
 
   @override
-  _i21.Future<T> putJSON<S, T>(
+  _i20.Future<T> putJSON<S, T>(
     String? path, {
     int? statusCode,
     void Function(_i2.Response)? fail,
     Map<String, String>? headers,
     Map<String, dynamic>? params,
-    _i14.JSONConverter<S, T>? convert,
+    _i13.JSONConverter<S, T>? convert,
     dynamic body,
     String? preview,
   }) =>
@@ -10553,8 +9596,8 @@
             #preview: preview,
           },
         ),
-        returnValue: _i32.ifNotNull(
-              _i32.dummyValueOrNull<T>(
+        returnValue: _i30.ifNotNull(
+              _i30.dummyValueOrNull<T>(
                 this,
                 Invocation.method(
                   #putJSON,
@@ -10570,9 +9613,9 @@
                   },
                 ),
               ),
-              (T v) => _i21.Future<T>.value(v),
+              (T v) => _i20.Future<T>.value(v),
             ) ??
-            _FakeFuture_27<T>(
+            _FakeFuture_23<T>(
               this,
               Invocation.method(
                 #putJSON,
@@ -10588,16 +9631,16 @@
                 },
               ),
             ),
-      ) as _i21.Future<T>);
+      ) as _i20.Future<T>);
 
   @override
-  _i21.Future<T> patchJSON<S, T>(
+  _i20.Future<T> patchJSON<S, T>(
     String? path, {
     int? statusCode,
     void Function(_i2.Response)? fail,
     Map<String, String>? headers,
     Map<String, dynamic>? params,
-    _i14.JSONConverter<S, T>? convert,
+    _i13.JSONConverter<S, T>? convert,
     dynamic body,
     String? preview,
   }) =>
@@ -10615,8 +9658,8 @@
             #preview: preview,
           },
         ),
-        returnValue: _i32.ifNotNull(
-              _i32.dummyValueOrNull<T>(
+        returnValue: _i30.ifNotNull(
+              _i30.dummyValueOrNull<T>(
                 this,
                 Invocation.method(
                   #patchJSON,
@@ -10632,9 +9675,9 @@
                   },
                 ),
               ),
-              (T v) => _i21.Future<T>.value(v),
+              (T v) => _i20.Future<T>.value(v),
             ) ??
-            _FakeFuture_27<T>(
+            _FakeFuture_23<T>(
               this,
               Invocation.method(
                 #patchJSON,
@@ -10650,17 +9693,17 @@
                 },
               ),
             ),
-      ) as _i21.Future<T>);
+      ) as _i20.Future<T>);
 
   @override
-  _i21.Future<T> requestJson<S, T>(
+  _i20.Future<T> requestJson<S, T>(
     String? method,
     String? path, {
     int? statusCode,
     void Function(_i2.Response)? fail,
     Map<String, String>? headers,
     Map<String, dynamic>? params,
-    _i14.JSONConverter<S, T?>? convert,
+    _i13.JSONConverter<S, T?>? convert,
     dynamic body,
     String? preview,
   }) =>
@@ -10681,8 +9724,8 @@
             #preview: preview,
           },
         ),
-        returnValue: _i32.ifNotNull(
-              _i32.dummyValueOrNull<T>(
+        returnValue: _i30.ifNotNull(
+              _i30.dummyValueOrNull<T>(
                 this,
                 Invocation.method(
                   #requestJson,
@@ -10701,9 +9744,9 @@
                   },
                 ),
               ),
-              (T v) => _i21.Future<T>.value(v),
+              (T v) => _i20.Future<T>.value(v),
             ) ??
-            _FakeFuture_27<T>(
+            _FakeFuture_23<T>(
               this,
               Invocation.method(
                 #requestJson,
@@ -10722,10 +9765,10 @@
                 },
               ),
             ),
-      ) as _i21.Future<T>);
+      ) as _i20.Future<T>);
 
   @override
-  _i21.Future<_i2.Response> request(
+  _i20.Future<_i2.Response> request(
     String? method,
     String? path, {
     Map<String, String>? headers,
@@ -10751,7 +9794,7 @@
             #preview: preview,
           },
         ),
-        returnValue: _i21.Future<_i2.Response>.value(_FakeResponse_118(
+        returnValue: _i20.Future<_i2.Response>.value(_FakeResponse_113(
           this,
           Invocation.method(
             #request,
@@ -10769,7 +9812,7 @@
             },
           ),
         )),
-      ) as _i21.Future<_i2.Response>);
+      ) as _i20.Future<_i2.Response>);
 
   @override
   Never handleStatusCode(_i2.Response? response) => (super.noSuchMethod(
diff --git a/cron.yaml b/cron.yaml
index bfc4d19..bf1525e 100644
--- a/cron.yaml
+++ b/cron.yaml
@@ -7,10 +7,6 @@
   url: /api/vacuum-github-commits
   schedule: every 6 hours
 
-- description: retrieve missing commits v2
-  url: /api/v2/vacuum-github-commits
-  schedule: every 6 hours
-
 # TODO(keyonghan): will delete if `In Progress` hanging issue is resolved:
 # https://github.com/flutter/flutter/issues/120395#issuecomment-1444810718
 - description: vacuum stale tasks
@@ -21,10 +17,6 @@
   url: /api/scheduler/batch-backfiller
   schedule: every 5 minutes
 
-- description: backfills builds via the build bucket v2 api
-  url: /api/v2/scheduler/batch-backfiller
-  schedule: every 5 minutes
-
 - description: sends build status to GitHub to annotate flutter PRs and commits
   url: /api/push-build-status-to-github?repo=flutter/flutter
   schedule: every 1 minutes