diff --git a/automatic_updates.services.yml b/automatic_updates.services.yml
index ba461c980c55784a45dfbd30f29ef480d33052a7..808ae6e7afc45426707695c27524d97b958027b2 100644
--- a/automatic_updates.services.yml
+++ b/automatic_updates.services.yml
@@ -17,6 +17,7 @@ services:
       - 24
     tags:
       - { name: event_subscriber }
+  Drupal\automatic_updates\Validation\StatusChecker: '@automatic_updates.status_checker'
   automatic_updates.status_check_mailer:
     class: Drupal\automatic_updates\StatusCheckMailer
     arguments:
@@ -39,6 +40,7 @@ services:
       - '@package_manager.failure_marker'
     calls:
       - ['setLogger', ['@logger.channel.automatic_updates']]
+  Drupal\automatic_updates\Updater: '@automatic_updates.updater'
   automatic_updates.cron_updater:
     class: Drupal\automatic_updates\CronUpdater
     arguments:
@@ -60,6 +62,7 @@ services:
       - '@package_manager.failure_marker'
     calls:
       - ['setLogger', ['@logger.channel.automatic_updates']]
+  Drupal\automatic_updates\CronUpdater: '@automatic_updates.cron_updater'
   automatic_updates.requested_update_validator:
     class: Drupal\automatic_updates\Validator\RequestedUpdateValidator
     tags:
@@ -71,10 +74,12 @@ services:
       - '@package_manager.composer_inspector'
     tags:
       - { name: event_subscriber }
+  Drupal\automatic_updates\Validator\StagedProjectsValidator: '@automatic_updates.staged_projects_validator'
   automatic_updates.release_chooser:
     class: Drupal\automatic_updates\ReleaseChooser
     arguments:
       - '@automatic_updates.validator.version_policy'
+  Drupal\automatic_updates\ReleaseChooser: '@automatic_updates.release_chooser'
   automatic_updates.cron_frequency_validator:
     class: Drupal\automatic_updates\Validator\CronFrequencyValidator
     arguments:
@@ -107,6 +112,7 @@ services:
     class: Drupal\automatic_updates\Validator\ScaffoldFilePermissionsValidator
     tags:
       - { name: event_subscriber }
+  Drupal\automatic_updates\Validator\ScaffoldFilePermissionsValidator: '@automatic_updates.validator.scaffold_file_permissions'
   automatic_updates.validator.cron_server:
     class: Drupal\automatic_updates\Validator\CronServerValidator
     arguments:
diff --git a/automatic_updates_extensions/automatic_updates_extensions.services.yml b/automatic_updates_extensions/automatic_updates_extensions.services.yml
index 307e38bd1603b35b52a78d7706bea11c4c1044aa..7c40972b389edbc61da18b55a87995917ae82ea3 100644
--- a/automatic_updates_extensions/automatic_updates_extensions.services.yml
+++ b/automatic_updates_extensions/automatic_updates_extensions.services.yml
@@ -16,6 +16,7 @@ services:
       - '@datetime.time'
       - '@PhpTuf\ComposerStager\Infrastructure\Factory\Path\PathFactoryInterface'
       - '@package_manager.failure_marker'
+  Drupal\automatic_updates_extensions\ExtensionUpdater: '@automatic_updates_extensions.updater'
   automatic_updates_extensions.validator.target_release:
     class: Drupal\automatic_updates_extensions\Validator\UpdateReleaseValidator
     tags:
diff --git a/automatic_updates_extensions/tests/src/Functional/UpdaterFormTestBase.php b/automatic_updates_extensions/tests/src/Functional/UpdaterFormTestBase.php
index 061781f28838e376a78a05a1b3641b819bc4b804..42e14f315844cebe9fa81cb78cd7013121fafcfa 100644
--- a/automatic_updates_extensions/tests/src/Functional/UpdaterFormTestBase.php
+++ b/automatic_updates_extensions/tests/src/Functional/UpdaterFormTestBase.php
@@ -5,6 +5,7 @@ declare(strict_types = 1);
 namespace Drupal\Tests\automatic_updates_extensions\Functional;
 
 use Drupal\fixture_manipulator\ActiveFixtureManipulator;
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\automatic_updates_extensions\Traits\FormTestTrait;
 use Drupal\Tests\automatic_updates\Functional\UpdaterFormTestBase as UpdaterFormFunctionalTestBase;
 
@@ -40,7 +41,7 @@ abstract class UpdaterFormTestBase extends UpdaterFormFunctionalTestBase {
   protected function setUp(): void {
     parent::setUp();
 
-    $this->activeDir = $this->container->get('package_manager.path_locator')->getProjectRoot();
+    $this->activeDir = $this->container->get(PathLocator::class)->getProjectRoot();
     (new ActiveFixtureManipulator())
       ->addPackage([
         'name' => 'drupal/semver_test',
diff --git a/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php b/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php
index c0241ee51ab8c5b0f02d7edf540ae0d2e8c5bee7..9c5bf5937f2505b39b803a63e09dff4062d117b5 100644
--- a/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php
+++ b/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php
@@ -4,6 +4,7 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\automatic_updates_extensions\Kernel;
 
+use Drupal\automatic_updates_extensions\ExtensionUpdater;
 use Drupal\Tests\user\Traits\UserCreationTrait;
 
 /**
@@ -45,7 +46,7 @@ class ExtensionUpdaterTest extends AutomaticUpdatesExtensionsKernelTestBase {
    * Tests that correct versions are staged after calling ::begin().
    */
   public function testCorrectVersionsStaged(): void {
-    $id = $this->container->get('automatic_updates_extensions.updater')->begin([
+    $id = $this->container->get(ExtensionUpdater::class)->begin([
       'my_module' => '9.8.1',
       // Use a legacy version number to ensure they are converted to semantic
       // version numbers which will work with the drupal.org Composer facade.
@@ -60,7 +61,7 @@ class ExtensionUpdaterTest extends AutomaticUpdatesExtensionsKernelTestBase {
     // Keep using the user account we created.
     $this->setCurrentUser($user);
 
-    $extension_updater = $this->container->get('automatic_updates_extensions.updater');
+    $extension_updater = $this->container->get(ExtensionUpdater::class);
 
     // Ensure that the target package versions are what we expect.
     $expected_versions = [
@@ -119,7 +120,7 @@ class ExtensionUpdaterTest extends AutomaticUpdatesExtensionsKernelTestBase {
     $this->expectException(\InvalidArgumentException::class);
     $this->expectExceptionMessage("The project contrib_profile1 cannot be updated because updating install profiles is not supported.");
 
-    $this->container->get('automatic_updates_extensions.updater')
+    $this->container->get(ExtensionUpdater::class)
       ->begin([
         'contrib_profile1' => '1.1.0',
       ]);
@@ -131,7 +132,7 @@ class ExtensionUpdaterTest extends AutomaticUpdatesExtensionsKernelTestBase {
   public function testNoProjectsInBegin(): void {
     $this->expectException(\InvalidArgumentException::class);
     $this->expectExceptionMessage('No projects to begin the update');
-    $this->container->get('automatic_updates_extensions.updater')->begin([]);
+    $this->container->get(ExtensionUpdater::class)->begin([]);
   }
 
   /**
@@ -140,7 +141,7 @@ class ExtensionUpdaterTest extends AutomaticUpdatesExtensionsKernelTestBase {
   public function testUnknownDrupalProject(): void {
     $this->expectException(\InvalidArgumentException::class);
     $this->expectExceptionMessage("The project my_module_unknown is not a Drupal project known to Composer and cannot be updated.");
-    $this->container->get('automatic_updates_extensions.updater')->begin([
+    $this->container->get(ExtensionUpdater::class)->begin([
       'my_module_unknown' => '9.8.1',
     ]);
   }
diff --git a/package_manager/package_manager.services.yml b/package_manager/package_manager.services.yml
index 86a9916abaf8d8ed9ce8af1e8a805c618db1a0d6..04eedd84d03fe5131d4a9bc5de5bd264ca9d382a 100644
--- a/package_manager/package_manager.services.yml
+++ b/package_manager/package_manager.services.yml
@@ -55,6 +55,7 @@ services:
     class: Drupal\package_manager\Validator\EnvironmentSupportValidator
     tags:
       - { name: event_subscriber }
+  Drupal\package_manager\Validator\EnvironmentSupportValidator: '@package_manager.validator.environment_support'
   package_manager.validator.composer:
     class: Drupal\package_manager\Validator\ComposerValidator
     tags:
@@ -63,6 +64,7 @@ services:
     class: Drupal\package_manager\Validator\DiskSpaceValidator
     tags:
       - { name: event_subscriber }
+  Drupal\package_manager\Validator\DiskSpaceValidator: '@package_manager.validator.disk_space'
   package_manager.validator.pending_updates:
     class: Drupal\package_manager\Validator\PendingUpdatesValidator
     arguments:
@@ -80,6 +82,7 @@ services:
     class: Drupal\package_manager\Validator\WritableFileSystemValidator
     tags:
       - { name: event_subscriber }
+  Drupal\package_manager\Validator\WritableFileSystemValidator: '@package_manager.validator.file_system'
   package_manager.validator.composer_settings:
     class: Drupal\package_manager\Validator\ComposerSettingsValidator
     tags:
@@ -128,6 +131,7 @@ services:
     class: Drupal\package_manager\PathExcluder\SqliteDatabaseExcluder
     tags:
       - { name: event_subscriber }
+  Drupal\package_manager\PathExcluder\SqliteDatabaseExcluder: '@package_manager.sqlite_excluder'
   package_manager.git_excluder:
     class: Drupal\package_manager\PathExcluder\GitExcluder
     tags:
@@ -142,6 +146,7 @@ services:
       $sitePath: '%site.path%'
     tags:
       - { name: event_subscriber }
+  Drupal\package_manager\PathExcluder\SiteConfigurationExcluder: '@package_manager.site_configuration_excluder'
   package_manager.node_modules_excluder:
     class: Drupal\package_manager\PathExcluder\NodeModulesExcluder
     tags:
@@ -170,6 +175,7 @@ services:
     class: Drupal\package_manager\Validator\BaseRequirementsFulfilledValidator
     tags:
       - { name: event_subscriber }
+  Drupal\package_manager\Validator\BaseRequirementsFulfilledValidator: '@package_manager.validator.base_requirements_fulfilled'
   package_manager.validator.supported_releases:
     class: Drupal\package_manager\Validator\SupportedReleaseValidator
     tags:
diff --git a/package_manager/tests/src/Functional/FailureMarkerRequirementTest.php b/package_manager/tests/src/Functional/FailureMarkerRequirementTest.php
index 27062ecbd1cf6b92109c6b29dfbcb3722768fb1d..c16fa178f4912930db6b9136b1ea28c935e6333e 100644
--- a/package_manager/tests/src/Functional/FailureMarkerRequirementTest.php
+++ b/package_manager/tests/src/Functional/FailureMarkerRequirementTest.php
@@ -5,6 +5,8 @@ declare(strict_types = 1);
 namespace Drupal\Tests\package_manager\Functional;
 
 use Drupal\Core\StringTranslation\StringTranslationTrait;
+use Drupal\package_manager\FailureMarker;
+use Drupal\package_manager\PathLocator;
 use Drupal\package_manager\Stage;
 use Drupal\Tests\BrowserTestBase;
 use Drupal\Tests\package_manager\Traits\AssertPreconditionsTrait;
@@ -43,10 +45,10 @@ class FailureMarkerRequirementTest extends BrowserTestBase {
     $this->drupalLogin($account);
 
     $fake_project_root = $this->root . DIRECTORY_SEPARATOR . $this->publicFilesDirectory;
-    $this->container->get('package_manager.path_locator')
+    $this->container->get(PathLocator::class)
       ->setPaths($fake_project_root, NULL, NULL, NULL);
 
-    $failure_marker = $this->container->get('package_manager.failure_marker');
+    $failure_marker = $this->container->get(FailureMarker::class);
     $message = $this->t('Package Manager is here to wreck your day.');
     $failure_marker->write($this->createMock(Stage::class), $message);
     $path = $failure_marker->getPath();
diff --git a/package_manager/tests/src/Kernel/BaseRequirementsFulfilledValidatorTest.php b/package_manager/tests/src/Kernel/BaseRequirementsFulfilledValidatorTest.php
index 474612bbeab3c10d5ba9040c39d89c16a7f3c003..a722b9c1c11ebd1d1a5937001b779ea25724a3be 100644
--- a/package_manager/tests/src/Kernel/BaseRequirementsFulfilledValidatorTest.php
+++ b/package_manager/tests/src/Kernel/BaseRequirementsFulfilledValidatorTest.php
@@ -7,6 +7,7 @@ use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\Event\PreOperationStageEvent;
 use Drupal\package_manager\Event\StatusCheckEvent;
 use Drupal\package_manager\ValidationResult;
+use Drupal\package_manager\Validator\BaseRequirementsFulfilledValidator;
 use Drupal\package_manager\Validator\BaseRequirementValidatorTrait;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
@@ -72,7 +73,7 @@ class BaseRequirementsFulfilledValidatorTest extends PackageManagerKernelTestBas
   public function testBaseRequirement(string $event_class): void {
     $this->eventClass = $event_class;
 
-    $validator = $this->container->get('package_manager.validator.base_requirements_fulfilled');
+    $validator = $this->container->get(BaseRequirementsFulfilledValidator::class);
     $this->assertEventPropagationStopped($event_class, [$validator, 'validate']);
 
     $result = ValidationResult::createError([
diff --git a/package_manager/tests/src/Kernel/ComposerInspectorTest.php b/package_manager/tests/src/Kernel/ComposerInspectorTest.php
index ff378cb9e708634844b41c98a75492df89b5be01..1dc3c7c27a16bc6ba9355c1f09567416ab7ca403 100644
--- a/package_manager/tests/src/Kernel/ComposerInspectorTest.php
+++ b/package_manager/tests/src/Kernel/ComposerInspectorTest.php
@@ -30,9 +30,9 @@ class ComposerInspectorTest extends PackageManagerKernelTestBase {
    * @covers ::getConfig
    */
   public function testConfig(): void {
-    $dir = $this->container->get('package_manager.path_locator')
+    $dir = $this->container->get(PathLocator::class)
       ->getProjectRoot();
-    $inspector = $this->container->get('package_manager.composer_inspector');
+    $inspector = $this->container->get(ComposerInspector::class);
     $this->assertSame(1, Json::decode($inspector->getConfig('secure-http', $dir)));
 
     $this->assertSame([
@@ -66,9 +66,9 @@ class ComposerInspectorTest extends PackageManagerKernelTestBase {
    * @covers ::getConfig
    */
   public function testConfigUndefinedKey(): void {
-    $project_root = $this->container->get('package_manager.path_locator')
+    $project_root = $this->container->get(PathLocator::class)
       ->getProjectRoot();
-    $inspector = $this->container->get('package_manager.composer_inspector');
+    $inspector = $this->container->get(ComposerInspector::class);
 
     // Overwrite the composer.json file and treat it as a
     $file = new JsonFile($project_root . '/composer.json');
@@ -91,11 +91,11 @@ class ComposerInspectorTest extends PackageManagerKernelTestBase {
    * @covers ::getInstalledPackagesList
    */
   public function testGetInstalledPackagesList(): void {
-    $project_root = $this->container->get('package_manager.path_locator')
+    $project_root = $this->container->get(PathLocator::class)
       ->getProjectRoot();
 
     /** @var \Drupal\package_manager\ComposerInspector $inspector */
-    $inspector = $this->container->get('package_manager.composer_inspector');
+    $inspector = $this->container->get(ComposerInspector::class);
     $list = $inspector->getInstalledPackagesList($project_root);
 
     $this->assertInstanceOf(InstalledPackage::class, $list['drupal/core']);
@@ -150,10 +150,9 @@ class ComposerInspectorTest extends PackageManagerKernelTestBase {
       // be called once even though we call validate() twice.
       ->shouldBeCalledOnce();
 
-    $project_root = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $project_root = $this->container->get(PathLocator::class)->getProjectRoot();
     /** @var \Drupal\package_manager\ComposerInspector $inspector */
-    $inspector = $this->container->get('package_manager.composer_inspector');
+    $inspector = $this->container->get(ComposerInspector::class);
     try {
       $inspector->validate($project_root);
       $this->fail('Expected an exception to be thrown, but it was not.');
@@ -182,14 +181,14 @@ class ComposerInspectorTest extends PackageManagerKernelTestBase {
    *   ["composer.lock"]
    */
   public function testComposerFilesDoNotExist(string $filename): void {
-    $project_root = $this->container->get('package_manager.path_locator')
+    $project_root = $this->container->get(PathLocator::class)
       ->getProjectRoot();
 
     $file_path = $project_root . '/' . $filename;
     unlink($file_path);
 
     /** @var \Drupal\package_manager\ComposerInspector $inspector */
-    $inspector = $this->container->get('package_manager.composer_inspector');
+    $inspector = $this->container->get(ComposerInspector::class);
     try {
       $inspector->validate($project_root);
     }
@@ -262,10 +261,10 @@ class ComposerInspectorTest extends PackageManagerKernelTestBase {
       $expected_message = "The detected Composer version, $reported_version, does not satisfy <code>" . ComposerInspector::SUPPORTED_VERSION . '</code>.';
     }
 
-    $project_root = $this->container->get('package_manager.path_locator')
+    $project_root = $this->container->get(PathLocator::class)
       ->getProjectRoot();
     /** @var \Drupal\package_manager\ComposerInspector $inspector */
-    $inspector = $this->container->get('package_manager.composer_inspector');
+    $inspector = $this->container->get(ComposerInspector::class);
     try {
       $inspector->validate($project_root);
       // If we expected the version check to succeed, ensure we did not expect
@@ -288,7 +287,7 @@ class ComposerInspectorTest extends PackageManagerKernelTestBase {
    * @covers ::validate
    */
   public function testComposerValidateIsCalled(): void {
-    $project_root = $this->container->get('package_manager.path_locator')
+    $project_root = $this->container->get(PathLocator::class)
       ->getProjectRoot();
 
     // Put an invalid value into composer.json and ensure it gets surfaced as
@@ -300,7 +299,7 @@ class ComposerInspectorTest extends PackageManagerKernelTestBase {
     $file->write($data);
 
     try {
-      $this->container->get('package_manager.composer_inspector')
+      $this->container->get(ComposerInspector::class)
         ->validate($project_root);
       $this->fail('Expected an exception to be thrown, but it was not.');
     }
@@ -315,10 +314,10 @@ class ComposerInspectorTest extends PackageManagerKernelTestBase {
    * @covers ::getRootPackageInfo
    */
   public function testRootPackageInfo(): void {
-    $project_root = $this->container->get('package_manager.path_locator')
+    $project_root = $this->container->get(PathLocator::class)
       ->getProjectRoot();
 
-    $info = $this->container->get('package_manager.composer_inspector')
+    $info = $this->container->get(ComposerInspector::class)
       ->getRootPackageInfo($project_root);
     $this->assertSame('fake/site', $info['name']);
   }
diff --git a/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php b/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php
index d0a21a88690a8ee8cd3060f2dd3f5d072cd97175..bf06f77dddfa496b6181402b6102f788748358a8 100644
--- a/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php
+++ b/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php
@@ -8,6 +8,7 @@ use Drupal\package_manager\Event\PreApplyEvent;
 use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\ValidationResult;
 use Drupal\Component\Utility\Bytes;
+use Drupal\package_manager\Validator\DiskSpaceValidator;
 
 /**
  * @covers \Drupal\package_manager\Validator\DiskSpaceValidator
@@ -149,7 +150,7 @@ class DiskSpaceValidatorTest extends PackageManagerKernelTestBase {
     $free_space = array_flip($this->resolvePlaceholdersInArrayValuesWithRealPaths(array_flip($free_space)));
 
     /** @var \Drupal\Tests\package_manager\Kernel\TestDiskSpaceValidator $validator */
-    $validator = $this->container->get('package_manager.validator.disk_space');
+    $validator = $this->container->get(DiskSpaceValidator::class);
     $validator->sharedDisk = $shared_disk;
     $validator->freeSpace = array_map([Bytes::class, 'toNumber'], $free_space);
 
@@ -177,7 +178,7 @@ class DiskSpaceValidatorTest extends PackageManagerKernelTestBase {
 
     $this->addEventTestListener(function () use ($shared_disk, $free_space): void {
       /** @var \Drupal\Tests\package_manager\Kernel\TestDiskSpaceValidator $validator */
-      $validator = $this->container->get('package_manager.validator.disk_space');
+      $validator = $this->container->get(DiskSpaceValidator::class);
       $validator->sharedDisk = $shared_disk;
       $validator->freeSpace = array_map([Bytes::class, 'toNumber'], $free_space);
     });
diff --git a/package_manager/tests/src/Kernel/DuplicateInfoFileValidatorTest.php b/package_manager/tests/src/Kernel/DuplicateInfoFileValidatorTest.php
index 980eb5cdd8a005502afb257d8238cba45ac9fcc4..c17377524a64e06e1f4693d63cc2606bf421fc90 100644
--- a/package_manager/tests/src/Kernel/DuplicateInfoFileValidatorTest.php
+++ b/package_manager/tests/src/Kernel/DuplicateInfoFileValidatorTest.php
@@ -5,6 +5,7 @@ declare(strict_types = 1);
 namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\package_manager\Exception\StageEventException;
+use Drupal\package_manager\PathLocator;
 use Drupal\package_manager\ValidationResult;
 use Symfony\Component\Filesystem\Filesystem;
 
@@ -201,8 +202,7 @@ class DuplicateInfoFileValidatorTest extends PackageManagerKernelTestBase {
     $stage->create();
     $stage->require(['composer/semver:^3']);
 
-    $active_dir = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
     $stage_dir = $stage->getStageDirectory();
     foreach ($active_info_files as $active_info_file) {
       $this->createFileAtPath($active_dir, $active_info_file);
diff --git a/package_manager/tests/src/Kernel/EnvironmentSupportValidatorTest.php b/package_manager/tests/src/Kernel/EnvironmentSupportValidatorTest.php
index 8707540cc276c7df3f56d83654e83672695827c2..328839bb95ab7833bdd6e4d44e4177c866d4a68e 100644
--- a/package_manager/tests/src/Kernel/EnvironmentSupportValidatorTest.php
+++ b/package_manager/tests/src/Kernel/EnvironmentSupportValidatorTest.php
@@ -27,7 +27,7 @@ class EnvironmentSupportValidatorTest extends PackageManagerKernelTestBase {
       t('Package Manager is not supported by your environment.'),
     ]);
     foreach ([PreCreateEvent::class, StatusCheckEvent::class] as $event_class) {
-      $this->assertEventPropagationStopped($event_class, [$this->container->get('package_manager.validator.environment_support'), 'validate']);
+      $this->assertEventPropagationStopped($event_class, [$this->container->get(EnvironmentSupportValidator::class), 'validate']);
     }
     $this->assertStatusCheckResults([$result]);
     $this->assertResults([$result], PreCreateEvent::class);
@@ -45,7 +45,7 @@ class EnvironmentSupportValidatorTest extends PackageManagerKernelTestBase {
       'Package Manager is not supported by your environment.',
     ]);
 
-    $this->assertEventPropagationStopped(PreApplyEvent::class, [$this->container->get('package_manager.validator.environment_support'), 'validate']);
+    $this->assertEventPropagationStopped(PreApplyEvent::class, [$this->container->get(EnvironmentSupportValidator::class), 'validate']);
     $this->assertResults([$result], PreApplyEvent::class);
   }
 
diff --git a/package_manager/tests/src/Kernel/FailureMarkerTest.php b/package_manager/tests/src/Kernel/FailureMarkerTest.php
index c9cfbd831b0e80802089578d8e3ab7ba8373149b..5e524543eb0e674c9b303d87b346d12e36c90078 100644
--- a/package_manager/tests/src/Kernel/FailureMarkerTest.php
+++ b/package_manager/tests/src/Kernel/FailureMarkerTest.php
@@ -6,6 +6,7 @@ namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\package_manager\Exception\StageFailureMarkerException;
+use Drupal\package_manager\FailureMarker;
 
 /**
  * @coversDefaultClass \Drupal\package_manager\FailureMarker
@@ -19,7 +20,7 @@ class FailureMarkerTest extends PackageManagerKernelTestBase {
    * @covers ::assertNotExists
    */
   public function testExceptionIfExists(): void {
-    $failure_marker = $this->container->get('package_manager.failure_marker');
+    $failure_marker = $this->container->get(FailureMarker::class);
     $failure_marker->write($this->createStage(), $this->t('Disastrous catastrophe!'));
 
     $this->expectException(StageFailureMarkerException::class);
@@ -33,7 +34,7 @@ class FailureMarkerTest extends PackageManagerKernelTestBase {
    * @covers ::assertNotExists
    */
   public function testExceptionForInvalidJson(): void {
-    $failure_marker = $this->container->get('package_manager.failure_marker');
+    $failure_marker = $this->container->get(FailureMarker::class);
     // Write the failure marker with invalid JSON.
     file_put_contents($failure_marker->getPath(), '{}}');
 
diff --git a/package_manager/tests/src/Kernel/FakeSiteFixtureTest.php b/package_manager/tests/src/Kernel/FakeSiteFixtureTest.php
index f48efba8203a06fbe339b0f315f4b7fef4624f62..3dfb3c4eb23892b715f7d0f8ef914d165125b092 100644
--- a/package_manager/tests/src/Kernel/FakeSiteFixtureTest.php
+++ b/package_manager/tests/src/Kernel/FakeSiteFixtureTest.php
@@ -5,6 +5,8 @@ declare(strict_types = 1);
 namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\fixture_manipulator\ActiveFixtureManipulator;
+use Drupal\package_manager\ComposerInspector;
+use Drupal\package_manager\PathLocator;
 use Symfony\Component\Process\Process;
 
 /**
@@ -30,9 +32,9 @@ class FakeSiteFixtureTest extends PackageManagerKernelTestBase {
    * Tests calls to ComposerInspector class methods.
    */
   public function testCallToComposerInspectorMethods(): void {
-    $active_dir = $this->container->get('package_manager.path_locator')->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
     /** @var \Drupal\package_manager\ComposerInspector $inspector */
-    $inspector = $this->container->get('package_manager.composer_inspector');
+    $inspector = $this->container->get(ComposerInspector::class);
     $list = $inspector->getInstalledPackagesList($active_dir);
     $this->assertNull($list->getPackageByDrupalProjectName('any_random_name'));
     $this->assertFalse(isset($list['drupal/any_random_name']));
@@ -45,8 +47,8 @@ class FakeSiteFixtureTest extends PackageManagerKernelTestBase {
    */
   public function testCallToSetVersion(): void {
     /** @var \Drupal\package_manager\ComposerInspector $inspector */
-    $inspector = $this->container->get('package_manager.composer_inspector');
-    $active_dir = $this->container->get('package_manager.path_locator')->getProjectRoot();
+    $inspector = $this->container->get(ComposerInspector::class);
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
     $installed_packages = $inspector->getInstalledPackagesList($active_dir);
     foreach (self::getExpectedFakeSitePackages() as $package_name) {
       $this->assertArrayHasKey($package_name, $installed_packages);
@@ -66,8 +68,8 @@ class FakeSiteFixtureTest extends PackageManagerKernelTestBase {
    */
   public function testCallToRemovePackage(): void {
     /** @var \Drupal\package_manager\ComposerInspector $inspector */
-    $inspector = $this->container->get('package_manager.composer_inspector');
-    $active_dir = $this->container->get('package_manager.path_locator')->getProjectRoot();
+    $inspector = $this->container->get(ComposerInspector::class);
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
     $expected_packages = self::getExpectedFakeSitePackages();
     $actual_packages = array_keys($inspector->getInstalledPackagesList($active_dir)->getArrayCopy());
     sort($actual_packages);
@@ -88,9 +90,9 @@ class FakeSiteFixtureTest extends PackageManagerKernelTestBase {
    * Checks that the expected packages are installed in the fake site fixture.
    */
   public function testExpectedPackages(): void {
-    $project_root = $this->container->get('package_manager.path_locator')
+    $project_root = $this->container->get(PathLocator::class)
       ->getProjectRoot();
-    $installed_packages = $this->container->get('package_manager.composer_inspector')
+    $installed_packages = $this->container->get(ComposerInspector::class)
       ->getInstalledPackagesList($project_root)
       ->getArrayCopy();
     ksort($installed_packages);
@@ -117,7 +119,7 @@ class FakeSiteFixtureTest extends PackageManagerKernelTestBase {
    * Tests that Composer show command can be used on the fixture.
    */
   public function testComposerShow(): void {
-    $active_dir = $this->container->get('package_manager.path_locator')->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
     (new ActiveFixtureManipulator())
       ->addPackage([
         'type' => 'package',
@@ -134,7 +136,7 @@ class FakeSiteFixtureTest extends PackageManagerKernelTestBase {
     $package_names = array_map(fn (array $package) => $package['name'], $output['installed']);
     $this->assertTrue(asort($package_names));
     $this->assertSame(['any-org/any-package', 'drupal/core', 'drupal/core-dev', 'drupal/core-recommended'], $package_names);
-    $list = $this->container->get('package_manager.composer_inspector')->getInstalledPackagesList($active_dir);
+    $list = $this->container->get(ComposerInspector::class)->getInstalledPackagesList($active_dir);
     $list_packages_names = array_keys($list->getArrayCopy());
     $this->assertSame(['any-org/any-package', 'drupal/core', 'drupal/core-dev', 'drupal/core-recommended'], $list_packages_names);
   }
@@ -143,7 +145,7 @@ class FakeSiteFixtureTest extends PackageManagerKernelTestBase {
    * Tests that the fixture passes `composer validate`.
    */
   public function testComposerValidate(): void {
-    $active_dir = $this->container->get('package_manager.path_locator')->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
     $process = new Process([
       'composer',
       'validate',
diff --git a/package_manager/tests/src/Kernel/FixtureManipulatorTest.php b/package_manager/tests/src/Kernel/FixtureManipulatorTest.php
index 941dd242cda08b58956437995577e89543a57e80..3cf7c208fea6ebfd317ac60d71e19ee142a364c4 100644
--- a/package_manager/tests/src/Kernel/FixtureManipulatorTest.php
+++ b/package_manager/tests/src/Kernel/FixtureManipulatorTest.php
@@ -6,6 +6,8 @@ namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\fixture_manipulator\ActiveFixtureManipulator;
 use Drupal\fixture_manipulator\FixtureManipulator;
+use Drupal\package_manager\ComposerInspector;
+use Drupal\package_manager\PathLocator;
 
 /**
  * @coversDefaultClass \Drupal\fixture_manipulator\FixtureManipulator
@@ -62,8 +64,7 @@ class FixtureManipulatorTest extends PackageManagerKernelTestBase {
   protected function setUp(): void {
     parent::setUp();
 
-    $this->dir = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $this->dir = $this->container->get(PathLocator::class)->getProjectRoot();
 
     [, $this->originalInstalledPhp] = $this->getData();
 
@@ -187,7 +188,7 @@ class FixtureManipulatorTest extends PackageManagerKernelTestBase {
    * @covers ::modifyPackage
    */
   public function testModifyPackageConfig(): void {
-    $inspector = $this->container->get('package_manager.composer_inspector');
+    $inspector = $this->container->get(ComposerInspector::class);
 
     // Assert ::modifyPackage() works with a package in an existing fixture not
     // created by ::addPackage().
@@ -338,7 +339,7 @@ class FixtureManipulatorTest extends PackageManagerKernelTestBase {
    * @covers ::addDotGitFolder
    */
   public function testAddDotGitFolder() {
-    $path_locator = $this->container->get('package_manager.path_locator');
+    $path_locator = $this->container->get(PathLocator::class);
     $project_root = $path_locator->getProjectRoot();
     $this->assertFalse(is_dir($project_root . "/relative/path/.git"));
     // We should not be able to add a git folder to a non-existing directory.
diff --git a/package_manager/tests/src/Kernel/InstalledPackagesListTest.php b/package_manager/tests/src/Kernel/InstalledPackagesListTest.php
index e741b551ab2fe8d687606085d7fa2f65ce9fb8b6..008d0a8934d7b95ca46a71f1163f090c200b57b3 100644
--- a/package_manager/tests/src/Kernel/InstalledPackagesListTest.php
+++ b/package_manager/tests/src/Kernel/InstalledPackagesListTest.php
@@ -5,6 +5,7 @@ namespace Drupal\Tests\package_manager\Kernel;
 use Drupal\fixture_manipulator\ActiveFixtureManipulator;
 use Drupal\package_manager\InstalledPackage;
 use Drupal\package_manager\InstalledPackagesList;
+use Drupal\package_manager\PathLocator;
 
 /**
  * @coversDefaultClass \Drupal\package_manager\InstalledPackagesList
@@ -23,7 +24,7 @@ class InstalledPackagesListTest extends PackageManagerKernelTestBase {
     // be in the `modules` directory, or themes will be the `themes` directory.
     // So, in this test, we ensure that flexibility works by just throwing all
     // the projects into a single `projects` directory.
-    $projects_path = $this->container->get('package_manager.path_locator')
+    $projects_path = $this->container->get(PathLocator::class)
       ->getProjectRoot() . '/projects';
 
     // The project name does not match the package name, and the project
diff --git a/package_manager/tests/src/Kernel/LockFileValidatorTest.php b/package_manager/tests/src/Kernel/LockFileValidatorTest.php
index cac4d20452bfc78961f101025bd805ca8db8fba4..93ac74cdcfbc7d6eb06f661969dd236b65c87208 100644
--- a/package_manager/tests/src/Kernel/LockFileValidatorTest.php
+++ b/package_manager/tests/src/Kernel/LockFileValidatorTest.php
@@ -10,6 +10,7 @@ use Drupal\package_manager\Event\PreApplyEvent;
 use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\Event\PreRequireEvent;
 use Drupal\package_manager\InstalledPackagesList;
+use Drupal\package_manager\PathLocator;
 use Drupal\package_manager\Validator\LockFileValidator;
 use Drupal\package_manager\ValidationResult;
 use Drupal\package_manager_bypass\NoOpStager;
@@ -34,7 +35,7 @@ class LockFileValidatorTest extends PackageManagerKernelTestBase {
    */
   protected function setUp(): void {
     parent::setUp();
-    $this->activeDir = $this->container->get('package_manager.path_locator')
+    $this->activeDir = $this->container->get(PathLocator::class)
       ->getProjectRoot();
   }
 
diff --git a/package_manager/tests/src/Kernel/MultisiteValidatorTest.php b/package_manager/tests/src/Kernel/MultisiteValidatorTest.php
index b331ef4649ddc6deb8081d1a06204cae84b805d9..cb24ffad1cc4f91c3984f617957a9fb74806379b 100644
--- a/package_manager/tests/src/Kernel/MultisiteValidatorTest.php
+++ b/package_manager/tests/src/Kernel/MultisiteValidatorTest.php
@@ -6,6 +6,7 @@ namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\package_manager\Event\PreApplyEvent;
 use Drupal\package_manager\Event\PreCreateEvent;
+use Drupal\package_manager\PathLocator;
 use Drupal\package_manager\ValidationResult;
 
 /**
@@ -75,7 +76,7 @@ PHP,
    */
   public function testMultisite(?string $sites_php, array $expected_results = []): void {
     if ($sites_php) {
-      $project_root = $this->container->get('package_manager.path_locator')->getProjectRoot();
+      $project_root = $this->container->get(PathLocator::class)->getProjectRoot();
       file_put_contents($project_root . '/sites/sites.php', $sites_php);
     }
     $this->assertStatusCheckResults($expected_results);
@@ -96,7 +97,7 @@ PHP,
   public function testMultisiteDuringPreApply(?string $sites_php, array $expected_results = []): void {
     $this->addEventTestListener(function () use ($sites_php): void {
       if ($sites_php) {
-        $project_root = $this->container->get('package_manager.path_locator')->getProjectRoot();
+        $project_root = $this->container->get(PathLocator::class)->getProjectRoot();
         file_put_contents($project_root . '/sites/sites.php', $sites_php);
       }
     });
diff --git a/package_manager/tests/src/Kernel/OverwriteExistingPackagesValidatorTest.php b/package_manager/tests/src/Kernel/OverwriteExistingPackagesValidatorTest.php
index 0455627bd87cc4c51a153c90b4e51a1f8771411f..9b28481fdfdd8f9cc4453caca25dff225a0a58eb 100644
--- a/package_manager/tests/src/Kernel/OverwriteExistingPackagesValidatorTest.php
+++ b/package_manager/tests/src/Kernel/OverwriteExistingPackagesValidatorTest.php
@@ -5,8 +5,10 @@ declare(strict_types = 1);
 namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\fixture_manipulator\ActiveFixtureManipulator;
+use Drupal\package_manager\ComposerInspector;
 use Drupal\package_manager\Event\PostCreateEvent;
 use Drupal\package_manager\Event\PreApplyEvent;
+use Drupal\package_manager\PathLocator;
 use Drupal\package_manager\ValidationResult;
 use Drupal\Tests\package_manager\Traits\ComposerInstallersTrait;
 
@@ -28,7 +30,7 @@ class OverwriteExistingPackagesValidatorTest extends PackageManagerKernelTestBas
     $this->disableValidators[] = 'package_manager.validator.supported_releases';
     parent::setUp();
 
-    $this->installComposerInstallers($this->container->get('package_manager.path_locator')->getProjectRoot());
+    $this->installComposerInstallers($this->container->get(PathLocator::class)->getProjectRoot());
   }
 
   /**
@@ -114,7 +116,7 @@ class OverwriteExistingPackagesValidatorTest extends PackageManagerKernelTestBas
 
     // Set the installer path config in the active directory this will be
     // copied to the stage directory where we install the packages.
-    $this->setInstallerPaths($installer_paths, $this->container->get('package_manager.path_locator')->getProjectRoot());
+    $this->setInstallerPaths($installer_paths, $this->container->get(PathLocator::class)->getProjectRoot());
 
     // Add a package without an install_path set which will not raise an error.
     // The most common example of this in the Drupal ecosystem is a submodule.
@@ -127,7 +129,7 @@ class OverwriteExistingPackagesValidatorTest extends PackageManagerKernelTestBas
       FALSE,
       TRUE
     );
-    $inspector = $this->container->get('package_manager.composer_inspector');
+    $inspector = $this->container->get(ComposerInspector::class);
     $listener = function (PostCreateEvent $event) use ($inspector) {
       $list = $inspector->getInstalledPackagesList($event->stage->getStageDirectory());
       $this->assertArrayHasKey('drupal/sub-module', $list->getArrayCopy());
diff --git a/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php b/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php
index f0b1db995cee47ff634b181dc645a31747fb3daa..19aff68a9729a7d8810ddcedbe64a6e6b5f99dcf 100644
--- a/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php
+++ b/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php
@@ -13,6 +13,8 @@ use Drupal\package_manager\Event\PreApplyEvent;
 use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\Event\PreOperationStageEvent;
 use Drupal\package_manager\Exception\StageEventException;
+use Drupal\package_manager\FailureMarker;
+use Drupal\package_manager\PathLocator;
 use Drupal\package_manager\StatusCheckTrait;
 use Drupal\package_manager\Validator\DiskSpaceValidator;
 use Drupal\package_manager\Stage;
@@ -129,7 +131,7 @@ abstract class PackageManagerKernelTestBase extends KernelTestBase {
    */
   protected function createStage(): TestStage {
     return new TestStage(
-      $this->container->get('package_manager.path_locator'),
+      $this->container->get(PathLocator::class),
       $this->container->get('package_manager.beginner'),
       $this->container->get('package_manager.stager'),
       $this->container->get('package_manager.committer'),
@@ -138,7 +140,7 @@ abstract class PackageManagerKernelTestBase extends KernelTestBase {
       $this->container->get('tempstore.shared'),
       $this->container->get('datetime.time'),
       new PathFactory(),
-      $this->container->get('package_manager.failure_marker')
+      $this->container->get(FailureMarker::class)
     );
   }
 
@@ -263,7 +265,7 @@ abstract class PackageManagerKernelTestBase extends KernelTestBase {
     // Ensure the path locator points to the test project. We assume that is its
     // own web root and the vendor directory is at its top level.
     /** @var \Drupal\package_manager_bypass\MockPathLocator $path_locator */
-    $path_locator = $this->container->get('package_manager.path_locator');
+    $path_locator = $this->container->get(PathLocator::class);
     $path_locator->setPaths($active_dir, $active_dir . '/vendor', '', $staging_root);
 
     // This validator will persist through container rebuilds.
diff --git a/package_manager/tests/src/Kernel/PathExcluder/GitExcluderTest.php b/package_manager/tests/src/Kernel/PathExcluder/GitExcluderTest.php
index 03fe798773b091a0d79c28b173e5bdef7f95e67e..fc15ef2155631e4aaa0ef73bd781d3d84bc4d2bc 100644
--- a/package_manager/tests/src/Kernel/PathExcluder/GitExcluderTest.php
+++ b/package_manager/tests/src/Kernel/PathExcluder/GitExcluderTest.php
@@ -6,6 +6,7 @@ namespace Drupal\Tests\package_manager\Kernel\PathExcluder;
 
 use Drupal\Core\Serialization\Yaml;
 use Drupal\fixture_manipulator\ActiveFixtureManipulator;
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\package_manager\Kernel\PackageManagerKernelTestBase;
 use Drupal\Tests\package_manager\Traits\ComposerInstallersTrait;
 use Symfony\Component\Filesystem\Filesystem;
@@ -24,8 +25,7 @@ class GitExcluderTest extends PackageManagerKernelTestBase {
    */
   protected function setUp(): void {
     parent::setUp();
-    $path_locator = $this->container->get('package_manager.path_locator');
-    $project_root = $path_locator->getProjectRoot();
+    $project_root = $this->container->get(PathLocator::class)->getProjectRoot();
     $this->installComposerInstallers($project_root);
     $active_manipulator = new ActiveFixtureManipulator();
     $active_manipulator
diff --git a/package_manager/tests/src/Kernel/PathExcluder/NodeModulesExcluderTest.php b/package_manager/tests/src/Kernel/PathExcluder/NodeModulesExcluderTest.php
index 24c74eff6e8a60335046e3764c2890e6c2d53770..db5eada539f8d3d3cf2e68727c8a408c85da9fc1 100644
--- a/package_manager/tests/src/Kernel/PathExcluder/NodeModulesExcluderTest.php
+++ b/package_manager/tests/src/Kernel/PathExcluder/NodeModulesExcluderTest.php
@@ -4,6 +4,7 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\package_manager\Kernel\PathExcluder;
 
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\package_manager\Kernel\PackageManagerKernelTestBase;
 
 /**
@@ -23,7 +24,7 @@ class NodeModulesExcluderTest extends PackageManagerKernelTestBase {
     // Ensure we have an up-to-date container.
     $this->container = $this->container->get('kernel')->rebuildContainer();
 
-    $active_dir = $this->container->get('package_manager.path_locator')
+    $active_dir = $this->container->get(PathLocator::class)
       ->getProjectRoot();
 
     $stage = $this->createStage();
diff --git a/package_manager/tests/src/Kernel/PathExcluder/SiteConfigurationExcluderTest.php b/package_manager/tests/src/Kernel/PathExcluder/SiteConfigurationExcluderTest.php
index fadcf455a05a1ef2d2a0277fcf66613bd5d9adb6..ae8838e783dc295ed6eee534b9c94bdeeee737e6 100644
--- a/package_manager/tests/src/Kernel/PathExcluder/SiteConfigurationExcluderTest.php
+++ b/package_manager/tests/src/Kernel/PathExcluder/SiteConfigurationExcluderTest.php
@@ -6,6 +6,7 @@ namespace Drupal\Tests\package_manager\Kernel\PathExcluder;
 
 use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\package_manager\PathExcluder\SiteConfigurationExcluder;
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\package_manager\Kernel\PackageManagerKernelTestBase;
 
 /**
@@ -35,14 +36,12 @@ class SiteConfigurationExcluderTest extends PackageManagerKernelTestBase {
     // Ensure we have an up-to-date container.
     $this->container = $this->container->get('kernel')->rebuildContainer();
 
-    $active_dir = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
 
     $site_path = 'sites/example.com';
 
     // Update the event subscribers' dependencies.
-    /** @var \Drupal\Tests\package_manager\Kernel\PathExcluder\TestSiteConfigurationExcluder $site_configuration_excluder */
-    $site_configuration_excluder = $this->container->get('package_manager.site_configuration_excluder');
+    $site_configuration_excluder = $this->container->get(SiteConfigurationExcluder::class);
     $site_configuration_excluder->sitePath = $site_path;
 
     $stage = $this->createStage();
diff --git a/package_manager/tests/src/Kernel/PathExcluder/SiteFilesExcluderTest.php b/package_manager/tests/src/Kernel/PathExcluder/SiteFilesExcluderTest.php
index 504fc3d34467f2e5e6c8b5c3b15ac5cdcb20b277..bc8d7002a3595c6cd800d4e9c58656095cf8b73a 100644
--- a/package_manager/tests/src/Kernel/PathExcluder/SiteFilesExcluderTest.php
+++ b/package_manager/tests/src/Kernel/PathExcluder/SiteFilesExcluderTest.php
@@ -4,6 +4,7 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\package_manager\Kernel\PathExcluder;
 
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\package_manager\Kernel\PackageManagerKernelTestBase;
 
 /**
@@ -27,8 +28,7 @@ class SiteFilesExcluderTest extends PackageManagerKernelTestBase {
     // Ensure we have an up-to-date container.
     $this->container = $this->container->get('kernel')->rebuildContainer();
 
-    $active_dir = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
 
     // Ensure that we are using directories within the fake site fixture for
     // public and private files.
diff --git a/package_manager/tests/src/Kernel/PathExcluder/SqliteDatabaseExcluderTest.php b/package_manager/tests/src/Kernel/PathExcluder/SqliteDatabaseExcluderTest.php
index 1c00c03ddd22f82e2822ecc5932944d7bdda79c7..c4d291be6174fa484b8453981ae3f1a0c76fa877 100644
--- a/package_manager/tests/src/Kernel/PathExcluder/SqliteDatabaseExcluderTest.php
+++ b/package_manager/tests/src/Kernel/PathExcluder/SqliteDatabaseExcluderTest.php
@@ -8,6 +8,7 @@ use Drupal\Core\Database\Connection;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\package_manager\Event\CollectIgnoredPathsEvent;
 use Drupal\package_manager\PathExcluder\SqliteDatabaseExcluder;
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\package_manager\Kernel\PackageManagerKernelTestBase;
 
 /**
@@ -39,7 +40,7 @@ class SqliteDatabaseExcluderTest extends PackageManagerKernelTestBase {
     $database->getConnectionOptions()->willReturn($connection_options);
 
     /** @var \Drupal\Tests\package_manager\Kernel\PathExcluder\TestSiteConfigurationExcluder $sqlite_excluder */
-    $sqlite_excluder = $this->container->get('package_manager.sqlite_excluder');
+    $sqlite_excluder = $this->container->get(SqliteDatabaseExcluder::class);
     $sqlite_excluder->database = $database->reveal();
   }
 
@@ -53,8 +54,7 @@ class SqliteDatabaseExcluderTest extends PackageManagerKernelTestBase {
     // Ensure we have an up-to-date container.
     $this->container = $this->container->get('kernel')->rebuildContainer();
 
-    $active_dir = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
 
     // Mock a SQLite database connection to a file in the active directory. The
     // file should not be staged.
@@ -147,7 +147,7 @@ class SqliteDatabaseExcluderTest extends PackageManagerKernelTestBase {
     // If the database path should be treated as absolute, prefix it with the
     // path of the active directory.
     if (str_starts_with($database_path, '/')) {
-      $database_path = $this->container->get('package_manager.path_locator')->getProjectRoot() . $database_path;
+      $database_path = $this->container->get(PathLocator::class)->getProjectRoot() . $database_path;
     }
     $this->mockDatabase([
       'database' => $database_path,
@@ -156,7 +156,7 @@ class SqliteDatabaseExcluderTest extends PackageManagerKernelTestBase {
     $event = new CollectIgnoredPathsEvent($this->createStage());
     // Invoke the event subscriber directly, so we can check that the database
     // was correctly excluded.
-    $this->container->get('package_manager.sqlite_excluder')
+    $this->container->get(SqliteDatabaseExcluder::class)
       ->excludeDatabaseFiles($event);
     // All of the expected exclusions should be flagged.
     $this->assertEmpty(array_diff($expected_exclusions, $event->getAll()));
diff --git a/package_manager/tests/src/Kernel/PathExcluder/TestSiteExcluderTest.php b/package_manager/tests/src/Kernel/PathExcluder/TestSiteExcluderTest.php
index 4ea954e05b63671526cac58e9346d6a90b2d5733..7f25d573f2852ce87c7758eb12a4d0958c184800 100644
--- a/package_manager/tests/src/Kernel/PathExcluder/TestSiteExcluderTest.php
+++ b/package_manager/tests/src/Kernel/PathExcluder/TestSiteExcluderTest.php
@@ -4,6 +4,7 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\package_manager\Kernel\PathExcluder;
 
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\package_manager\Kernel\PackageManagerKernelTestBase;
 
 /**
@@ -23,8 +24,7 @@ class TestSiteExcluderTest extends PackageManagerKernelTestBase {
     // Ensure we have an up-to-date container.
     $this->container = $this->container->get('kernel')->rebuildContainer();
 
-    $active_dir = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
 
     $stage = $this->createStage();
     $stage->create();
diff --git a/package_manager/tests/src/Kernel/PathExcluder/UnknownPathExcluderTest.php b/package_manager/tests/src/Kernel/PathExcluder/UnknownPathExcluderTest.php
index 642047efddf0ee7d23eaf94313f463d7cbe6fedb..d18bde6164042b59d20d72f02a20321b3f352c0f 100644
--- a/package_manager/tests/src/Kernel/PathExcluder/UnknownPathExcluderTest.php
+++ b/package_manager/tests/src/Kernel/PathExcluder/UnknownPathExcluderTest.php
@@ -5,6 +5,7 @@ declare(strict_types = 1);
 namespace Drupal\Tests\package_manager\Kernel\PathExcluder;
 
 use Drupal\Component\FileSystem\FileSystem as DrupalFileSystem;
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\package_manager\Kernel\PackageManagerKernelTestBase;
 use Symfony\Component\Filesystem\Filesystem;
 
@@ -65,7 +66,7 @@ class UnknownPathExcluderTest extends PackageManagerKernelTestBase {
 
       // We need to reset the test paths with our new webroot.
       /** @var \Drupal\package_manager_bypass\MockPathLocator $path_locator */
-      $path_locator = $this->container->get('package_manager.path_locator');
+      $path_locator = $this->container->get(PathLocator::class);
 
       $path_locator->setPaths(
         $path_locator->getProjectRoot(),
@@ -142,7 +143,7 @@ class UnknownPathExcluderTest extends PackageManagerKernelTestBase {
   public function testUnknownPath(bool $use_nested_webroot, ?string $unknown_dir, array $unknown_files): void {
     $this->createTestProjectForTemplate($use_nested_webroot);
 
-    $active_dir = $this->container->get('package_manager.path_locator')
+    $active_dir = $this->container->get(PathLocator::class)
       ->getProjectRoot();
     if ($unknown_dir) {
       mkdir("$active_dir/$unknown_dir");
diff --git a/package_manager/tests/src/Kernel/PathExcluder/VendorHardeningExcluderTest.php b/package_manager/tests/src/Kernel/PathExcluder/VendorHardeningExcluderTest.php
index fee7884a372e2b4d3d72ba92d89736e82096a58b..ce17e0dae8f74d729aebfc02cd253d0388a024fb 100644
--- a/package_manager/tests/src/Kernel/PathExcluder/VendorHardeningExcluderTest.php
+++ b/package_manager/tests/src/Kernel/PathExcluder/VendorHardeningExcluderTest.php
@@ -4,6 +4,7 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\package_manager\Kernel\PathExcluder;
 
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\package_manager\Kernel\PackageManagerKernelTestBase;
 
 /**
@@ -23,8 +24,7 @@ class VendorHardeningExcluderTest extends PackageManagerKernelTestBase {
     // Ensure we have an up-to-date container.
     $this->container = $this->container->get('kernel')->rebuildContainer();
 
-    $active_dir = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
 
     $stage = $this->createStage();
     $stage->create();
diff --git a/package_manager/tests/src/Kernel/StageTest.php b/package_manager/tests/src/Kernel/StageTest.php
index de336bae5f95c39159da58e254d0a80a7c650c43..4ffe94665a6cd2d794ed4a2e00b08f5f3ff19245 100644
--- a/package_manager/tests/src/Kernel/StageTest.php
+++ b/package_manager/tests/src/Kernel/StageTest.php
@@ -17,6 +17,9 @@ use Drupal\package_manager\Event\StageEvent;
 use Drupal\package_manager\Exception\ApplyFailedException;
 use Drupal\package_manager\Exception\StageException;
 use Drupal\package_manager\Exception\StageFailureMarkerException;
+use Drupal\package_manager\FailureMarker;
+use Drupal\package_manager\PathLocator;
+use Drupal\package_manager\Validator\WritableFileSystemValidator;
 use Drupal\package_manager_bypass\LoggingBeginner;
 use Drupal\package_manager_bypass\LoggingCommitter;
 use Drupal\package_manager_bypass\NoOpStager;
@@ -61,11 +64,11 @@ class StageTest extends PackageManagerKernelTestBase {
     // In this test, we're working with paths that (probably) don't exist in
     // the file system at all, so we don't want to validate that the file system
     // is writable when creating stages.
-    $validator = $this->container->get('package_manager.validator.file_system');
+    $validator = $this->container->get(WritableFileSystemValidator::class);
     $this->container->get('event_dispatcher')->removeSubscriber($validator);
 
     /** @var \Drupal\package_manager_bypass\MockPathLocator $path_locator */
-    $path_locator = $this->container->get('package_manager.path_locator');
+    $path_locator = $this->container->get(PathLocator::class);
 
     $stage = $this->createStage();
     $id = $stage->create();
@@ -345,7 +348,7 @@ class StageTest extends PackageManagerKernelTestBase {
       $this->assertSame($thrown_message, $exception->getMessage());
       $this->assertSame(123, $exception->getCode());
 
-      $failure_marker = $this->container->get('package_manager.failure_marker');
+      $failure_marker = $this->container->get(FailureMarker::class);
       if ($exception instanceof ApplyFailedException) {
         $this->assertFileExists($failure_marker->getPath());
         $this->assertFalse($stage->isApplying());
@@ -392,7 +395,7 @@ class StageTest extends PackageManagerKernelTestBase {
 
     // If the failure marker is cleared, we should be able to create the stage
     // without issue.
-    $this->container->get('package_manager.failure_marker')->clear();
+    $this->container->get(FailureMarker::class)->clear();
     $stage->create();
   }
 
@@ -407,7 +410,7 @@ class StageTest extends PackageManagerKernelTestBase {
     $stage->require(['ext-json:*']);
     $stage->apply();
 
-    $this->container->get('package_manager.failure_marker')
+    $this->container->get(FailureMarker::class)
       ->assertNotExists();
   }
 
@@ -629,8 +632,7 @@ class StageTest extends PackageManagerKernelTestBase {
    * Tests that if a stage fails to get ignored paths, throws a stage exception.
    */
   public function testFailureCollectIgnoredPaths(): void {
-    $project_root = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $project_root = $this->container->get(PathLocator::class)->getProjectRoot();
     unlink($project_root . '/composer.json');
     $this->expectException(StageException::class);
     $this->expectExceptionMessage("composer.json not found.");
diff --git a/package_manager/tests/src/Kernel/StagedDBUpdateValidatorTest.php b/package_manager/tests/src/Kernel/StagedDBUpdateValidatorTest.php
index 5755d4ff2a2e6938c8b0750d67c93f0c6b36085e..052cb321fbf6b9ea333d184959390f1204c48a75 100644
--- a/package_manager/tests/src/Kernel/StagedDBUpdateValidatorTest.php
+++ b/package_manager/tests/src/Kernel/StagedDBUpdateValidatorTest.php
@@ -4,6 +4,7 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\package_manager\Kernel;
 
+use Drupal\package_manager\PathLocator;
 use Drupal\package_manager\ValidationResult;
 
 /**
@@ -44,8 +45,7 @@ class StagedDBUpdateValidatorTest extends PackageManagerKernelTestBase {
 
     // Ensure that all the extensions we're testing with have database update
     // files in the active directory.
-    $active_dir = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
 
     foreach ($this->extensions as $extension_name => $extension_path) {
       $extension_path = $active_dir . '/' . $extension_path;
@@ -133,8 +133,7 @@ class StagedDBUpdateValidatorTest extends PackageManagerKernelTestBase {
     $stage = $this->createStage();
     $stage->create();
 
-    $active_dir = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
     foreach ($this->extensions as $name => $path) {
       unlink("$active_dir/$path/$name.$suffix");
     }
diff --git a/package_manager/tests/src/Kernel/SymlinkValidatorTest.php b/package_manager/tests/src/Kernel/SymlinkValidatorTest.php
index 11d027ace1a75f77994c808a02811249225936d8..730ea663195ee08cd8444b7b317113eb462888a5 100644
--- a/package_manager/tests/src/Kernel/SymlinkValidatorTest.php
+++ b/package_manager/tests/src/Kernel/SymlinkValidatorTest.php
@@ -158,7 +158,7 @@ class SymlinkValidatorTest extends PackageManagerKernelTestBase {
    * @dataProvider providerSymlinkToDirectory
    */
   public function testSymlinkToDirectory(string $file_syncer, array $expected_results): void {
-    $project_root = $this->container->get('package_manager.path_locator')
+    $project_root = $this->container->get(PathLocator::class)
       ->getProjectRoot();
 
     mkdir($project_root . '/modules/custom');
diff --git a/package_manager/tests/src/Kernel/WritableFileSystemValidatorTest.php b/package_manager/tests/src/Kernel/WritableFileSystemValidatorTest.php
index b73a5227bbe907f3960630fd9a1a4088677e6ff2..3b31104e18a0e47ff615bada15501113e632af14 100644
--- a/package_manager/tests/src/Kernel/WritableFileSystemValidatorTest.php
+++ b/package_manager/tests/src/Kernel/WritableFileSystemValidatorTest.php
@@ -6,6 +6,7 @@ namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\package_manager\Event\PreApplyEvent;
 use Drupal\package_manager\Event\PreCreateEvent;
+use Drupal\package_manager\PathLocator;
 use Drupal\package_manager\ValidationResult;
 use Symfony\Component\Filesystem\Filesystem;
 
@@ -80,7 +81,7 @@ class WritableFileSystemValidatorTest extends PackageManagerKernelTestBase {
    * @dataProvider providerWritable
    */
   public function testWritable(int $root_permissions, int $vendor_permissions, array $expected_results): void {
-    $path_locator = $this->container->get('package_manager.path_locator');
+    $path_locator = $this->container->get(PathLocator::class);
 
     // We need to set the vendor directory's permissions first because, in the
     // test project, it's located inside the project root.
@@ -106,7 +107,7 @@ class WritableFileSystemValidatorTest extends PackageManagerKernelTestBase {
   public function testWritableDuringPreApply(int $root_permissions, int $vendor_permissions, array $expected_results): void {
     $this->addEventTestListener(
       function () use ($root_permissions, $vendor_permissions): void {
-        $path_locator = $this->container->get('package_manager.path_locator');
+        $path_locator = $this->container->get(PathLocator::class);
 
         // We need to set the vendor directory's permissions first because, in
         // the test project, it's located inside the project root.
@@ -168,7 +169,7 @@ class WritableFileSystemValidatorTest extends PackageManagerKernelTestBase {
    * @dataProvider providerStagingRootPermissions
    */
   public function testStagingRootPermissions(int $permissions, array $expected_results, bool $delete_staging_root): void {
-    $dir = $this->container->get('package_manager.path_locator')
+    $dir = $this->container->get(PathLocator::class)
       ->getStagingRoot();
 
     if ($delete_staging_root) {
diff --git a/tests/src/Functional/AutomaticUpdatesFunctionalTestBase.php b/tests/src/Functional/AutomaticUpdatesFunctionalTestBase.php
index 6416c96e43f3d2de0a974fcdb6e727d5ad682b98..8e1b54051bae20319cd5a90d6ad1637d89051c58 100644
--- a/tests/src/Functional/AutomaticUpdatesFunctionalTestBase.php
+++ b/tests/src/Functional/AutomaticUpdatesFunctionalTestBase.php
@@ -6,6 +6,7 @@ namespace Drupal\Tests\automatic_updates\Functional;
 
 use Drupal\automatic_updates\CronUpdater;
 use Drupal\fixture_manipulator\StageFixtureManipulator;
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\BrowserTestBase;
 use Drupal\Tests\package_manager\Traits\AssertPreconditionsTrait;
 use Drupal\Tests\package_manager\Traits\FixtureManipulatorTrait;
@@ -157,7 +158,7 @@ abstract class AutomaticUpdatesFunctionalTestBase extends BrowserTestBase {
     // unique for each test run. This will enable changing files in the
     // directory and not affect other tests.
     $active_dir = $this->copyFixtureToTempDirectory($fixture_directory);
-    $this->container->get('package_manager.path_locator')
+    $this->container->get(PathLocator::class)
       ->setPaths($active_dir, $active_dir . '/vendor', '', NULL);
   }
 
diff --git a/tests/src/Functional/ErrorMessageOnStageDestroyTest.php b/tests/src/Functional/ErrorMessageOnStageDestroyTest.php
index 2391560d823bd393d0116be5614ca38c43241332..5a57e22f4836e3de42575705962dcd92170d518b 100644
--- a/tests/src/Functional/ErrorMessageOnStageDestroyTest.php
+++ b/tests/src/Functional/ErrorMessageOnStageDestroyTest.php
@@ -4,6 +4,8 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\automatic_updates\Functional;
 
+use Drupal\automatic_updates\Updater;
+
 /**
  * Tests error message when the stage the user is interacting with is destroyed.
  *
@@ -52,7 +54,7 @@ class ErrorMessageOnStageDestroyTest extends AutomaticUpdatesFunctionalTestBase
     $page->pressButton('Update to 9.8.1');
     $this->checkForMetaRefresh();
     $this->assertUpdateReady('9.8.1');
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $random_message = $this->randomString();
     // @see \Drupal\Tests\package_manager\Kernel\StageTest::testStoreDestroyInfo()
     // @see \Drupal\automatic_updates\CronUpdater::performUpdate()
diff --git a/tests/src/Kernel/CronUpdaterTest.php b/tests/src/Kernel/CronUpdaterTest.php
index 6eafdc8c38faf2b5adcbcdf74bc52390b6a4ce46..84216b38b2e6b4b8c58513817a4ed551392b1ac0 100644
--- a/tests/src/Kernel/CronUpdaterTest.php
+++ b/tests/src/Kernel/CronUpdaterTest.php
@@ -273,7 +273,7 @@ class CronUpdaterTest extends AutomaticUpdatesKernelTestBase {
       ->addLogger($cron_logger);
 
     /** @var \Drupal\automatic_updates\CronUpdater $updater */
-    $updater = $this->container->get('automatic_updates.cron_updater');
+    $updater = $this->container->get(CronUpdater::class);
 
     // When the event specified by $event_class is dispatched, either throw an
     // exception directly from the event subscriber, or prepare a
@@ -427,7 +427,7 @@ class CronUpdaterTest extends AutomaticUpdatesKernelTestBase {
    */
   public function testBeginThrowsException(): void {
     $this->expectExceptionMessage(CronUpdater::class . '::begin() cannot be called directly.');
-    $this->container->get('automatic_updates.cron_updater')
+    $this->container->get(CronUpdater::class)
       ->begin(['drupal' => '9.8.1']);
   }
 
@@ -495,7 +495,7 @@ END;
     $error = ValidationResult::createError([
       t('Error while updating!'),
     ]);
-    $exception = $this->createStageEventExceptionFromResults([$error], $event_class, $this->container->get('automatic_updates.cron_updater'));
+    $exception = $this->createStageEventExceptionFromResults([$error], $event_class, $this->container->get(CronUpdater::class));
     TestSubscriber1::setTestResult($exception->event->getResults(), $event_class);
 
     $this->container->get('cron')->run();
@@ -537,7 +537,7 @@ END;
       t('Error while updating!'),
     ]);
     TestSubscriber1::setTestResult([$error], $event_class);
-    $exception = $this->createStageEventExceptionFromResults([$error], $event_class, $this->container->get('automatic_updates.cron_updater'));
+    $exception = $this->createStageEventExceptionFromResults([$error], $event_class, $this->container->get(CronUpdater::class));
 
     $this->container->get('cron')->run();
 
diff --git a/tests/src/Kernel/ReleaseChooserTest.php b/tests/src/Kernel/ReleaseChooserTest.php
index c6a720bf155f934293c918d24c37860f08527cb1..d8d6d4ee7dae7391f64bc66c48daf4fa5a5e73fa 100644
--- a/tests/src/Kernel/ReleaseChooserTest.php
+++ b/tests/src/Kernel/ReleaseChooserTest.php
@@ -4,6 +4,9 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\automatic_updates\Kernel;
 
+use Drupal\automatic_updates\CronUpdater;
+use Drupal\automatic_updates\ReleaseChooser;
+use Drupal\automatic_updates\Updater;
 use Drupal\Core\Extension\ExtensionVersion;
 use Drupal\update\ProjectRelease;
 
@@ -38,84 +41,84 @@ class ReleaseChooserTest extends AutomaticUpdatesKernelTestBase {
   public function providerReleases(): array {
     return [
       'installed 9.8.0, no minor support' => [
-        'updater' => 'automatic_updates.updater',
+        'updater' => Updater::class,
         'minor_support' => FALSE,
         'installed_version' => '9.8.0',
         'current_minor' => '9.8.2',
         'next_minor' => NULL,
       ],
       'installed 9.8.0, minor support' => [
-        'updater' => 'automatic_updates.updater',
+        'updater' => Updater::class,
         'minor_support' => TRUE,
         'installed_version' => '9.8.0',
         'current_minor' => '9.8.2',
         'next_minor' => NULL,
       ],
       'installed 9.7.0, no minor support' => [
-        'updater' => 'automatic_updates.updater',
+        'updater' => Updater::class,
         'minor_support' => FALSE,
         'installed_version' => '9.7.0',
         'current_minor' => '9.7.1',
         'next_minor' => NULL,
       ],
       'installed 9.7.0, minor support' => [
-        'updater' => 'automatic_updates.updater',
+        'updater' => Updater::class,
         'minor_support' => TRUE,
         'installed_version' => '9.7.0',
         'current_minor' => '9.7.1',
         'next_minor' => '9.8.2',
       ],
       'installed 9.7.2, no minor support' => [
-        'updater' => 'automatic_updates.updater',
+        'updater' => Updater::class,
         'minor_support' => FALSE,
         'installed_version' => '9.7.2',
         'current_minor' => NULL,
         'next_minor' => NULL,
       ],
       'installed 9.7.2, minor support' => [
-        'updater' => 'automatic_updates.updater',
+        'updater' => Updater::class,
         'minor_support' => TRUE,
         'installed_version' => '9.7.2',
         'current_minor' => NULL,
         'next_minor' => '9.8.2',
       ],
       'cron, installed 9.8.0, no minor support' => [
-        'updater' => 'automatic_updates.cron_updater',
+        'updater' => CronUpdater::class,
         'minor_support' => FALSE,
         'installed_version' => '9.8.0',
         'current_minor' => '9.8.1',
         'next_minor' => NULL,
       ],
       'cron, installed 9.8.0, minor support' => [
-        'updater' => 'automatic_updates.cron_updater',
+        'updater' => CronUpdater::class,
         'minor_support' => TRUE,
         'installed_version' => '9.8.0',
         'current_minor' => '9.8.1',
         'next_minor' => NULL,
       ],
       'cron, installed 9.7.0, no minor support' => [
-        'updater' => 'automatic_updates.cron_updater',
+        'updater' => CronUpdater::class,
         'minor_support' => FALSE,
         'installed_version' => '9.7.0',
         'current_minor' => '9.7.1',
         'next_minor' => NULL,
       ],
       'cron, installed 9.7.0, minor support' => [
-        'updater' => 'automatic_updates.cron_updater',
+        'updater' => CronUpdater::class,
         'minor_support' => TRUE,
         'installed_version' => '9.7.0',
         'current_minor' => '9.7.1',
         'next_minor' => NULL,
       ],
       'cron, installed 9.7.2, no minor support' => [
-        'updater' => 'automatic_updates.cron_updater',
+        'updater' => CronUpdater::class,
         'minor_support' => FALSE,
         'installed_version' => '9.7.2',
         'current_minor' => NULL,
         'next_minor' => NULL,
       ],
       'cron, installed 9.7.2, minor support' => [
-        'updater' => 'automatic_updates.cron_updater',
+        'updater' => CronUpdater::class,
         'minor_support' => TRUE,
         'installed_version' => '9.7.2',
         'current_minor' => NULL,
@@ -148,9 +151,7 @@ class ReleaseChooserTest extends AutomaticUpdatesKernelTestBase {
   public function testReleases(string $updater_service, bool $minor_support, string $installed_version, ?string $current_minor, ?string $next_minor): void {
     $this->setCoreVersion($installed_version);
     $this->config('automatic_updates.settings')->set('allow_core_minor_updates', $minor_support)->save();
-    /** @var \Drupal\automatic_updates\ReleaseChooser $chooser */
-    $chooser = $this->container->get('automatic_updates.release_chooser');
-    /** @var \Drupal\automatic_updates\Updater $updater */
+    $chooser = $this->container->get(ReleaseChooser::class);
     $updater = $this->container->get($updater_service);
     $this->assertReleaseVersion($current_minor, $chooser->getLatestInInstalledMinor($updater));
     $this->assertReleaseVersion($next_minor, $chooser->getLatestInNextMinor($updater));
diff --git a/tests/src/Kernel/StatusCheck/CronFrequencyValidatorTest.php b/tests/src/Kernel/StatusCheck/CronFrequencyValidatorTest.php
index 762e326c2dde1f5d1ebe405d670d54e541e974f3..cf3c459c84c18994ed97ea3b589f22ae22f6ef2c 100644
--- a/tests/src/Kernel/StatusCheck/CronFrequencyValidatorTest.php
+++ b/tests/src/Kernel/StatusCheck/CronFrequencyValidatorTest.php
@@ -49,7 +49,7 @@ class CronFrequencyValidatorTest extends AutomaticUpdatesKernelTestBase {
       $this->container->get('module_handler'),
       $this->container->get('state'),
       $this->container->get('datetime.time'),
-      $this->container->get('automatic_updates.cron_updater'),
+      $this->container->get(CronUpdater::class),
       $this->container->get('lock')
     ) extends CronFrequencyValidator {
 
diff --git a/tests/src/Kernel/StatusCheck/RequestedUpdateValidatorTest.php b/tests/src/Kernel/StatusCheck/RequestedUpdateValidatorTest.php
index c75800ac54d464709eba4c5996789225fab93948..c412f4c92ddfa052b5953cd9f5e7d0b7e41c3963 100644
--- a/tests/src/Kernel/StatusCheck/RequestedUpdateValidatorTest.php
+++ b/tests/src/Kernel/StatusCheck/RequestedUpdateValidatorTest.php
@@ -4,6 +4,7 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\automatic_updates\Kernel\StatusCheck;
 
+use Drupal\automatic_updates\Updater;
 use Drupal\package_manager\Exception\StageEventException;
 use Drupal\package_manager\ValidationResult;
 use Drupal\Tests\automatic_updates\Kernel\AutomaticUpdatesKernelTestBase;
@@ -39,8 +40,7 @@ class RequestedUpdateValidatorTest extends AutomaticUpdatesKernelTestBase {
     ]);
     $this->container->get('module_installer')->install(['automatic_updates']);
 
-    /** @var \Drupal\automatic_updates\Updater $updater */
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
 
@@ -72,8 +72,7 @@ class RequestedUpdateValidatorTest extends AutomaticUpdatesKernelTestBase {
     ]);
     $this->container->get('module_installer')->install(['automatic_updates']);
 
-    /** @var \Drupal\automatic_updates\Updater $updater */
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
     $this->expectException(StageEventException::class);
diff --git a/tests/src/Kernel/StatusCheck/ScaffoldFilePermissionsValidatorTest.php b/tests/src/Kernel/StatusCheck/ScaffoldFilePermissionsValidatorTest.php
index 0c3ce3bfa6ecd3406fe9519d7c53f8b7857c4cf9..4fad51177181a2602ea90b803fb3dec8076772e7 100644
--- a/tests/src/Kernel/StatusCheck/ScaffoldFilePermissionsValidatorTest.php
+++ b/tests/src/Kernel/StatusCheck/ScaffoldFilePermissionsValidatorTest.php
@@ -4,6 +4,7 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\automatic_updates\Kernel\StatusCheck;
 
+use Drupal\automatic_updates\Updater;
 use Drupal\fixture_manipulator\ActiveFixtureManipulator;
 use Drupal\package_manager\Exception\ApplyFailedException;
 use Drupal\package_manager\Exception\StageEventException;
@@ -36,7 +37,7 @@ class ScaffoldFilePermissionsValidatorTest extends AutomaticUpdatesKernelTestBas
   protected function setUp(): void {
     parent::setUp();
 
-    $this->activeDir = $this->container->get('package_manager.path_locator')
+    $this->activeDir = $this->container->get(PathLocator::class)
       ->getProjectRoot();
   }
 
@@ -120,7 +121,7 @@ class ScaffoldFilePermissionsValidatorTest extends AutomaticUpdatesKernelTestBas
     $this->assertCheckerResultsFromManager($expected_results, TRUE);
 
     try {
-      $this->container->get('automatic_updates.updater')
+      $this->container->get(Updater::class)
         ->begin(['drupal' => '9.8.1']);
 
       // If no exception was thrown, ensure that we weren't expecting an error.
@@ -328,7 +329,7 @@ class ScaffoldFilePermissionsValidatorTest extends AutomaticUpdatesKernelTestBas
     touch($this->activeDir . '/sites/default/deleted.txt');
     touch($this->activeDir . '/foo.txt');
 
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
 
diff --git a/tests/src/Kernel/StatusCheck/StagedDatabaseUpdateValidatorTest.php b/tests/src/Kernel/StatusCheck/StagedDatabaseUpdateValidatorTest.php
index 5cf5b43f349c059e0fe01286b5a00a3058243399..2bffc504a9059b528e5aaa7d476a47d757ec17f4 100644
--- a/tests/src/Kernel/StatusCheck/StagedDatabaseUpdateValidatorTest.php
+++ b/tests/src/Kernel/StatusCheck/StagedDatabaseUpdateValidatorTest.php
@@ -6,6 +6,7 @@ namespace Drupal\Tests\automatic_updates\Kernel\StatusCheck;
 
 use Drupal\Core\Logger\RfcLogLevel;
 use Drupal\package_manager\Event\PreApplyEvent;
+use Drupal\package_manager\PathLocator;
 use Drupal\Tests\automatic_updates\Kernel\AutomaticUpdatesKernelTestBase;
 use ColinODell\PsrTestLogger\TestLogger;
 
@@ -59,8 +60,7 @@ class StagedDatabaseUpdateValidatorTest extends AutomaticUpdatesKernelTestBase {
 
     // Ensure that all the extensions we're testing with have database update
     // files in the active directory.
-    $active_dir = $this->container->get('package_manager.path_locator')
-      ->getProjectRoot();
+    $active_dir = $this->container->get(PathLocator::class)->getProjectRoot();
 
     foreach ($this->extensions as $extension_name => $extension_path) {
       $extension_path = $active_dir . '/' . $extension_path;
@@ -155,7 +155,7 @@ class StagedDatabaseUpdateValidatorTest extends AutomaticUpdatesKernelTestBase {
   public function testFileAdded(string $suffix): void {
     $this->getStageFixtureManipulator()->setCorePackageVersion('9.8.1');
     $listener = function () use ($suffix): void {
-      $active_dir = $this->container->get('package_manager.path_locator')
+      $active_dir = $this->container->get(PathLocator::class)
         ->getProjectRoot();
 
       foreach ($this->extensions as $name => $path) {
diff --git a/tests/src/Kernel/StatusCheck/StagedProjectsValidatorTest.php b/tests/src/Kernel/StatusCheck/StagedProjectsValidatorTest.php
index bf92f74c33b34121dfa08fe794b676eaeb68ef0c..b7abd13bbfd19326b6eeb0f7ca8e6a360ab3bbf5 100644
--- a/tests/src/Kernel/StatusCheck/StagedProjectsValidatorTest.php
+++ b/tests/src/Kernel/StatusCheck/StagedProjectsValidatorTest.php
@@ -4,9 +4,12 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\automatic_updates\Kernel\StatusCheck;
 
+use Drupal\automatic_updates\Updater;
+use Drupal\automatic_updates\Validator\StagedProjectsValidator;
 use Drupal\fixture_manipulator\ActiveFixtureManipulator;
 use Drupal\package_manager\Event\PreApplyEvent;
 use Drupal\package_manager\Exception\StageEventException;
+use Drupal\package_manager\PathLocator;
 use Drupal\package_manager\ValidationResult;
 use Drupal\Tests\automatic_updates\Kernel\AutomaticUpdatesKernelTestBase;
 
@@ -36,7 +39,7 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
    * Tests that exceptions are turned into validation errors.
    */
   public function testEventConsumesExceptionResults(): void {
-    $composer_json = $this->container->get('package_manager.path_locator')
+    $composer_json = $this->container->get(PathLocator::class)
       ->getProjectRoot();
     $composer_json .= '/composer.json';
 
@@ -44,7 +47,7 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
       unlink($composer_json);
       // Directly invoke the validator under test, which should raise a
       // validation error.
-      $this->container->get('automatic_updates.staged_projects_validator')
+      $this->container->get(StagedProjectsValidator::class)
         ->validateStagedProjects($event);
       // Prevent any other event subscribers from running, since they might try
       // to read the file we just deleted.
@@ -52,8 +55,7 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
     };
     $this->addEventTestListener($listener);
 
-    /** @var \Drupal\automatic_updates\Updater $updater */
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
 
@@ -140,7 +142,7 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
     ];
     $error = ValidationResult::createError($messages, t('The update cannot proceed because the following Drupal projects were installed during the update.'));
 
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
     try {
@@ -212,7 +214,7 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
       t("theme 'drupal/test_theme' removed."),
     ];
     $error = ValidationResult::createError($messages, t('The update cannot proceed because the following Drupal projects were removed during the update.'));
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
     try {
@@ -271,7 +273,7 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
       t("module 'drupal/test-module' from 1.3.0 to 1.3.1."),
     ];
     $error = ValidationResult::createError($messages, t('The update cannot proceed because the following Drupal projects were unexpectedly updated. Only Drupal Core updates are currently supported.'));
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
 
@@ -352,7 +354,7 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
       ->removePackage('other/removed')
       ->removePackage('other/dev-removed', TRUE);
 
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
     $updater->apply();
diff --git a/tests/src/Kernel/StatusCheck/StatusCheckerTest.php b/tests/src/Kernel/StatusCheck/StatusCheckerTest.php
index 89a7e583a87e19316bbe9e2264707d4c428616f8..3d0e4ec99558b3aa8be377e8268f38fc992d6373 100644
--- a/tests/src/Kernel/StatusCheck/StatusCheckerTest.php
+++ b/tests/src/Kernel/StatusCheck/StatusCheckerTest.php
@@ -6,6 +6,9 @@ namespace Drupal\Tests\automatic_updates\Kernel\StatusCheck;
 
 use Drupal\automatic_updates\CronUpdater;
 use Drupal\automatic_updates\Updater;
+use Drupal\automatic_updates\Validation\StatusChecker;
+use Drupal\automatic_updates\Validator\ScaffoldFilePermissionsValidator;
+use Drupal\automatic_updates\Validator\StagedProjectsValidator;
 use Drupal\automatic_updates_test\EventSubscriber\TestSubscriber1;
 use Drupal\automatic_updates_test2\EventSubscriber\TestSubscriber2;
 use Drupal\package_manager\Event\StatusCheckEvent;
@@ -173,7 +176,7 @@ class StatusCheckerTest extends AutomaticUpdatesKernelTestBase {
 
     $unexpected_results = [$this->createValidationResult(SystemManager::REQUIREMENT_ERROR)];
     TestSubscriber1::setTestResult($unexpected_results, StatusCheckEvent::class);
-    $manager = $this->container->get('automatic_updates.status_checker');
+    $manager = $this->container->get(StatusChecker::class);
     // Confirm that the new results will not be returned because the checkers
     // will not be run.
     $manager->runIfNoStoredResults();
@@ -205,13 +208,13 @@ class StatusCheckerTest extends AutomaticUpdatesKernelTestBase {
       $stage = $event->stage;
     };
     $this->addEventTestListener($listener, StatusCheckEvent::class);
-    $this->container->get('automatic_updates.status_checker')->run();
+    $this->container->get(StatusChecker::class)->run();
     // By default, updates will be enabled on cron.
     $this->assertInstanceOf(CronUpdater::class, $stage);
     $this->config('automatic_updates.settings')
       ->set('cron', CronUpdater::DISABLED)
       ->save();
-    $this->container->get('automatic_updates.status_checker')->run();
+    $this->container->get(StatusChecker::class)->run();
     $this->assertInstanceOf(Updater::class, $stage);
   }
 
@@ -232,8 +235,7 @@ class StatusCheckerTest extends AutomaticUpdatesKernelTestBase {
     TestSubscriber1::setTestResult($results, StatusCheckEvent::class);
 
     // Ensure that the validation manager collects the warning.
-    /** @var \Drupal\automatic_updates\Validation\StatusChecker $manager */
-    $manager = $this->container->get('automatic_updates.status_checker')
+    $manager = $this->container->get(StatusChecker::class)
       ->run();
     $this->assertValidationResultsEqual($results, $manager->getResults());
     TestSubscriber1::setTestResult(NULL, StatusCheckEvent::class);
@@ -246,14 +248,13 @@ class StatusCheckerTest extends AutomaticUpdatesKernelTestBase {
     // will make these validators complain that there is no actual Composer data
     // for them to inspect.
     $validators = array_map([$this->container, 'get'], [
-      'automatic_updates.staged_projects_validator',
-      'automatic_updates.validator.scaffold_file_permissions',
+      StagedProjectsValidator::class,
+      ScaffoldFilePermissionsValidator::class,
     ]);
     $event_dispatcher = $this->container->get('event_dispatcher');
     array_walk($validators, [$event_dispatcher, 'removeSubscriber']);
 
-    /** @var \Drupal\automatic_updates\Updater $updater */
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
     $updater->apply();
diff --git a/tests/src/Kernel/StatusCheck/VersionPolicyValidatorTest.php b/tests/src/Kernel/StatusCheck/VersionPolicyValidatorTest.php
index 8b9e3d23ccce36146bc67ae67e1ee6cca9722489..280e1a49ceb52666fd1596015543d9ad958a9105 100644
--- a/tests/src/Kernel/StatusCheck/VersionPolicyValidatorTest.php
+++ b/tests/src/Kernel/StatusCheck/VersionPolicyValidatorTest.php
@@ -5,6 +5,7 @@ declare(strict_types = 1);
 namespace Drupal\Tests\automatic_updates\Kernel\StatusCheck;
 
 use Drupal\automatic_updates\CronUpdater;
+use Drupal\automatic_updates\Updater;
 use Drupal\fixture_manipulator\ActiveFixtureManipulator;
 use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\Exception\StageEventException;
@@ -306,8 +307,7 @@ class VersionPolicyValidatorTest extends AutomaticUpdatesKernelTestBase {
       ->set('allow_core_minor_updates', $allow_minor_updates)
       ->save();
 
-    /** @var \Drupal\automatic_updates\Updater $updater */
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
 
     try {
       $updater->begin($project_versions);
@@ -408,7 +408,7 @@ class VersionPolicyValidatorTest extends AutomaticUpdatesKernelTestBase {
 
     $this->expectException(StageException::class);
     $this->expectExceptionMessage('The target version of Drupal core could not be determined.');
-    $this->container->get('automatic_updates.updater')
+    $this->container->get(Updater::class)
       ->begin(['drupal' => '9.8.1']);
   }
 
diff --git a/tests/src/Kernel/UpdaterTest.php b/tests/src/Kernel/UpdaterTest.php
index f6cc0710caa4ec5ec87d434e6b7abb21fb67e6bb..9fd86b441f39e2f991d1307e9947aa0be61d4dd0 100644
--- a/tests/src/Kernel/UpdaterTest.php
+++ b/tests/src/Kernel/UpdaterTest.php
@@ -4,6 +4,7 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\automatic_updates\Kernel;
 
+use Drupal\automatic_updates\Updater;
 use Drupal\package_manager\Exception\ApplyFailedException;
 use Drupal\package_manager\Exception\StageException;
 use Drupal\package_manager_bypass\LoggingCommitter;
@@ -51,7 +52,7 @@ class UpdaterTest extends AutomaticUpdatesKernelTestBase {
     $user = $this->createUser([], NULL, TRUE, ['uid' => 2]);
     $this->setCurrentUser($user);
 
-    $id = $this->container->get('automatic_updates.updater')->begin([
+    $id = $this->container->get(Updater::class)->begin([
       'drupal' => '9.8.1',
     ]);
     // Rebuild the container to ensure the package versions are persisted.
@@ -62,8 +63,7 @@ class UpdaterTest extends AutomaticUpdatesKernelTestBase {
     // Keep using the user account we created.
     $this->setCurrentUser($user);
 
-    /** @var \Drupal\automatic_updates\Updater $updater */
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
 
     // Ensure that the target package versions are what we expect.
     $expected_versions = [
@@ -123,7 +123,7 @@ class UpdaterTest extends AutomaticUpdatesKernelTestBase {
   public function testInvalidProjectVersions(array $project_versions): void {
     $this->expectException(\InvalidArgumentException::class);
     $this->expectExceptionMessage('Currently only updates to Drupal core are supported.');
-    $this->container->get('automatic_updates.updater')->begin($project_versions);
+    $this->container->get(Updater::class)->begin($project_versions);
   }
 
   /**
@@ -176,7 +176,7 @@ class UpdaterTest extends AutomaticUpdatesKernelTestBase {
   public function testCommitException(string $thrown_class, string $expected_class = NULL): void {
     $this->getStageFixtureManipulator()->setCorePackageVersion('9.8.1');
 
-    $updater = $this->container->get('automatic_updates.updater');
+    $updater = $this->container->get(Updater::class);
     $updater->begin([
       'drupal' => '9.8.1',
     ]);