diff --git a/automatic_updates_extensions/src/Validator/UpdateReleaseValidator.php b/automatic_updates_extensions/src/Validator/UpdateReleaseValidator.php
index b7cb6d48b2372bcb8e9fef766897f073bac78783..35d1725ece1e5115ec7714f9bac1aa0dbf3f0095 100644
--- a/automatic_updates_extensions/src/Validator/UpdateReleaseValidator.php
+++ b/automatic_updates_extensions/src/Validator/UpdateReleaseValidator.php
@@ -71,7 +71,7 @@ final class UpdateReleaseValidator implements EventSubscriberInterface {
    *   The event object.
    */
   public function checkRelease(PreCreateEvent $event): void {
-    $stage = $event->getStage();
+    $stage = $event->stage;
     // This check only works with Automatic Updates Extensions.
     if (!$stage instanceof ExtensionUpdater) {
       return;
diff --git a/package_manager/package_manager.api.php b/package_manager/package_manager.api.php
index 15b1c6a6011d3302f44ad143be920e455092fb3f..dd5d1af1bcdc023c819d1f237cfb2b326bddd22e 100644
--- a/package_manager/package_manager.api.php
+++ b/package_manager/package_manager.api.php
@@ -46,7 +46,7 @@
  * All stage events extend \Drupal\package_manager\Event\StageEvent, and all
  * pre-operation events extend
  * \Drupal\package_manager\Event\PreOperationStageEvent. All events have a
- * getStage() method which allows access to the stage object itself.
+ * $stage property which allows access to the stage object itself.
  *
  * The stage dispatches the following events during its life cycle:
  *
diff --git a/package_manager/src/Event/PostDestroyEvent.php b/package_manager/src/Event/PostDestroyEvent.php
index 3ad5da2beb1911af14ffeeab6e36b5c118e8c01f..e92e080f32bda8e57bf97146cfac42b677603f7d 100644
--- a/package_manager/src/Event/PostDestroyEvent.php
+++ b/package_manager/src/Event/PostDestroyEvent.php
@@ -7,7 +7,7 @@ namespace Drupal\package_manager\Event;
 /**
  * Event fired after the stage directory is destroyed.
  *
- * If the stage is being force destroyed, ::getStage() may return an object of a
+ * If the stage is being force destroyed, $this->stage may be an object of a
  * different class than the one that originally created the stage directory.
  *
  * @see \Drupal\package_manager\Stage::destroy()
diff --git a/package_manager/src/Event/PreDestroyEvent.php b/package_manager/src/Event/PreDestroyEvent.php
index d0b817ea1b9206a2ff3b88ffcf7274a58e15875c..bbef216abee86a18ca58175c47193832d82619f3 100644
--- a/package_manager/src/Event/PreDestroyEvent.php
+++ b/package_manager/src/Event/PreDestroyEvent.php
@@ -7,7 +7,7 @@ namespace Drupal\package_manager\Event;
 /**
  * Event fired before the stage directory is destroyed.
  *
- * If the stage is being force destroyed, ::getStage() may return an object of a
+ * If the stage is being force destroyed, $this->stage may be an object of a
  * different class than the one that originally created the stage directory.
  *
  * @see \Drupal\package_manager\Stage::destroy()
diff --git a/package_manager/src/Event/StageEvent.php b/package_manager/src/Event/StageEvent.php
index 5ce5111552c9baca5cd549d93030c7621ef4fa2c..292a843d3cece175b8bf316aeeda5c3bc7459d2a 100644
--- a/package_manager/src/Event/StageEvent.php
+++ b/package_manager/src/Event/StageEvent.php
@@ -18,17 +18,7 @@ abstract class StageEvent extends Event {
    * @param \Drupal\package_manager\Stage $stage
    *   The stage which fired this event.
    */
-  public function __construct(protected readonly Stage $stage) {
-  }
-
-  /**
-   * Returns the stage which fired this event.
-   *
-   * @return \Drupal\package_manager\Stage
-   *   The stage which fired this event.
-   */
-  public function getStage(): Stage {
-    return $this->stage;
+  public function __construct(public readonly Stage $stage) {
   }
 
 }
diff --git a/package_manager/src/PathExcluder/GitExcluder.php b/package_manager/src/PathExcluder/GitExcluder.php
index 807d7806592a9aed9203d09bba4e6d5cc22ce0d7..e997153dc9c084d07152ad46de9d9050af135b55 100644
--- a/package_manager/src/PathExcluder/GitExcluder.php
+++ b/package_manager/src/PathExcluder/GitExcluder.php
@@ -64,7 +64,7 @@ final class GitExcluder implements EventSubscriberInterface {
 
     $installed_paths = [];
     // Collect the paths of every installed package.
-    $installed_packages = $event->getStage()->getActiveComposer()->getInstalledPackagesData();
+    $installed_packages = $event->stage->getActiveComposer()->getInstalledPackagesData();
     foreach ($installed_packages as $package_data) {
       if (array_key_exists('install_path', $package_data) && !empty($package_data['install_path'])) {
         $installed_paths[] = $this->fileSystem->realpath($package_data['install_path']);
diff --git a/package_manager/src/PathExcluder/UnknownPathExcluder.php b/package_manager/src/PathExcluder/UnknownPathExcluder.php
index 30889dfb1aaf42a16636ac250cbb0be1ab5cc1cc..d0ae54dbc349e1ece78d238bc83805d84d49b0c7 100644
--- a/package_manager/src/PathExcluder/UnknownPathExcluder.php
+++ b/package_manager/src/PathExcluder/UnknownPathExcluder.php
@@ -62,7 +62,7 @@ final class UnknownPathExcluder implements EventSubscriberInterface {
     }
     $vendor_dir = $this->pathLocator->getVendorDirectory();
     // @todo Refactor in https://www.drupal.org/project/automatic_updates/issues/3334994.
-    $core_packages = $event->getStage()->getActiveComposer()->getCorePackages();
+    $core_packages = $event->stage->getActiveComposer()->getCorePackages();
     $scaffold_files_paths = $this->getScaffoldFiles($core_packages);
     $paths_in_project_root = glob("$project_root/*");
     $paths = [];
diff --git a/package_manager/src/Validator/ComposerPatchesValidator.php b/package_manager/src/Validator/ComposerPatchesValidator.php
index 2623fbe938b96e25522be4e8e59979dc6e9f6a14..4ef054b2d0babd411483968f87120bad34dde0c2 100644
--- a/package_manager/src/Validator/ComposerPatchesValidator.php
+++ b/package_manager/src/Validator/ComposerPatchesValidator.php
@@ -63,7 +63,7 @@ final class ComposerPatchesValidator implements EventSubscriberInterface {
   public function validatePatcher(PreOperationStageEvent $event): void {
     $messages = [];
 
-    $stage = $event->getStage();
+    $stage = $event->stage;
     [$plugin_installed_in_active, $is_active_root_requirement, $active_configuration_ok] = $this->computePatcherStatus($stage->getActiveComposer());
     try {
       [$plugin_installed_in_stage, $is_stage_root_requirement, $stage_configuration_ok] = $this->computePatcherStatus($stage->getStageComposer());
diff --git a/package_manager/src/Validator/ComposerPluginsValidator.php b/package_manager/src/Validator/ComposerPluginsValidator.php
index 13a5772f784e5e026974d9c3b3cb582cfa65848c..a2dc256d31664b61f11bfb328241606dedd52050 100644
--- a/package_manager/src/Validator/ComposerPluginsValidator.php
+++ b/package_manager/src/Validator/ComposerPluginsValidator.php
@@ -150,7 +150,7 @@ final class ComposerPluginsValidator implements EventSubscriberInterface {
    * {@inheritdoc}
    */
   public function validateStagePreOperation(PreOperationStageEvent $event): void {
-    $stage = $event->getStage();
+    $stage = $event->stage;
 
     // When about to copy the changes from the stage directory to the active
     // directory, use the stage directory's composer instead of the active.
diff --git a/package_manager/src/Validator/DuplicateInfoFileValidator.php b/package_manager/src/Validator/DuplicateInfoFileValidator.php
index a55141943b3c328e18893a144215d4701a01cb8b..c328aa7e9e13f3ac5c9a6b1e2a770960fa4077a0 100644
--- a/package_manager/src/Validator/DuplicateInfoFileValidator.php
+++ b/package_manager/src/Validator/DuplicateInfoFileValidator.php
@@ -36,7 +36,7 @@ class DuplicateInfoFileValidator implements EventSubscriberInterface {
    */
   public function validateDuplicateInfoFileInStage(PreApplyEvent $event): void {
     $active_dir = $this->pathLocator->getProjectRoot();
-    $stage_dir = $event->getStage()->getStageDirectory();
+    $stage_dir = $event->stage->getStageDirectory();
     $active_info_files = $this->findInfoFiles($active_dir);
     $stage_info_files = $this->findInfoFiles($stage_dir);
 
diff --git a/package_manager/src/Validator/LockFileValidator.php b/package_manager/src/Validator/LockFileValidator.php
index 61f45ff470ba127047ae6382392b1e828b2faf98..4dcbd6dc6deb2552fe3833c8fdd6429851490a7e 100644
--- a/package_manager/src/Validator/LockFileValidator.php
+++ b/package_manager/src/Validator/LockFileValidator.php
@@ -89,7 +89,7 @@ final class LockFileValidator implements EventSubscriberInterface {
    */
   public function validateStagePreOperation(PreOperationStageEvent $event): void {
     // Early return if the stage is not already created.
-    if ($event instanceof StatusCheckEvent && $event->getStage()->isAvailable()) {
+    if ($event instanceof StatusCheckEvent && $event->stage->isAvailable()) {
       return;
     }
 
@@ -113,7 +113,7 @@ final class LockFileValidator implements EventSubscriberInterface {
     // Don't allow staged changes to be applied if the staged lock file has no
     // apparent changes.
     if (empty($error) && $event instanceof PreApplyEvent) {
-      $stage_hash = $this->getLockFileHash($event->getStage()->getStageDirectory());
+      $stage_hash = $this->getLockFileHash($event->stage->getStageDirectory());
       if ($stage_hash && hash_equals($active_hash, $stage_hash)) {
         $error = $this->t('There are no pending Composer operations.');
       }
diff --git a/package_manager/src/Validator/OverwriteExistingPackagesValidator.php b/package_manager/src/Validator/OverwriteExistingPackagesValidator.php
index f98bde0a88f4d3ac3c75a1603fcc547511e53562..6ff40f32d74f41821a05feca4691f68614329ae4 100644
--- a/package_manager/src/Validator/OverwriteExistingPackagesValidator.php
+++ b/package_manager/src/Validator/OverwriteExistingPackagesValidator.php
@@ -52,7 +52,7 @@ final class OverwriteExistingPackagesValidator implements EventSubscriberInterfa
    * Validates that new installed packages don't overwrite existing directories.
    */
   public function validateStagePreOperation(PreOperationStageEvent $event): void {
-    $stage = $event->getStage();
+    $stage = $event->stage;
     $active_composer = $stage->getActiveComposer();
     $stage_composer = $stage->getStageComposer();
     $active_dir = $this->pathLocator->getProjectRoot();
diff --git a/package_manager/src/Validator/StagedDBUpdateValidator.php b/package_manager/src/Validator/StagedDBUpdateValidator.php
index cc5c0236245b788adc22baffbe8eb114401dc8b5..b6f37fa9659bdce510e3fdcf8fa2b5493643a14a 100644
--- a/package_manager/src/Validator/StagedDBUpdateValidator.php
+++ b/package_manager/src/Validator/StagedDBUpdateValidator.php
@@ -48,7 +48,7 @@ class StagedDBUpdateValidator implements EventSubscriberInterface {
    */
   public function checkForStagedDatabaseUpdates(StatusCheckEvent $event): void {
     try {
-      $stage_dir = $event->getStage()->getStageDirectory();
+      $stage_dir = $event->stage->getStageDirectory();
     }
     catch (\LogicException) {
       // Stage directory can't be determined, so there's nothing to validate.
diff --git a/package_manager/src/Validator/SupportedReleaseValidator.php b/package_manager/src/Validator/SupportedReleaseValidator.php
index 590bad483261e608733534d0725b67a2eadbaf86..d16336fd427a8e7343b8fe038b250be04a95cd8b 100644
--- a/package_manager/src/Validator/SupportedReleaseValidator.php
+++ b/package_manager/src/Validator/SupportedReleaseValidator.php
@@ -69,8 +69,8 @@ final class SupportedReleaseValidator implements EventSubscriberInterface {
    *   The event object.
    */
   public function checkStagedReleases(PreApplyEvent $event): void {
-    $active = $event->getStage()->getActiveComposer();
-    $staged = $event->getStage()->getStageComposer();
+    $active = $event->stage->getActiveComposer();
+    $staged = $event->stage->getStageComposer();
     $updated_packages = array_merge(
       $staged->getPackagesNotIn($active),
       $staged->getPackagesWithDifferentVersionsIn($active)
diff --git a/package_manager/src/Validator/SymlinkValidator.php b/package_manager/src/Validator/SymlinkValidator.php
index 9e52a0e3aacff0fe0e89d036e3386da92700d6f0..3fd28881260ab30b244f80549ce30bd1bc0390f5 100644
--- a/package_manager/src/Validator/SymlinkValidator.php
+++ b/package_manager/src/Validator/SymlinkValidator.php
@@ -64,7 +64,7 @@ class SymlinkValidator implements EventSubscriberInterface {
     // as the stage directory. The precondition itself doesn't care if the
     // directory actually exists or not.
     try {
-      $stage_dir = $event->getStage()->getStageDirectory();
+      $stage_dir = $event->stage->getStageDirectory();
     }
     catch (\LogicException) {
       $stage_dir = __DIR__;
diff --git a/package_manager/tests/modules/package_manager_test_event_logger/src/EventSubscriber/EventLogSubscriber.php b/package_manager/tests/modules/package_manager_test_event_logger/src/EventSubscriber/EventLogSubscriber.php
index 3d597f948f11940f85b3f8ea80eafaa61def75f9..a22ce73ab2293c9a24094b30a577b7af0baefe92 100644
--- a/package_manager/tests/modules/package_manager_test_event_logger/src/EventSubscriber/EventLogSubscriber.php
+++ b/package_manager/tests/modules/package_manager_test_event_logger/src/EventSubscriber/EventLogSubscriber.php
@@ -27,7 +27,7 @@ final class EventLogSubscriber implements EventSubscriberInterface {
    *   The event object.
    */
   public function logEventInfo(StageEvent $event): void {
-    \Drupal::logger('package_manager_test_event_logger')->info('package_manager_test_event_logger-start: Event: ' . get_class($event) . ', Stage instance of: ' . get_class($event->getStage()) . ':package_manager_test_event_logger-end');
+    \Drupal::logger('package_manager_test_event_logger')->info('package_manager_test_event_logger-start: Event: ' . get_class($event) . ', Stage instance of: ' . get_class($event->stage) . ':package_manager_test_event_logger-end');
   }
 
   /**
diff --git a/package_manager/tests/modules/package_manager_test_validation/src/CollectIgnoredPathsFailValidator.php b/package_manager/tests/modules/package_manager_test_validation/src/CollectIgnoredPathsFailValidator.php
index 425df19ba829a9f7d8082dbc2f1b8d52f5f77ead..1e985328841add23884bd8b7dc472d5411b94bdd 100644
--- a/package_manager/tests/modules/package_manager_test_validation/src/CollectIgnoredPathsFailValidator.php
+++ b/package_manager/tests/modules/package_manager_test_validation/src/CollectIgnoredPathsFailValidator.php
@@ -25,7 +25,7 @@ class CollectIgnoredPathsFailValidator implements EventSubscriberInterface {
    * Fails when composer.json is deleted to simulate failure on excluders.
    */
   public function callToComposer(CollectIgnoredPathsEvent $event) {
-    $event->getStage()->getActiveComposer();
+    $event->stage->getActiveComposer();
   }
 
 }
diff --git a/package_manager/tests/src/Kernel/StageEventsTest.php b/package_manager/tests/src/Kernel/StageEventsTest.php
index ec26fee40c48a1c36b485b9cc68a08dc41326213..425acbe59b81f26c301ffaba2101b45d13248679 100644
--- a/package_manager/tests/src/Kernel/StageEventsTest.php
+++ b/package_manager/tests/src/Kernel/StageEventsTest.php
@@ -87,7 +87,7 @@ class StageEventsTest extends PackageManagerKernelTestBase implements EventSubsc
     array_push($this->events, get_class($event));
 
     // The event should have a reference to the stage which fired it.
-    $this->assertSame($event->getStage(), $this->stage);
+    $this->assertSame($event->stage, $this->stage);
   }
 
   /**
diff --git a/package_manager/tests/src/Kernel/StageOwnershipTest.php b/package_manager/tests/src/Kernel/StageOwnershipTest.php
index 75e0ab8b90c5fe2146c2c2c27c29c9d104d40696..27e5c310a6da3964c096b379beb8ad71380c95b8 100644
--- a/package_manager/tests/src/Kernel/StageOwnershipTest.php
+++ b/package_manager/tests/src/Kernel/StageOwnershipTest.php
@@ -323,7 +323,7 @@ class StageOwnershipTest extends PackageManagerKernelTestBase {
     // the stage was made available, despite the file system error.
     $stage_available = NULL;
     $this->addEventTestListener(function (PostDestroyEvent $event) use (&$stage_available): void {
-      $stage_available = $event->getStage()->isAvailable();
+      $stage_available = $event->stage->isAvailable();
     }, PostDestroyEvent::class);
     $stage->destroy();
     $this->assertTrue($stage_available);
diff --git a/package_manager/tests/src/Kernel/StageTest.php b/package_manager/tests/src/Kernel/StageTest.php
index 0264834b9a4cde715ae73f2ff02f49dc5d637c2f..09fe3c335cb4ef8e992383227dbff4f56a5f8b6f 100644
--- a/package_manager/tests/src/Kernel/StageTest.php
+++ b/package_manager/tests/src/Kernel/StageTest.php
@@ -184,7 +184,7 @@ class StageTest extends PackageManagerKernelTestBase {
       // handling another event. The only reason we're doing it here is to
       // simulate an attempt to destroy the stage while it's being applied, for
       // testing purposes.
-      $event->getStage()->destroy($force);
+      $event->stage->destroy($force);
       // @see \PhpTuf\ComposerStager\Infrastructure\Service\Precondition\StagingDirDoesNotExist
       LoggingCommitter::setException(
         new PreconditionException(
@@ -219,7 +219,7 @@ class StageTest extends PackageManagerKernelTestBase {
    */
   public function testUninstallModuleDuringApply(): void {
     $listener = function (PreApplyEvent $event): void {
-      $this->assertTrue($event->getStage()->isApplying());
+      $this->assertTrue($event->stage->isApplying());
 
       // Trying to uninstall any module while the stage is being applied should
       // result in a module uninstall validation error.
diff --git a/package_manager/tests/src/Kernel/StatusCheckTraitTest.php b/package_manager/tests/src/Kernel/StatusCheckTraitTest.php
index e03c4edf54d094cbd491652f1ae29179184d9c77..f675b5a6e907ba8e197705629cae62eff4960aed 100644
--- a/package_manager/tests/src/Kernel/StatusCheckTraitTest.php
+++ b/package_manager/tests/src/Kernel/StatusCheckTraitTest.php
@@ -44,7 +44,7 @@ class StatusCheckTraitTest extends PackageManagerKernelTestBase {
     unlink($composer_json_path);
     $this->addEventTestListener(function (CollectIgnoredPathsEvent $event): void {
       // Try to get composer.
-      $event->getStage()->getActiveComposer();
+      $event->stage->getActiveComposer();
     }, CollectIgnoredPathsEvent::class);
     $results = $this->runStatusCheck($this->createStage(), $this->container->get('event_dispatcher'));
     $expected_results = [
diff --git a/src/Validator/CronFrequencyValidator.php b/src/Validator/CronFrequencyValidator.php
index 622d6880081af8011bc3d2220d54bc655831bef1..2d669e42e1fbf0b3f7e8b9e8c733a51f1b9748db 100644
--- a/src/Validator/CronFrequencyValidator.php
+++ b/src/Validator/CronFrequencyValidator.php
@@ -87,7 +87,7 @@ class CronFrequencyValidator implements EventSubscriberInterface {
    */
   public function checkCronFrequency(StatusCheckEvent $event): void {
     // We only want to do this check if the stage belongs to Automatic Updates.
-    if (!$event->getStage() instanceof CronUpdater) {
+    if (!$event->stage instanceof CronUpdater) {
       return;
     }
     // If automatic updates are disabled during cron, there's nothing we need
diff --git a/src/Validator/CronServerValidator.php b/src/Validator/CronServerValidator.php
index b7bfd67b1c646fb5a62d958ff9ae0149ca7d71b4..80ebc17434c81ba55573d9a293a23b0d227a4138 100644
--- a/src/Validator/CronServerValidator.php
+++ b/src/Validator/CronServerValidator.php
@@ -70,7 +70,7 @@ final class CronServerValidator implements EventSubscriberInterface {
    *   The event object.
    */
   public function checkServer(PreOperationStageEvent $event): void {
-    if (!$event->getStage() instanceof CronUpdater) {
+    if (!$event->stage instanceof CronUpdater) {
       return;
     }
 
diff --git a/src/Validator/RequestedUpdateValidator.php b/src/Validator/RequestedUpdateValidator.php
index 0ef3f355f5dbbc5205bc0f66d0b370941824af8f..7ac68e3a6dabb896d3b8818019b212df14710e44 100644
--- a/src/Validator/RequestedUpdateValidator.php
+++ b/src/Validator/RequestedUpdateValidator.php
@@ -24,7 +24,7 @@ class RequestedUpdateValidator implements EventSubscriberInterface {
    *   The pre-apply event.
    */
   public function checkRequestedStagedVersion(PreApplyEvent $event): void {
-    $stage = $event->getStage();
+    $stage = $event->stage;
     if (!($stage instanceof Updater)) {
       return;
     }
diff --git a/src/Validator/ScaffoldFilePermissionsValidator.php b/src/Validator/ScaffoldFilePermissionsValidator.php
index 5a8dd2db662d57830a5f4f7a83fd7ae102cf7801..6829f365459c3b8fb043fe83b31de138a0aad3e9 100644
--- a/src/Validator/ScaffoldFilePermissionsValidator.php
+++ b/src/Validator/ScaffoldFilePermissionsValidator.php
@@ -40,7 +40,7 @@ final class ScaffoldFilePermissionsValidator implements EventSubscriberInterface
    */
   public function validateStagePreOperation(PreOperationStageEvent $event): void {
     // We only want to do this check if the stage belongs to Automatic Updates.
-    if (!$event->getStage() instanceof Updater) {
+    if (!$event->stage instanceof Updater) {
       return;
     }
     $paths = [];
@@ -53,7 +53,7 @@ final class ScaffoldFilePermissionsValidator implements EventSubscriberInterface
     }
     $site_dir .= '/sites/default';
 
-    $stage = $event->getStage();
+    $stage = $event->stage;
     $active_scaffold_files = $this->getDefaultSiteFilesFromScaffold($stage->getActiveComposer());
 
     // If the active directory and stage directory have different files
diff --git a/src/Validator/StagedDatabaseUpdateValidator.php b/src/Validator/StagedDatabaseUpdateValidator.php
index f50234bcdfcffd5b18d5c5256d06e0ab57be604d..2662c40666dcc30a4ca0ce9095bda5726d840cfa 100644
--- a/src/Validator/StagedDatabaseUpdateValidator.php
+++ b/src/Validator/StagedDatabaseUpdateValidator.php
@@ -38,7 +38,7 @@ class StagedDatabaseUpdateValidator implements EventSubscriberInterface {
    *   The event object.
    */
   public function checkUpdateHooks(PreApplyEvent $event): void {
-    $stage = $event->getStage();
+    $stage = $event->stage;
     if (!$stage instanceof CronUpdater) {
       return;
     }
diff --git a/src/Validator/StagedProjectsValidator.php b/src/Validator/StagedProjectsValidator.php
index 08faf9a2c52c328b36191b061bd43071a22ef59e..e7863e053132f4fc1c75f2fe857c02c8806a0007 100644
--- a/src/Validator/StagedProjectsValidator.php
+++ b/src/Validator/StagedProjectsValidator.php
@@ -29,7 +29,7 @@ final class StagedProjectsValidator implements EventSubscriberInterface {
    *   The event object.
    */
   public function validateStagedProjects(PreApplyEvent $event): void {
-    $stage = $event->getStage();
+    $stage = $event->stage;
     // We only want to do this check if the stage belongs to Automatic Updates.
     if (!$stage instanceof Updater) {
       return;
diff --git a/src/Validator/VersionPolicyValidator.php b/src/Validator/VersionPolicyValidator.php
index cb4e31b6926fc65d0dda51bd538440df408f0e38..63b707c7f16dce2b9204df57bca1a125555defe1 100644
--- a/src/Validator/VersionPolicyValidator.php
+++ b/src/Validator/VersionPolicyValidator.php
@@ -132,7 +132,7 @@ final class VersionPolicyValidator implements EventSubscriberInterface {
    *   The event object.
    */
   public function checkVersion(StageEvent $event): void {
-    $stage = $event->getStage();
+    $stage = $event->stage;
 
     // Only do these checks for automatic updates.
     if (!$stage instanceof Updater) {
@@ -177,7 +177,7 @@ final class VersionPolicyValidator implements EventSubscriberInterface {
    *   Drupal core packages.
    */
   private function getTargetVersion(StageEvent $event): ?string {
-    $updater = $event->getStage();
+    $updater = $event->stage;
 
     // If we're not doing a status check, we expect the stage to have been
     // created, and the requested package versions recorded.
diff --git a/src/Validator/XdebugValidator.php b/src/Validator/XdebugValidator.php
index f8b66288d1d134d3e53d866d3e7a04823431527a..2994e18ab2f01e9a8f404967cd427c8e5ef4ad3b 100644
--- a/src/Validator/XdebugValidator.php
+++ b/src/Validator/XdebugValidator.php
@@ -29,7 +29,7 @@ final class XdebugValidator extends PackageManagerXdebugValidator implements Eve
    *   The event object.
    */
   public function validateXdebugOff(PreOperationStageEvent $event): void {
-    $stage = $event->getStage();
+    $stage = $event->stage;
     $warning = $this->checkForXdebug();
 
     if ($warning) {
diff --git a/tests/src/Kernel/CronUpdaterTest.php b/tests/src/Kernel/CronUpdaterTest.php
index a2160606359e55993385da29965ae084a7e8ea22..d0f80524d64adc9fb3476e4a8d39b82d8b909287 100644
--- a/tests/src/Kernel/CronUpdaterTest.php
+++ b/tests/src/Kernel/CronUpdaterTest.php
@@ -359,7 +359,7 @@ class CronUpdaterTest extends AutomaticUpdatesKernelTestBase {
     $listener = function (PostRequireEvent $event) use (&$cron_stage_dir, $original_stage_directory): void {
       $this->assertDirectoryDoesNotExist($original_stage_directory);
       $cron_stage_dir = $this->container->get('package_manager.stager')->getInvocationArguments()[0][1]->resolve();
-      $this->assertSame($event->getStage()->getStageDirectory(), $cron_stage_dir);
+      $this->assertSame($event->stage->getStageDirectory(), $cron_stage_dir);
       $this->assertDirectoryExists($cron_stage_dir);
     };
     $this->addEventTestListener($listener, PostRequireEvent::class);
@@ -396,7 +396,7 @@ class CronUpdaterTest extends AutomaticUpdatesKernelTestBase {
     $this->addEventTestListener(function (PreApplyEvent $event) use ($stop_error) {
       // Ensure the stage that is applying the operation is not the cron
       // updater.
-      $this->assertInstanceOf(TestStage::class, $event->getStage());
+      $this->assertInstanceOf(TestStage::class, $event->stage);
       $this->container->get('cron')->run();
       // We do not actually want to apply this operation it was just invoked to
       // allow cron to be  attempted.
diff --git a/tests/src/Kernel/StatusCheck/StagedDatabaseUpdateValidatorTest.php b/tests/src/Kernel/StatusCheck/StagedDatabaseUpdateValidatorTest.php
index 0ad80d316bbf16c5849f4fb1d537e7e572980301..5cf5b43f349c059e0fe01286b5a00a3058243399 100644
--- a/tests/src/Kernel/StatusCheck/StagedDatabaseUpdateValidatorTest.php
+++ b/tests/src/Kernel/StatusCheck/StagedDatabaseUpdateValidatorTest.php
@@ -109,7 +109,7 @@ class StagedDatabaseUpdateValidatorTest extends AutomaticUpdatesKernelTestBase {
   public function testFileDeleted(string $suffix): void {
     $this->getStageFixtureManipulator()->setCorePackageVersion('9.8.1');
     $listener = function (PreApplyEvent $event) use ($suffix): void {
-      $stage_dir = $event->getStage()->getStageDirectory();
+      $stage_dir = $event->stage->getStageDirectory();
       foreach ($this->extensions as $name => $path) {
         unlink("$stage_dir/$path/$name.$suffix");
       }
@@ -132,7 +132,7 @@ class StagedDatabaseUpdateValidatorTest extends AutomaticUpdatesKernelTestBase {
   public function testFileChanged(string $suffix): void {
     $this->getStageFixtureManipulator()->setCorePackageVersion('9.8.1');
     $listener = function (PreApplyEvent $event) use ($suffix): void {
-      $stage_dir = $event->getStage()->getStageDirectory();
+      $stage_dir = $event->stage->getStageDirectory();
       foreach ($this->extensions as $name => $path) {
         file_put_contents("$stage_dir/$path/$name.$suffix", $this->randomString());
       }
diff --git a/tests/src/Kernel/StatusCheck/StatusCheckerTest.php b/tests/src/Kernel/StatusCheck/StatusCheckerTest.php
index 9890d223c937e2b4cb896a4ee5aded7e1d1f96b2..89a7e583a87e19316bbe9e2264707d4c428616f8 100644
--- a/tests/src/Kernel/StatusCheck/StatusCheckerTest.php
+++ b/tests/src/Kernel/StatusCheck/StatusCheckerTest.php
@@ -202,7 +202,7 @@ class StatusCheckerTest extends AutomaticUpdatesKernelTestBase {
     $this->enableModules(['automatic_updates']);
     $stage = NULL;
     $listener = function (StatusCheckEvent $event) use (&$stage): void {
-      $stage = $event->getStage();
+      $stage = $event->stage;
     };
     $this->addEventTestListener($listener, StatusCheckEvent::class);
     $this->container->get('automatic_updates.status_checker')->run();
diff --git a/tests/src/Kernel/StatusCheck/VersionPolicyValidatorTest.php b/tests/src/Kernel/StatusCheck/VersionPolicyValidatorTest.php
index 2f82f8fced79b91f00d3d30a2a9ae5ca890cc4c8..d02a32db298127f2f9a81a079a4f027118281325 100644
--- a/tests/src/Kernel/StatusCheck/VersionPolicyValidatorTest.php
+++ b/tests/src/Kernel/StatusCheck/VersionPolicyValidatorTest.php
@@ -362,7 +362,7 @@ class VersionPolicyValidatorTest extends AutomaticUpdatesKernelTestBase {
     // Remove the stored package versions from the updater's metadata.
     $listener = function (PreCreateEvent $event): void {
       /** @var \Drupal\Tests\automatic_updates\Kernel\TestUpdater $updater */
-      $updater = $event->getStage();
+      $updater = $event->stage;
       $updater->setMetadata('packages', [
         'production' => [],
       ]);
@@ -381,7 +381,7 @@ class VersionPolicyValidatorTest extends AutomaticUpdatesKernelTestBase {
     $listener = function (PreCreateEvent $event): void {
       // We should have staged package versions.
       /** @var \Drupal\automatic_updates\Updater $updater */
-      $updater = $event->getStage();
+      $updater = $event->stage;
       $this->assertNotEmpty($updater->getPackageVersions());
 
       $active_dir = $this->container->get('package_manager.path_locator')