diff --git a/composer/Plugin/VendorHardening/Config.php b/composer/Plugin/VendorHardening/Config.php
index 603cac634ff002fe18dd0868d8dff40d6f8fd6a7..b1c79e6e23d352fb719aff015172b72303a8154f 100644
--- a/composer/Plugin/VendorHardening/Config.php
+++ b/composer/Plugin/VendorHardening/Config.php
@@ -48,7 +48,6 @@ class Config {
     'phpspec/prophecy' => ['fixtures', 'spec', 'tests'],
     'phpunit/php-code-coverage' => ['tests'],
     'phpunit/php-timer' => ['tests'],
-    'phpunit/php-token-stream' => ['tests'],
     'phpunit/phpunit' => ['tests'],
     'sebastian/code-unit-reverse-lookup' => ['tests'],
     'sebastian/comparator' => ['tests'],
diff --git a/core/lib/Drupal/Core/Composer/Composer.php b/core/lib/Drupal/Core/Composer/Composer.php
index b812636423dc05b67744003dba680c1fa99be19f..9719d6c40ebfc69463f70150673bab484ab90dd0 100644
--- a/core/lib/Drupal/Core/Composer/Composer.php
+++ b/core/lib/Drupal/Core/Composer/Composer.php
@@ -44,7 +44,6 @@ class Composer {
     'phpspec/prophecy' => ['fixtures', 'spec', 'tests'],
     'phpunit/php-code-coverage' => ['tests'],
     'phpunit/php-timer' => ['tests'],
-    'phpunit/php-token-stream' => ['tests'],
     'phpunit/phpunit' => ['tests'],
     'sebastian/code-unit-reverse-lookup' => ['tests'],
     'sebastian/comparator' => ['tests'],
diff --git a/core/lib/Drupal/Core/Test/TestDiscovery.php b/core/lib/Drupal/Core/Test/TestDiscovery.php
index cf0ca32f2810a70bbc6b9fa742291080ec1ded63..89287b550314b26750be7ee2b94bb76aca06355f 100644
--- a/core/lib/Drupal/Core/Test/TestDiscovery.php
+++ b/core/lib/Drupal/Core/Test/TestDiscovery.php
@@ -7,7 +7,7 @@
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Extension\ExtensionDiscovery;
 use Drupal\Core\Test\Exception\MissingGroupException;
-use Drupal\TestTools\PhpUnitCompatibility\PhpUnit8\ClassWriter;
+use Drupal\TestTools\PhpUnitCompatibility\ClassWriter;
 use PHPUnit\Util\Test;
 
 /**
diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh
index 17ec49b9a484f7415764b8acf4aed54e5ede7a7a..d9728a02e9955f56f546f2a48350897e38019741 100755
--- a/core/scripts/run-tests.sh
+++ b/core/scripts/run-tests.sh
@@ -18,7 +18,7 @@
 use Drupal\Core\Test\TestDatabase;
 use Drupal\Core\Test\TestRunnerKernel;
 use Drupal\Core\Test\TestDiscovery;
-use Drupal\TestTools\PhpUnitCompatibility\PhpUnit8\ClassWriter;
+use Drupal\TestTools\PhpUnitCompatibility\ClassWriter;
 use PHPUnit\Framework\TestCase;
 use PHPUnit\Runner\Version;
 use Symfony\Component\Console\Output\ConsoleOutput;
diff --git a/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit8/ClassWriter.php b/core/tests/Drupal/TestTools/PhpUnitCompatibility/ClassWriter.php
similarity index 98%
rename from core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit8/ClassWriter.php
rename to core/tests/Drupal/TestTools/PhpUnitCompatibility/ClassWriter.php
index dffce1d86395b04cfdd9727a6e698974d8f06021..0362882d1a66414921efd0248fc4a01d998f6681 100644
--- a/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit8/ClassWriter.php
+++ b/core/tests/Drupal/TestTools/PhpUnitCompatibility/ClassWriter.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\TestTools\PhpUnitCompatibility\PhpUnit8;
+namespace Drupal\TestTools\PhpUnitCompatibility;
 
 use Composer\Autoload\ClassLoader;
 
diff --git a/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit8/TestCompatibilityTrait.php b/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit8/TestCompatibilityTrait.php
deleted file mode 100644
index 9beee7d0a1988188d49e5e36ab6cfba2d6478fbc..0000000000000000000000000000000000000000
--- a/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit8/TestCompatibilityTrait.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Drupal\TestTools\PhpUnitCompatibility\PhpUnit8;
-
-/**
- * Drupal's forward compatibility layer with multiple versions of PHPUnit.
- */
-trait TestCompatibilityTrait {
-
-}
diff --git a/core/tests/Drupal/Tests/ComposerIntegrationTest.php b/core/tests/Drupal/Tests/ComposerIntegrationTest.php
index c50f782f7eb6bb5a9576ea9c9cfceb1f2ee45544..7bff93a5f29721f2f08d09b681f26e800f97db5e 100644
--- a/core/tests/Drupal/Tests/ComposerIntegrationTest.php
+++ b/core/tests/Drupal/Tests/ComposerIntegrationTest.php
@@ -5,7 +5,6 @@
 use Drupal\Composer\Plugin\VendorHardening\Config;
 use Drupal\Core\Composer\Composer;
 use Drupal\Tests\Composer\ComposerIntegrationTrait;
-use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion;
 use Symfony\Component\Yaml\Yaml;
 
 /**
@@ -266,11 +265,6 @@ public function testVendorCleanup($class, $property) {
     $reflection = new \ReflectionProperty($class, $property);
     $reflection->setAccessible(TRUE);
     $config = $reflection->getValue();
-    // PHPUnit 9.5.3 removes 'phpunit/php-token-stream' from its dependencies.
-    // @todo remove the check below when PHPUnit 9 is the minimum.
-    if (RunnerVersion::getMajor() >= 9) {
-      unset($config['phpunit/php-token-stream']);
-    }
     foreach (array_keys($config) as $package) {
       $this->assertContains(strtolower($package), $packages);
     }
diff --git a/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php b/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php
index 8a85f29b31894b35f4b86d1dafcad81744469b42..475262cb8d7509744037146c50897098c1c57c37 100644
--- a/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php
+++ b/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php
@@ -125,12 +125,10 @@ public static function getSkippedDeprecations() {
       // testing using \Symfony\Component\ErrorHandler\DebugClassLoader.
       'The "Twig\Environment::getTemplateClass()" method is considered internal. It may change without further notice. You should not extend it from "Drupal\Core\Template\TwigEnvironment".',
       '"Symfony\Component\DomCrawler\Crawler::text()" will normalize whitespaces by default in Symfony 5.0, set the second "$normalizeWhitespace" argument to false to retrieve the non-normalized version of the text.',
-      // PHPUnit 8.
-      "The \"PHPUnit\TextUI\ResultPrinter\" class is considered internal This class is not covered by the backward compatibility promise for PHPUnit. It may change without further notice. You should not use it from \"Drupal\Tests\Listeners\HtmlOutputPrinter\".",
+      // PHPUnit 9.
       "The \"Drupal\Tests\Listeners\DrupalListener\" class implements \"PHPUnit\Framework\TestListener\" that is deprecated Use the `TestHook` interfaces instead.",
       "The \"Drupal\Tests\Listeners\DrupalListener\" class uses \"PHPUnit\Framework\TestListenerDefaultImplementation\" that is deprecated The `TestListener` interface is deprecated.",
       "The \"PHPUnit\Framework\TestSuite\" class is considered internal This class is not covered by the backward compatibility promise for PHPUnit. It may change without further notice. You should not use it from \"Drupal\Tests\TestSuites\TestSuiteBase\".",
-      // PHPUnit 9.
       "The \"PHPUnit\TextUI\DefaultResultPrinter\" class is considered internal This class is not covered by the backward compatibility promise for PHPUnit. It may change without further notice. You should not use it from \"Drupal\Tests\Listeners\HtmlOutputPrinter\".",
     ];
   }
diff --git a/core/tests/Drupal/Tests/Listeners/HtmlOutputPrinter.php b/core/tests/Drupal/Tests/Listeners/HtmlOutputPrinter.php
index a85c320499724ee13be17abecfa9fdc780bc05a3..69eae01fd167ddffa1c34ccca8554e6f880252cf 100644
--- a/core/tests/Drupal/Tests/Listeners/HtmlOutputPrinter.php
+++ b/core/tests/Drupal/Tests/Listeners/HtmlOutputPrinter.php
@@ -2,27 +2,15 @@
 
 namespace Drupal\Tests\Listeners;
 
-use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion;
 use PHPUnit\Framework\TestResult;
-
-// In order to manage different implementations across PHPUnit versions, we
-// dynamically load the base ResultPrinter class dependent on the PHPUnit runner
-// version.
-if (!class_exists(ResultPrinterBase::class, FALSE)) {
-  if (RunnerVersion::getMajor() < 9) {
-    class_alias('PHPUnit\TextUI\ResultPrinter', ResultPrinterBase::class);
-  }
-  else {
-    class_alias('PHPUnit\TextUI\DefaultResultPrinter', ResultPrinterBase::class);
-  }
-}
+use PHPUnit\TextUI\DefaultResultPrinter;
 
 /**
  * Defines a class for providing html output results for functional tests.
  *
  * @internal
  */
-class HtmlOutputPrinter extends ResultPrinterBase {
+class HtmlOutputPrinter extends DefaultResultPrinter {
 
   use HtmlOutputPrinterTrait;
 
diff --git a/core/tests/Drupal/Tests/PhpUnitWarningsTest.php b/core/tests/Drupal/Tests/PhpUnitWarningsTest.php
index 7fa46ab06b96e4fc426cd1ddb9701eefbb18f5d7..2e635be472a9e976ddda27ebbbb5b43855b50c13 100644
--- a/core/tests/Drupal/Tests/PhpUnitWarningsTest.php
+++ b/core/tests/Drupal/Tests/PhpUnitWarningsTest.php
@@ -2,8 +2,6 @@
 
 namespace Drupal\Tests;
 
-use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion;
-
 /**
  * @coversDefaultClass \Drupal\Tests\Traits\PhpUnitWarnings
  * @group legacy
@@ -18,105 +16,4 @@ public function testAddWarning() {
     $this->addWarning('Test warning for \Drupal\Tests\PhpUnitWarningsTest::testAddWarning()');
   }
 
-  /**
-   * Tests assertContains.
-   */
-  public function testAssertContains() {
-    if (RunnerVersion::getMajor() > 8) {
-      $this->markTestSkipped("In PHPUnit 9+, argument 2 passed to PHPUnit\Framework\Assert::assertContains() must be iterable.");
-    }
-    $this->expectDeprecation('Using assertContains() with string haystacks is deprecated and will not be supported in PHPUnit 9. Refactor your test to use assertStringContainsString() or assertStringContainsStringIgnoringCase() instead.');
-    $this->expectDeprecation('The optional $ignoreCase parameter of assertContains() is deprecated and will be removed in PHPUnit 9.');
-    $this->assertContains('string', 'aaaa_string_aaa');
-    $this->assertContains('STRING', 'aaaa_string_aaa', '', TRUE);
-  }
-
-  /**
-   * Tests assertNotContains.
-   */
-  public function testAssertNotContains() {
-    if (RunnerVersion::getMajor() > 8) {
-      $this->markTestSkipped("In PHPUnit 9+, argument 2 passed to PHPUnit\Framework\Assert::assertNotContains() must be iterable.");
-    }
-    $this->expectDeprecation('Using assertNotContains() with string haystacks is deprecated and will not be supported in PHPUnit 9. Refactor your test to use assertStringNotContainsString() or assertStringNotContainsStringIgnoringCase() instead.');
-    $this->expectDeprecation('The optional $ignoreCase parameter of assertNotContains() is deprecated and will be removed in PHPUnit 9.');
-    $this->assertNotContains('foo', 'bar');
-    $this->assertNotContains('FOO', 'bar', '', TRUE);
-  }
-
-  /**
-   * Tests assertArraySubset.
-   */
-  public function testAssertArraySubset() {
-    if (RunnerVersion::getMajor() > 8) {
-      $this->markTestSkipped("In PHPUnit 9+, assertArraySubset() is removed.");
-    }
-    $this->expectDeprecation('assertArraySubset() is deprecated and will be removed in PHPUnit 9.');
-    $this->assertArraySubset(['a'], ['a', 'b']);
-  }
-
-  /**
-   * Tests assertInternalType.
-   */
-  public function testAssertInternalType() {
-    if (RunnerVersion::getMajor() > 8) {
-      $this->markTestSkipped("In PHPUnit 9+, assertInternalType() is removed.");
-    }
-    $this->expectDeprecation('assertInternalType() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertIsString() instead.');
-    $this->assertInternalType('string', 'string');
-  }
-
-  /**
-   * Tests assertion methods accessing class attributes.
-   */
-  public function testAssertAttribute() {
-    if (RunnerVersion::getMajor() > 8) {
-      $this->markTestSkipped("In PHPUnit 9+, assertion methods accessing class attributes are removed.");
-    }
-    $this->expectDeprecation('assertAttributeEquals() is deprecated and will be removed in PHPUnit 9.');
-    $this->expectDeprecation('readAttribute() is deprecated and will be removed in PHPUnit 9.');
-    $this->expectDeprecation('getObjectAttribute() is deprecated and will be removed in PHPUnit 9.');
-    $this->expectDeprecation('assertAttributeSame() is deprecated and will be removed in PHPUnit 9.');
-    $this->expectDeprecation('assertAttributeInstanceOf() is deprecated and will be removed in PHPUnit 9.');
-    $this->expectDeprecation('assertAttributeEmpty() is deprecated and will be removed in PHPUnit 9.');
-    $obj = new class() {
-      protected $attribute = 'value';
-      protected $class;
-      protected $empty;
-
-      public function __construct() {
-        $this->class = new \stdClass();
-      }
-
-    };
-    $this->assertAttributeEquals('value', 'attribute', $obj);
-    $this->assertAttributeSame('value', 'attribute', $obj);
-    $this->assertAttributeInstanceOf(\stdClass::class, 'class', $obj);
-    $this->assertAttributeEmpty('empty', $obj);
-  }
-
-  /**
-   * Tests assertEquals.
-   */
-  public function testAssertEquals() {
-    if (RunnerVersion::getMajor() > 8) {
-      $this->markTestSkipped("In PHPUnit 9+, the \$canonicalize parameter of assertEquals() is removed.");
-    }
-    $this->expectDeprecation('The optional $canonicalize parameter of assertEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertEqualsCanonicalizing() instead.');
-    $this->assertEquals(['a', 'b'], ['b', 'a'], '', 0.0, 10, TRUE);
-  }
-
-  /**
-   * Tests expectExceptionMessageRegExp.
-   */
-  public function testExpectExceptionMessageRegExp() {
-    if (RunnerVersion::getMajor() > 8) {
-      $this->markTestSkipped("In PHPUnit 9+, expectExceptionMessageRegExp() is removed.");
-    }
-    $this->expectDeprecation('expectExceptionMessageRegExp() is deprecated in PHPUnit 8 and will be removed in PHPUnit 9. Use expectExceptionMessageMatches() instead.');
-    $this->expectException(\Exception::class);
-    $this->expectExceptionMessageRegExp('/An exception .*/');
-    throw new \Exception('An exception has been triggered');
-  }
-
 }
diff --git a/core/tests/bootstrap.php b/core/tests/bootstrap.php
index 5f5b494cfcfd6379b7d4a004202692253d17bbb6..40f2870dda2aeb265d5fd3bd23167e4abb2c9655 100644
--- a/core/tests/bootstrap.php
+++ b/core/tests/bootstrap.php
@@ -8,7 +8,7 @@
  */
 
 use Drupal\Component\Assertion\Handle;
-use Drupal\TestTools\PhpUnitCompatibility\PhpUnit8\ClassWriter;
+use Drupal\TestTools\PhpUnitCompatibility\ClassWriter;
 
 /**
  * Finds all valid extension directories recursively within a given directory.