From b4cc1d3ecc5f024f90406357b2af43e51f09cf29 Mon Sep 17 00:00:00 2001
From: phenaproxima <phenaproxima@205645.no-reply.drupal.org>
Date: Thu, 30 Jun 2022 17:02:36 +0000
Subject: [PATCH] Issue #3293157 by phenaproxima, tedbow: Make everything
 internal

---
 .../src/EventSubscriber/UpdateDataSubscriber.php           | 7 ++++++-
 package_manager/src/ExecutableFinder.php                   | 7 ++++++-
 package_manager/src/FileSyncerFactory.php                  | 7 ++++++-
 package_manager/src/PackageManagerServiceProvider.php      | 7 ++++++-
 package_manager/src/PackageManagerUninstallValidator.php   | 7 ++++++-
 package_manager/src/PathExcluder/GitExcluder.php           | 7 ++++++-
 .../src/PathExcluder/SiteConfigurationExcluder.php         | 5 +++++
 package_manager/src/PathExcluder/SiteFilesExcluder.php     | 7 ++++++-
 .../src/PathExcluder/SqliteDatabaseExcluder.php            | 5 +++++
 package_manager/src/PathExcluder/TestSiteExcluder.php      | 7 ++++++-
 .../src/PathExcluder/VendorHardeningExcluder.php           | 7 ++++++-
 package_manager/src/ProcessFactory.php                     | 5 +++++
 package_manager/src/ValidationResult.php                   | 2 +-
 .../src/Validator/ComposerExecutableValidator.php          | 7 ++++++-
 .../src/Validator/ComposerSettingsValidator.php            | 7 ++++++-
 package_manager/src/Validator/DiskSpaceValidator.php       | 5 +++++
 package_manager/src/Validator/LockFileValidator.php        | 7 ++++++-
 package_manager/src/Validator/MultisiteValidator.php       | 7 ++++++-
 package_manager/src/Validator/PendingUpdatesValidator.php  | 7 ++++++-
 package_manager/src/Validator/SettingsValidator.php        | 7 ++++++-
 package_manager/src/Validator/SymlinkValidator.php         | 5 +++++
 .../src/Validator/WritableFileSystemValidator.php          | 5 +++++
 src/BatchProcessor.php                                     | 7 ++++++-
 src/Controller/ReadinessCheckerController.php              | 2 +-
 src/Controller/UpdateController.php                        | 2 +-
 src/EventSubscriber/ConfigSubscriber.php                   | 7 ++++++-
 src/Form/UpdateReady.php                                   | 4 ++--
 src/LegacyVersionUtility.php                               | 4 ++--
 src/ProjectInfo.php                                        | 6 ++++--
 src/ReleaseChooser.php                                     | 2 +-
 src/Routing/RouteSubscriber.php                            | 5 ++++-
 src/Validation/ReadinessTrait.php                          | 2 +-
 src/Validation/ReadinessValidationManager.php              | 3 +--
 src/Validator/CronFrequencyValidator.php                   | 5 +++--
 src/Validator/PackageManagerReadinessCheck.php             | 7 ++++---
 src/Validator/ScaffoldFilePermissionsValidator.php         | 7 ++++++-
 src/Validator/StagedDatabaseUpdateValidator.php            | 7 ++++---
 src/Validator/StagedProjectsValidator.php                  | 5 +++--
 src/Validator/VersionPolicy/ForbidDevSnapshot.php          | 2 +-
 src/Validator/VersionPolicy/ForbidDowngrade.php            | 2 +-
 src/Validator/VersionPolicy/ForbidMinorUpdates.php         | 2 +-
 src/Validator/VersionPolicy/MajorVersionMatch.php          | 2 +-
 src/Validator/VersionPolicy/MinorUpdatesEnabled.php        | 2 +-
 src/Validator/VersionPolicy/StableReleaseInstalled.php     | 2 +-
 src/Validator/VersionPolicy/SupportedBranchInstalled.php   | 2 +-
 src/Validator/VersionPolicy/TargetSecurityRelease.php      | 2 +-
 src/Validator/VersionPolicy/TargetVersionInstallable.php   | 2 +-
 src/Validator/VersionPolicy/TargetVersionStable.php        | 2 +-
 src/Validator/VersionPolicyValidator.php                   | 5 +++--
 src/Validator/XdebugValidator.php                          | 7 ++++---
 50 files changed, 187 insertions(+), 57 deletions(-)

diff --git a/package_manager/src/EventSubscriber/UpdateDataSubscriber.php b/package_manager/src/EventSubscriber/UpdateDataSubscriber.php
index 5b422b4be7..8d6490bcca 100644
--- a/package_manager/src/EventSubscriber/UpdateDataSubscriber.php
+++ b/package_manager/src/EventSubscriber/UpdateDataSubscriber.php
@@ -8,8 +8,13 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * Clears stale update data once staged changes have been applied.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class UpdateDataSubscriber implements EventSubscriberInterface {
+final class UpdateDataSubscriber implements EventSubscriberInterface {
 
   /**
    * The update manager service.
diff --git a/package_manager/src/ExecutableFinder.php b/package_manager/src/ExecutableFinder.php
index 05c03183d5..24da0ee57c 100644
--- a/package_manager/src/ExecutableFinder.php
+++ b/package_manager/src/ExecutableFinder.php
@@ -9,8 +9,13 @@ use Symfony\Component\Process\ExecutableFinder as SymfonyExecutableFinder;
 
 /**
  * An executable finder which looks for executable paths in configuration.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class ExecutableFinder implements ExecutableFinderInterface {
+final class ExecutableFinder implements ExecutableFinderInterface {
 
   /**
    * The decorated executable finder.
diff --git a/package_manager/src/FileSyncerFactory.php b/package_manager/src/FileSyncerFactory.php
index 98a28f545c..6d2d928206 100644
--- a/package_manager/src/FileSyncerFactory.php
+++ b/package_manager/src/FileSyncerFactory.php
@@ -11,8 +11,13 @@ use Symfony\Component\Process\ExecutableFinder;
 
 /**
  * A file syncer factory which creates a file syncer according to configuration.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class FileSyncerFactory {
+final class FileSyncerFactory {
 
   /**
    * The decorated file syncer factory.
diff --git a/package_manager/src/PackageManagerServiceProvider.php b/package_manager/src/PackageManagerServiceProvider.php
index 3d74d54d35..8e28cca14c 100644
--- a/package_manager/src/PackageManagerServiceProvider.php
+++ b/package_manager/src/PackageManagerServiceProvider.php
@@ -9,8 +9,13 @@ use Symfony\Component\DependencyInjection\Reference;
 
 /**
  * Defines dynamic container services for Package Manager.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class PackageManagerServiceProvider extends ServiceProviderBase {
+final class PackageManagerServiceProvider extends ServiceProviderBase {
 
   /**
    * {@inheritdoc}
diff --git a/package_manager/src/PackageManagerUninstallValidator.php b/package_manager/src/PackageManagerUninstallValidator.php
index dd9ab87607..ac3321dccc 100644
--- a/package_manager/src/PackageManagerUninstallValidator.php
+++ b/package_manager/src/PackageManagerUninstallValidator.php
@@ -9,8 +9,13 @@ use Symfony\Component\DependencyInjection\ContainerAwareTrait;
 
 /**
  * Prevents any module from being uninstalled if update is in process.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class PackageManagerUninstallValidator implements ModuleUninstallValidatorInterface, ContainerAwareInterface {
+final class PackageManagerUninstallValidator implements ModuleUninstallValidatorInterface, ContainerAwareInterface {
 
   use ContainerAwareTrait;
   use StringTranslationTrait;
diff --git a/package_manager/src/PathExcluder/GitExcluder.php b/package_manager/src/PathExcluder/GitExcluder.php
index b684a3af56..c713ddd03e 100644
--- a/package_manager/src/PathExcluder/GitExcluder.php
+++ b/package_manager/src/PathExcluder/GitExcluder.php
@@ -11,8 +11,13 @@ use Symfony\Component\Finder\Finder;
 
 /**
  * Excludes .git directories from staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class GitExcluder implements EventSubscriberInterface {
+final class GitExcluder implements EventSubscriberInterface {
 
   use PathExclusionsTrait;
 
diff --git a/package_manager/src/PathExcluder/SiteConfigurationExcluder.php b/package_manager/src/PathExcluder/SiteConfigurationExcluder.php
index 68aa30831e..9b626df17e 100644
--- a/package_manager/src/PathExcluder/SiteConfigurationExcluder.php
+++ b/package_manager/src/PathExcluder/SiteConfigurationExcluder.php
@@ -10,6 +10,11 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * Excludes site configuration files from staging areas.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class SiteConfigurationExcluder implements EventSubscriberInterface {
 
diff --git a/package_manager/src/PathExcluder/SiteFilesExcluder.php b/package_manager/src/PathExcluder/SiteFilesExcluder.php
index b15870195c..13b8ac640b 100644
--- a/package_manager/src/PathExcluder/SiteFilesExcluder.php
+++ b/package_manager/src/PathExcluder/SiteFilesExcluder.php
@@ -13,8 +13,13 @@ use Symfony\Component\Filesystem\Filesystem;
 
 /**
  * Excludes public and private files from staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class SiteFilesExcluder implements EventSubscriberInterface {
+final class SiteFilesExcluder implements EventSubscriberInterface {
 
   use PathExclusionsTrait;
 
diff --git a/package_manager/src/PathExcluder/SqliteDatabaseExcluder.php b/package_manager/src/PathExcluder/SqliteDatabaseExcluder.php
index e182383c51..cd8ba76f3d 100644
--- a/package_manager/src/PathExcluder/SqliteDatabaseExcluder.php
+++ b/package_manager/src/PathExcluder/SqliteDatabaseExcluder.php
@@ -11,6 +11,11 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * Excludes SQLite database files from staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class SqliteDatabaseExcluder implements EventSubscriberInterface {
 
diff --git a/package_manager/src/PathExcluder/TestSiteExcluder.php b/package_manager/src/PathExcluder/TestSiteExcluder.php
index 3fbae39016..d796e07e5c 100644
--- a/package_manager/src/PathExcluder/TestSiteExcluder.php
+++ b/package_manager/src/PathExcluder/TestSiteExcluder.php
@@ -10,8 +10,13 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * Excludes 'sites/simpletest' from staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class TestSiteExcluder implements EventSubscriberInterface {
+final class TestSiteExcluder implements EventSubscriberInterface {
 
   use PathExclusionsTrait;
 
diff --git a/package_manager/src/PathExcluder/VendorHardeningExcluder.php b/package_manager/src/PathExcluder/VendorHardeningExcluder.php
index 11248732bd..e54ff986f5 100644
--- a/package_manager/src/PathExcluder/VendorHardeningExcluder.php
+++ b/package_manager/src/PathExcluder/VendorHardeningExcluder.php
@@ -10,8 +10,13 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * Excludes vendor hardening files from staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class VendorHardeningExcluder implements EventSubscriberInterface {
+final class VendorHardeningExcluder implements EventSubscriberInterface {
 
   use PathExclusionsTrait;
 
diff --git a/package_manager/src/ProcessFactory.php b/package_manager/src/ProcessFactory.php
index 7530b37211..e3cfd03514 100644
--- a/package_manager/src/ProcessFactory.php
+++ b/package_manager/src/ProcessFactory.php
@@ -10,6 +10,11 @@ use Symfony\Component\Process\Process;
 
 /**
  * Defines a process factory which sets the COMPOSER_HOME environment variable.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 final class ProcessFactory implements ProcessFactoryInterface {
 
diff --git a/package_manager/src/ValidationResult.php b/package_manager/src/ValidationResult.php
index 7651548edd..ddfa728715 100644
--- a/package_manager/src/ValidationResult.php
+++ b/package_manager/src/ValidationResult.php
@@ -8,7 +8,7 @@ use Drupal\system\SystemManager;
 /**
  * A value object to contain the results of a validation.
  */
-class ValidationResult {
+final class ValidationResult {
 
   /**
    * A succinct summary of the results.
diff --git a/package_manager/src/Validator/ComposerExecutableValidator.php b/package_manager/src/Validator/ComposerExecutableValidator.php
index b6252e5bf8..3600876e41 100644
--- a/package_manager/src/Validator/ComposerExecutableValidator.php
+++ b/package_manager/src/Validator/ComposerExecutableValidator.php
@@ -15,8 +15,13 @@ use PhpTuf\ComposerStager\Domain\Service\ProcessRunner\ComposerRunnerInterface;
 
 /**
  * Validates the Composer executable is the correct version.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class ComposerExecutableValidator implements PreOperationStageValidatorInterface, ProcessOutputCallbackInterface {
+final class ComposerExecutableValidator implements PreOperationStageValidatorInterface, ProcessOutputCallbackInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/ComposerSettingsValidator.php b/package_manager/src/Validator/ComposerSettingsValidator.php
index 0ad1c7c254..d906b572bf 100644
--- a/package_manager/src/Validator/ComposerSettingsValidator.php
+++ b/package_manager/src/Validator/ComposerSettingsValidator.php
@@ -9,8 +9,13 @@ use Drupal\package_manager\Event\PreOperationStageEvent;
 
 /**
  * Validates certain Composer settings.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class ComposerSettingsValidator implements PreOperationStageValidatorInterface {
+final class ComposerSettingsValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/DiskSpaceValidator.php b/package_manager/src/Validator/DiskSpaceValidator.php
index 7a0a97dc4e..31d78ddf62 100644
--- a/package_manager/src/Validator/DiskSpaceValidator.php
+++ b/package_manager/src/Validator/DiskSpaceValidator.php
@@ -12,6 +12,11 @@ use Drupal\package_manager\PathLocator;
 
 /**
  * Validates that there is enough free disk space to do staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class DiskSpaceValidator implements PreOperationStageValidatorInterface {
 
diff --git a/package_manager/src/Validator/LockFileValidator.php b/package_manager/src/Validator/LockFileValidator.php
index a1676f3e74..819a6589b0 100644
--- a/package_manager/src/Validator/LockFileValidator.php
+++ b/package_manager/src/Validator/LockFileValidator.php
@@ -14,8 +14,13 @@ use Drupal\package_manager\PathLocator;
 
 /**
  * Checks that the active lock file is unchanged during stage operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class LockFileValidator implements PreOperationStageValidatorInterface {
+final class LockFileValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/MultisiteValidator.php b/package_manager/src/Validator/MultisiteValidator.php
index b739c0a0b0..720f4d3f1b 100644
--- a/package_manager/src/Validator/MultisiteValidator.php
+++ b/package_manager/src/Validator/MultisiteValidator.php
@@ -10,8 +10,13 @@ use Drupal\package_manager\PathLocator;
 
 /**
  * Checks that the current site is not part of a multisite.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class MultisiteValidator implements PreOperationStageValidatorInterface {
+final class MultisiteValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/PendingUpdatesValidator.php b/package_manager/src/Validator/PendingUpdatesValidator.php
index 5dd4f300e2..afd7622761 100644
--- a/package_manager/src/Validator/PendingUpdatesValidator.php
+++ b/package_manager/src/Validator/PendingUpdatesValidator.php
@@ -11,8 +11,13 @@ use Drupal\Core\Url;
 
 /**
  * Validates that there are no pending database updates.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class PendingUpdatesValidator implements PreOperationStageValidatorInterface {
+final class PendingUpdatesValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/SettingsValidator.php b/package_manager/src/Validator/SettingsValidator.php
index 19192334f9..607e200892 100644
--- a/package_manager/src/Validator/SettingsValidator.php
+++ b/package_manager/src/Validator/SettingsValidator.php
@@ -10,8 +10,13 @@ use Drupal\package_manager\Event\PreOperationStageEvent;
 
 /**
  * Checks that Drupal's settings are valid for Package Manager.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class SettingsValidator implements PreOperationStageValidatorInterface {
+final class SettingsValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/SymlinkValidator.php b/package_manager/src/Validator/SymlinkValidator.php
index c90190b1a2..1e9fd18627 100644
--- a/package_manager/src/Validator/SymlinkValidator.php
+++ b/package_manager/src/Validator/SymlinkValidator.php
@@ -14,6 +14,11 @@ use Symfony\Component\Finder\Finder;
  *
  * @todo Remove this when Composer Stager's PHP file copier handles symlinks
  *   without issues.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class SymlinkValidator implements PreOperationStageValidatorInterface {
 
diff --git a/package_manager/src/Validator/WritableFileSystemValidator.php b/package_manager/src/Validator/WritableFileSystemValidator.php
index 4b60c0cb7b..4b4ce66add 100644
--- a/package_manager/src/Validator/WritableFileSystemValidator.php
+++ b/package_manager/src/Validator/WritableFileSystemValidator.php
@@ -10,6 +10,11 @@ use Drupal\package_manager\PathLocator;
 
 /**
  * Checks that the file system is writable.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class WritableFileSystemValidator implements PreOperationStageValidatorInterface {
 
diff --git a/src/BatchProcessor.php b/src/BatchProcessor.php
index 8b94d08c61..e37fafce45 100644
--- a/src/BatchProcessor.php
+++ b/src/BatchProcessor.php
@@ -9,8 +9,13 @@ use Symfony\Component\HttpFoundation\RedirectResponse;
 
 /**
  * A batch processor for updates.
+ *
+ * @internal
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class BatchProcessor {
+final class BatchProcessor {
 
   /**
    * The session key under which the stage ID is stored.
diff --git a/src/Controller/ReadinessCheckerController.php b/src/Controller/ReadinessCheckerController.php
index fbc14ba7f3..e6a13f0f11 100644
--- a/src/Controller/ReadinessCheckerController.php
+++ b/src/Controller/ReadinessCheckerController.php
@@ -16,7 +16,7 @@ use Symfony\Component\HttpFoundation\RedirectResponse;
  * @internal
  *   Controller classes are internal.
  */
-class ReadinessCheckerController extends ControllerBase {
+final class ReadinessCheckerController extends ControllerBase {
 
   use ReadinessTrait;
 
diff --git a/src/Controller/UpdateController.php b/src/Controller/UpdateController.php
index a15c18424e..e3ad0625f1 100644
--- a/src/Controller/UpdateController.php
+++ b/src/Controller/UpdateController.php
@@ -18,7 +18,7 @@ use Symfony\Component\HttpFoundation\Request;
  * @internal
  *   Controller classes are internal.
  */
-class UpdateController extends ControllerBase {
+final class UpdateController extends ControllerBase {
 
   /**
    * The pending updates validator.
diff --git a/src/EventSubscriber/ConfigSubscriber.php b/src/EventSubscriber/ConfigSubscriber.php
index de06544a53..4d8781f42b 100644
--- a/src/EventSubscriber/ConfigSubscriber.php
+++ b/src/EventSubscriber/ConfigSubscriber.php
@@ -11,8 +11,13 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  *
  * @todo Move this functionality into ReadinessValidationManager when
  *   https://www.drupal.org/i/3275317#comment-14482995 is resolved.
+ *
+ * @internal
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class ConfigSubscriber implements EventSubscriberInterface {
+final class ConfigSubscriber implements EventSubscriberInterface {
 
   /**
    * {@inheritdoc}
diff --git a/src/Form/UpdateReady.php b/src/Form/UpdateReady.php
index abc4caa53f..2fa0ca77f4 100644
--- a/src/Form/UpdateReady.php
+++ b/src/Form/UpdateReady.php
@@ -19,9 +19,9 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  * Defines a form to commit staged updates.
  *
  * @internal
- *   Form classes are internal.
+ *   Form classes are internal and the form structure may change at any time.
  */
-class UpdateReady extends FormBase {
+final class UpdateReady extends FormBase {
 
   /**
    * The updater service.
diff --git a/src/LegacyVersionUtility.php b/src/LegacyVersionUtility.php
index f6b2a55344..6536f5db55 100644
--- a/src/LegacyVersionUtility.php
+++ b/src/LegacyVersionUtility.php
@@ -8,8 +8,8 @@ use Drupal\Core\Extension\ExtensionVersion;
  * A utility class for dealing with legacy version numbers.
  *
  * @internal
- *    This is an internal utility class that could change in any release and
- *    should not be used by external code.
+ *   This is an internal utility class that could be changed or removed in any
+ *   release and should not be used by external code.
  */
 final class LegacyVersionUtility {
 
diff --git a/src/ProjectInfo.php b/src/ProjectInfo.php
index 075940b791..c725d7ca39 100644
--- a/src/ProjectInfo.php
+++ b/src/ProjectInfo.php
@@ -11,9 +11,11 @@ use Drupal\update\UpdateManagerInterface;
  * Defines a class for retrieving project information from Update module.
  *
  * @internal
- *   External code should use the Update API directly.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should use the Update API
+ *   directly.
  */
-class ProjectInfo {
+final class ProjectInfo {
 
   /**
    * The project name.
diff --git a/src/ReleaseChooser.php b/src/ReleaseChooser.php
index 8bd89ac1ea..04050af1aa 100644
--- a/src/ReleaseChooser.php
+++ b/src/ReleaseChooser.php
@@ -10,7 +10,7 @@ use Drupal\Core\Extension\ExtensionVersion;
 /**
  * Defines a class to choose a release of Drupal core to update to.
  */
-class ReleaseChooser {
+final class ReleaseChooser {
 
   use VersionParsingTrait;
 
diff --git a/src/Routing/RouteSubscriber.php b/src/Routing/RouteSubscriber.php
index 5cc5465d57..de0069bf43 100644
--- a/src/Routing/RouteSubscriber.php
+++ b/src/Routing/RouteSubscriber.php
@@ -9,8 +9,11 @@ use Symfony\Component\Routing\RouteCollection;
  * Modifies route definitions.
  *
  * @internal
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class RouteSubscriber extends RouteSubscriberBase {
+final class RouteSubscriber extends RouteSubscriberBase {
 
   /**
    * {@inheritdoc}
diff --git a/src/Validation/ReadinessTrait.php b/src/Validation/ReadinessTrait.php
index a01906bd54..53b5842b6d 100644
--- a/src/Validation/ReadinessTrait.php
+++ b/src/Validation/ReadinessTrait.php
@@ -12,7 +12,7 @@ use Drupal\system\SystemManager;
  * Common methods for working with readiness checkers.
  *
  * @internal
- *   This class implements logic to output the messages from readiness checkers
+ *   This trait implements logic to output the messages from readiness checkers
  *   on admin pages. It may be changed or removed at any time without warning
  *   and should not be used by external code.
  */
diff --git a/src/Validation/ReadinessValidationManager.php b/src/Validation/ReadinessValidationManager.php
index f6292bd5cd..3486bcddc7 100644
--- a/src/Validation/ReadinessValidationManager.php
+++ b/src/Validation/ReadinessValidationManager.php
@@ -14,7 +14,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 /**
  * Defines a manager to run readiness validation.
  */
-class ReadinessValidationManager implements EventSubscriberInterface {
+final class ReadinessValidationManager implements EventSubscriberInterface {
 
   /**
    * The key/value expirable storage.
@@ -44,7 +44,6 @@ class ReadinessValidationManager implements EventSubscriberInterface {
    */
   protected $resultsTimeToLive;
 
-
   /**
    * The updater service.
    *
diff --git a/src/Validator/CronFrequencyValidator.php b/src/Validator/CronFrequencyValidator.php
index e431158047..d3c3465573 100644
--- a/src/Validator/CronFrequencyValidator.php
+++ b/src/Validator/CronFrequencyValidator.php
@@ -17,8 +17,9 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * Validates that cron runs frequently enough to perform automatic updates.
  *
  * @internal
- *   This class is an internal part of the module's update handling and
- *   should not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class CronFrequencyValidator implements EventSubscriberInterface {
 
diff --git a/src/Validator/PackageManagerReadinessCheck.php b/src/Validator/PackageManagerReadinessCheck.php
index 960e97b2ea..c26f05cd6b 100644
--- a/src/Validator/PackageManagerReadinessCheck.php
+++ b/src/Validator/PackageManagerReadinessCheck.php
@@ -14,10 +14,11 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * subscribe to.
  *
  * @internal
- *   This class is an internal part of the module's update handling and
- *   should not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class PackageManagerReadinessCheck implements EventSubscriberInterface {
+final class PackageManagerReadinessCheck implements EventSubscriberInterface {
 
   /**
    * The validator to run.
diff --git a/src/Validator/ScaffoldFilePermissionsValidator.php b/src/Validator/ScaffoldFilePermissionsValidator.php
index 307ccb940c..681ca0c2ef 100644
--- a/src/Validator/ScaffoldFilePermissionsValidator.php
+++ b/src/Validator/ScaffoldFilePermissionsValidator.php
@@ -13,8 +13,13 @@ use Drupal\package_manager\Validator\PreOperationStageValidatorInterface;
 
 /**
  * Validates that scaffold files have appropriate permissions.
+ *
+ * @internal
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class ScaffoldFilePermissionsValidator implements PreOperationStageValidatorInterface {
+final class ScaffoldFilePermissionsValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/StagedDatabaseUpdateValidator.php b/src/Validator/StagedDatabaseUpdateValidator.php
index 647d9c0cf4..d7ed7ecf4c 100644
--- a/src/Validator/StagedDatabaseUpdateValidator.php
+++ b/src/Validator/StagedDatabaseUpdateValidator.php
@@ -17,10 +17,11 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * Validates that there are no database updates in a staged update.
  *
  * @internal
- *   This class is an internal part of the module's update handling and
- *   should not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class StagedDatabaseUpdateValidator implements EventSubscriberInterface {
+final class StagedDatabaseUpdateValidator implements EventSubscriberInterface {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/StagedProjectsValidator.php b/src/Validator/StagedProjectsValidator.php
index 44e130bf30..1e379c1a06 100644
--- a/src/Validator/StagedProjectsValidator.php
+++ b/src/Validator/StagedProjectsValidator.php
@@ -13,8 +13,9 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * Validates the staged Drupal projects.
  *
  * @internal
- *   This class is an internal part of the module's update handling and
- *   should not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 final class StagedProjectsValidator implements EventSubscriberInterface {
 
diff --git a/src/Validator/VersionPolicy/ForbidDevSnapshot.php b/src/Validator/VersionPolicy/ForbidDevSnapshot.php
index ca6842a650..6e5fa5b5d4 100644
--- a/src/Validator/VersionPolicy/ForbidDevSnapshot.php
+++ b/src/Validator/VersionPolicy/ForbidDevSnapshot.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class ForbidDevSnapshot {
+final class ForbidDevSnapshot {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/ForbidDowngrade.php b/src/Validator/VersionPolicy/ForbidDowngrade.php
index 93f05e0fc9..c71fc54fbe 100644
--- a/src/Validator/VersionPolicy/ForbidDowngrade.php
+++ b/src/Validator/VersionPolicy/ForbidDowngrade.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class ForbidDowngrade {
+final class ForbidDowngrade {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/ForbidMinorUpdates.php b/src/Validator/VersionPolicy/ForbidMinorUpdates.php
index 83e5cfe6de..7b030aa84f 100644
--- a/src/Validator/VersionPolicy/ForbidMinorUpdates.php
+++ b/src/Validator/VersionPolicy/ForbidMinorUpdates.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class ForbidMinorUpdates {
+final class ForbidMinorUpdates {
 
   use StringTranslationTrait;
   use VersionParsingTrait;
diff --git a/src/Validator/VersionPolicy/MajorVersionMatch.php b/src/Validator/VersionPolicy/MajorVersionMatch.php
index 378251ac18..56828ab180 100644
--- a/src/Validator/VersionPolicy/MajorVersionMatch.php
+++ b/src/Validator/VersionPolicy/MajorVersionMatch.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class MajorVersionMatch {
+final class MajorVersionMatch {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/MinorUpdatesEnabled.php b/src/Validator/VersionPolicy/MinorUpdatesEnabled.php
index 6ce2042cab..54f848c8b6 100644
--- a/src/Validator/VersionPolicy/MinorUpdatesEnabled.php
+++ b/src/Validator/VersionPolicy/MinorUpdatesEnabled.php
@@ -16,7 +16,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class MinorUpdatesEnabled implements ContainerInjectionInterface {
+final class MinorUpdatesEnabled implements ContainerInjectionInterface {
 
   use StringTranslationTrait;
   use VersionParsingTrait;
diff --git a/src/Validator/VersionPolicy/StableReleaseInstalled.php b/src/Validator/VersionPolicy/StableReleaseInstalled.php
index f1f019bbce..a41012d64a 100644
--- a/src/Validator/VersionPolicy/StableReleaseInstalled.php
+++ b/src/Validator/VersionPolicy/StableReleaseInstalled.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class StableReleaseInstalled {
+final class StableReleaseInstalled {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/SupportedBranchInstalled.php b/src/Validator/VersionPolicy/SupportedBranchInstalled.php
index b3f16a0204..247793a1a0 100644
--- a/src/Validator/VersionPolicy/SupportedBranchInstalled.php
+++ b/src/Validator/VersionPolicy/SupportedBranchInstalled.php
@@ -17,7 +17,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class SupportedBranchInstalled implements ContainerInjectionInterface {
+final class SupportedBranchInstalled implements ContainerInjectionInterface {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/TargetSecurityRelease.php b/src/Validator/VersionPolicy/TargetSecurityRelease.php
index 61d2f0e3f4..a9e71b3229 100644
--- a/src/Validator/VersionPolicy/TargetSecurityRelease.php
+++ b/src/Validator/VersionPolicy/TargetSecurityRelease.php
@@ -12,7 +12,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class TargetSecurityRelease {
+final class TargetSecurityRelease {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/TargetVersionInstallable.php b/src/Validator/VersionPolicy/TargetVersionInstallable.php
index 586dd2a8f1..6727cc1a11 100644
--- a/src/Validator/VersionPolicy/TargetVersionInstallable.php
+++ b/src/Validator/VersionPolicy/TargetVersionInstallable.php
@@ -12,7 +12,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class TargetVersionInstallable {
+final class TargetVersionInstallable {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/TargetVersionStable.php b/src/Validator/VersionPolicy/TargetVersionStable.php
index 3e0c9de1e8..d55111ce5d 100644
--- a/src/Validator/VersionPolicy/TargetVersionStable.php
+++ b/src/Validator/VersionPolicy/TargetVersionStable.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class TargetVersionStable {
+final class TargetVersionStable {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicyValidator.php b/src/Validator/VersionPolicyValidator.php
index b8f2feddfc..e7bed65b64 100644
--- a/src/Validator/VersionPolicyValidator.php
+++ b/src/Validator/VersionPolicyValidator.php
@@ -26,8 +26,9 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * Validates the installed and target versions of Drupal before an update.
  *
  * @internal
- *   This class is an internal part of the module's update handling and should
- *   not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 final class VersionPolicyValidator implements EventSubscriberInterface {
 
diff --git a/src/Validator/XdebugValidator.php b/src/Validator/XdebugValidator.php
index ef46b7c200..84fa455bb1 100644
--- a/src/Validator/XdebugValidator.php
+++ b/src/Validator/XdebugValidator.php
@@ -10,10 +10,11 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * Flags a warning if Xdebug is enabled.
  *
  * @internal
- *   This class is an internal part of the module's update handling and
- *   should not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class XdebugValidator implements EventSubscriberInterface {
+final class XdebugValidator implements EventSubscriberInterface {
 
   use StringTranslationTrait;
 
-- 
GitLab