diff --git a/core/lib/Drupal/Component/Render/FormattableMarkup.php b/core/lib/Drupal/Component/Render/FormattableMarkup.php
index 6cebd3e3a1ac183886dfc1b8f9fa4a7eb99fe1ec..a71fca8bf6145e444b1579900da61e52cc3b1f7b 100644
--- a/core/lib/Drupal/Component/Render/FormattableMarkup.php
+++ b/core/lib/Drupal/Component/Render/FormattableMarkup.php
@@ -130,9 +130,8 @@ public function jsonSerialize(): string {
    *   An associative array of replacements. Each array key should be the same
    *   as a placeholder in $string. The corresponding value should be a string
    *   or an object that implements \Drupal\Component\Render\MarkupInterface.
-   *   Null args[] values are deprecated in Drupal 9.5 and will fail in
-   *   Drupal 11.0. The value replaces the placeholder in $string. Sanitization
-   *   and formatting will be done before replacement. The type of sanitization
+   *   The args[] value replaces the placeholder in $string. Sanitization and
+   *   formatting will be done before replacement. The type of sanitization
    *   and formatting depends on the first character of the key:
    *   - @variable: When the placeholder replacement value is:
    *     - A string, the replaced value in the returned string will be sanitized
@@ -194,15 +193,6 @@ public function jsonSerialize(): string {
   protected static function placeholderFormat($string, array $args) {
     // Transform arguments before inserting them.
     foreach ($args as $key => $value) {
-      if (is_null($value)) {
-        // It's probably a bug to provide a null value for the placeholder arg,
-        // and in D11 this will no longer be allowed. When this trigger_error
-        // is removed, also remove isset $value checks inside the switch{}
-        // below.
-        // phpcs:ignore Drupal.Semantics.FunctionTriggerError
-        @trigger_error(sprintf('Deprecated NULL placeholder value for key (%s) in: "%s". This will throw a PHP error in drupal:11.0.0. See https://www.drupal.org/node/3318826', (string) $key, (string) $string), E_USER_DEPRECATED);
-        $value = '';
-      }
       switch ($key[0]) {
         case '@':
           // Escape if the value is not an object from a class that implements
diff --git a/core/lib/Drupal/Core/Render/Element/Ajax.php b/core/lib/Drupal/Core/Render/Element/Ajax.php
deleted file mode 100644
index 28353c2e7b27af1d8313202bc71d0ab89d927c07..0000000000000000000000000000000000000000
--- a/core/lib/Drupal/Core/Render/Element/Ajax.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-namespace Drupal\Core\Render\Element;
-
-use Drupal\Core\Render\Attribute\RenderElement;
-
-/**
- * Provides a render element for adding Ajax to a render element.
- *
- * Holds an array whose values control the Ajax behavior of the element.
- *
- * @ingroup ajax
- *
- * @deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Return an
- *   \Drupal\Core\Ajax\AjaxResponse instead.
- *
- * @see https://www.drupal.org/node/3068104
- */
-#[RenderElement('ajax')]
-class Ajax extends RenderElementBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition) {
-    parent::__construct($configuration, $plugin_id, $plugin_definition);
-    @trigger_error('\Drupal\Core\Render\Element\Ajax is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Return an \Drupal\Core\Ajax\AjaxResponse instead. See https://www.drupal.org/node/3068104', E_USER_DEPRECATED);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getInfo() {
-    // By default, we don't want Ajax commands being rendered in the context of
-    // an HTML page, so we don't provide defaults for #theme or #theme_wrappers.
-    // However, modules can set these properties (for example, to provide an
-    // HTML debugging page that displays rather than executes Ajax commands).
-    return [
-      '#header' => TRUE,
-      '#commands' => [],
-      '#error' => NULL,
-    ];
-  }
-
-}
diff --git a/core/lib/Drupal/Core/Render/Element/RenderElementBase.php b/core/lib/Drupal/Core/Render/Element/RenderElementBase.php
index 84230b5c14f0e7ee577f69bb8acb5ad4d94f5c85..aa2da90eba8ac3f2e8dd92553c6a66dd6129a280 100644
--- a/core/lib/Drupal/Core/Render/Element/RenderElementBase.php
+++ b/core/lib/Drupal/Core/Render/Element/RenderElementBase.php
@@ -372,12 +372,6 @@ public static function preRenderAjaxForm($element) {
         $settings['options']['query'][FormBuilderInterface::AJAX_FORM_REQUEST] = TRUE;
       }
 
-      // @todo Legacy support. Remove in Drupal 8.
-      if (isset($settings['method']) && $settings['method'] == 'replace') {
-        @trigger_error('Using "replace" as the method in #ajax property is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use "replaceWith" instead. See https://www.drupal.org/project/drupal/issues/3303557', E_USER_DEPRECATED);
-        $settings['method'] = 'replaceWith';
-      }
-
       // Convert \Drupal\Core\Url object to string.
       if (isset($settings['url']) && $settings['url'] instanceof Url) {
         $url = $settings['url']->setOptions($settings['options'])->toString(TRUE);
diff --git a/core/lib/Drupal/Core/Render/ElementInfoManager.php b/core/lib/Drupal/Core/Render/ElementInfoManager.php
index a2efac850894b3e676c3744f088951a8a437c659..e01630258d9ab8f85799c0afdb7a16dce5ac8c02 100644
--- a/core/lib/Drupal/Core/Render/ElementInfoManager.php
+++ b/core/lib/Drupal/Core/Render/ElementInfoManager.php
@@ -3,8 +3,6 @@
 namespace Drupal\Core\Render;
 
 use Drupal\Core\Cache\CacheBackendInterface;
-use Drupal\Core\Cache\CacheTagsInvalidatorInterface;
-use Drupal\Core\DependencyInjection\DeprecatedServicePropertyTrait;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Extension\ThemeHandlerInterface;
 use Drupal\Core\Plugin\DefaultPluginManager;
@@ -25,15 +23,6 @@
  */
 class ElementInfoManager extends DefaultPluginManager implements ElementInfoManagerInterface {
 
-  use DeprecatedServicePropertyTrait;
-
-  /**
-   * Defines deprecated injected properties.
-   *
-   * @var array
-   */
-  protected array $deprecatedProperties = ['cacheTagInvalidator' => 'cache_tags.invalidator'];
-
   /**
    * Stores the available element information.
    *
@@ -41,20 +30,6 @@ class ElementInfoManager extends DefaultPluginManager implements ElementInfoMana
    */
   protected $elementInfo;
 
-  /**
-   * The theme manager.
-   *
-   * @var \Drupal\Core\Theme\ThemeManagerInterface
-   */
-  protected $themeManager;
-
-  /**
-   * The theme handler.
-   *
-   * @var \Drupal\Core\Cache\CacheTagsInvalidatorInterface
-   */
-  protected $themeHandler;
-
   /**
    * Constructs an ElementInfoManager object.
    *
@@ -63,22 +38,21 @@ class ElementInfoManager extends DefaultPluginManager implements ElementInfoMana
    *   keyed by the corresponding namespace to look for plugin implementations.
    * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend
    *   Cache backend instance to use.
-   * @param \Drupal\Core\Extension\ThemeHandlerInterface|\Drupal\Core\Cache\CacheTagsInvalidatorInterface $theme_handler
+   * @param \Drupal\Core\Extension\ThemeHandlerInterface $themeHandler
    *   The theme handler.
    * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
    *   The module handler to invoke the alter hook with.
-   * @param \Drupal\Core\Theme\ThemeManagerInterface $theme_manager
+   * @param \Drupal\Core\Theme\ThemeManagerInterface $themeManager
    *   The theme manager.
    */
-  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ThemeHandlerInterface|CacheTagsInvalidatorInterface $theme_handler, ModuleHandlerInterface $module_handler, ThemeManagerInterface $theme_manager) {
+  public function __construct(
+    \Traversable $namespaces,
+    CacheBackendInterface $cache_backend,
+    protected ThemeHandlerInterface $themeHandler,
+    ModuleHandlerInterface $module_handler,
+    protected ThemeManagerInterface $themeManager,
+  ) {
     $this->setCacheBackend($cache_backend, 'element_info');
-    $this->themeManager = $theme_manager;
-    if ($theme_handler instanceof CacheTagsInvalidatorInterface) {
-      @trigger_error('Calling ' . __METHOD__ . '() with the $cache_tag_invalidator argument is deprecated in drupal:10.2.0 and will be removed in drupal:11.0.0. Pass $theme_handler instead. See https://www.drupal.org/node/3355227', E_USER_DEPRECATED);
-      $theme_handler = \Drupal::service('theme_handler');
-    }
-    $this->themeHandler = $theme_handler;
-
     parent::__construct('Element', $namespaces, $module_handler, 'Drupal\Core\Render\Element\ElementInterface', RenderElement::class, 'Drupal\Core\Render\Annotation\RenderElement');
     $this->alterInfo('element_plugin');
   }
diff --git a/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php b/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php
index 9cb8e0a848fb0644c8d03a2f5db952b5d5742055..014897f8066022f39ee9ea70f6ddc287f08a9f15 100644
--- a/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php
+++ b/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php
@@ -33,13 +33,6 @@
  */
 class HtmlResponseAttachmentsProcessor implements AttachmentsResponseProcessorInterface {
 
-  /**
-   * The asset resolver service.
-   *
-   * @var \Drupal\Core\Asset\AssetResolverInterface
-   */
-  protected $assetResolver;
-
   /**
    * A config object for the system performance configuration.
    *
@@ -47,74 +40,37 @@ class HtmlResponseAttachmentsProcessor implements AttachmentsResponseProcessorIn
    */
   protected $config;
 
-  /**
-   * The CSS asset collection renderer service.
-   *
-   * @var \Drupal\Core\Asset\AssetCollectionRendererInterface
-   */
-  protected $cssCollectionRenderer;
-
-  /**
-   * The JS asset collection renderer service.
-   *
-   * @var \Drupal\Core\Asset\AssetCollectionRendererInterface
-   */
-  protected $jsCollectionRenderer;
-
-  /**
-   * The request stack.
-   *
-   * @var \Symfony\Component\HttpFoundation\RequestStack
-   */
-  protected $requestStack;
-
-  /**
-   * The renderer.
-   *
-   * @var \Drupal\Core\Render\RendererInterface
-   */
-  protected $renderer;
-
-  /**
-   * The module handler service.
-   *
-   * @var \Drupal\Core\Extension\ModuleHandlerInterface
-   */
-  protected $moduleHandler;
-
   /**
    * Constructs a HtmlResponseAttachmentsProcessor object.
    *
-   * @param \Drupal\Core\Asset\AssetResolverInterface $asset_resolver
+   * @param \Drupal\Core\Asset\AssetResolverInterface $assetResolver
    *   An asset resolver.
    * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
    *   A config factory for retrieving required config objects.
-   * @param \Drupal\Core\Asset\AssetCollectionRendererInterface $css_collection_renderer
+   * @param \Drupal\Core\Asset\AssetCollectionRendererInterface $cssCollectionRenderer
    *   The CSS asset collection renderer.
-   * @param \Drupal\Core\Asset\AssetCollectionRendererInterface $js_collection_renderer
+   * @param \Drupal\Core\Asset\AssetCollectionRendererInterface $jsCollectionRenderer
    *   The JS asset collection renderer.
-   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
+   * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
    *   The request stack.
    * @param \Drupal\Core\Render\RendererInterface $renderer
    *   The renderer.
-   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler
    *   The module handler service.
-   * @param \Drupal\Core\Language\LanguageManagerInterface|null $languageManager
+   * @param \Drupal\Core\Language\LanguageManagerInterface $languageManager
    *   The language manager.
    */
-  public function __construct(AssetResolverInterface $asset_resolver, ConfigFactoryInterface $config_factory, AssetCollectionRendererInterface $css_collection_renderer, AssetCollectionRendererInterface $js_collection_renderer, RequestStack $request_stack, RendererInterface $renderer, ModuleHandlerInterface $module_handler, protected ?LanguageManagerInterface $languageManager = NULL) {
-    $this->assetResolver = $asset_resolver;
+  public function __construct(
+    protected AssetResolverInterface $assetResolver,
+    ConfigFactoryInterface $config_factory,
+    protected AssetCollectionRendererInterface $cssCollectionRenderer,
+    protected AssetCollectionRendererInterface $jsCollectionRenderer,
+    protected RequestStack $requestStack,
+    protected RendererInterface $renderer,
+    protected ModuleHandlerInterface $moduleHandler,
+    protected LanguageManagerInterface $languageManager,
+  ) {
     $this->config = $config_factory->get('system.performance');
-    $this->cssCollectionRenderer = $css_collection_renderer;
-    $this->jsCollectionRenderer = $js_collection_renderer;
-    $this->requestStack = $request_stack;
-    $this->renderer = $renderer;
-    $this->moduleHandler = $module_handler;
-    if (!isset($languageManager)) {
-      // phpcs:ignore Drupal.Semantics.FunctionTriggerError
-      @trigger_error('Calling ' . __METHOD__ . '() without the $languageManager argument is deprecated in drupal:10.1.0 and will be required in drupal:11.0.0', E_USER_DEPRECATED);
-      $this->languageManager = \Drupal::languageManager();
-    }
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Render/PlaceholderingRenderCache.php b/core/lib/Drupal/Core/Render/PlaceholderingRenderCache.php
index d1bd1af90a72b2c938802ee55d0a2c3d879951fa..e73b61214309aaef58cf06bff508f7c7b31f7f98 100644
--- a/core/lib/Drupal/Core/Render/PlaceholderingRenderCache.php
+++ b/core/lib/Drupal/Core/Render/PlaceholderingRenderCache.php
@@ -2,8 +2,8 @@
 
 namespace Drupal\Core\Render;
 
-use Drupal\Core\Cache\CacheFactoryInterface;
 use Drupal\Core\Cache\Context\CacheContextsManager;
+use Drupal\Core\Cache\VariationCacheFactoryInterface;
 use Symfony\Component\HttpFoundation\RequestStack;
 
 /**
@@ -39,13 +39,6 @@
  */
 class PlaceholderingRenderCache extends RenderCache {
 
-  /**
-   * The placeholder generator.
-   *
-   * @var \Drupal\Core\Render\PlaceholderGeneratorInterface
-   */
-  protected $placeholderGenerator;
-
   /**
    * Stores rendered results for automatically placeholdered elements.
    *
@@ -74,22 +67,22 @@ class PlaceholderingRenderCache extends RenderCache {
   /**
    * Constructs a new PlaceholderingRenderCache object.
    *
-   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
+   * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
    *   The request stack.
-   * @param \Drupal\Core\Cache\VariationCacheFactoryInterface $cache_factory
+   * @param \Drupal\Core\Cache\VariationCacheFactoryInterface $cacheFactory
    *   The variation cache factory.
-   * @param \Drupal\Core\Cache\Context\CacheContextsManager $cache_contexts_manager
+   * @param \Drupal\Core\Cache\Context\CacheContextsManager $cacheContextsManager
    *   The cache contexts manager.
-   * @param \Drupal\Core\Render\PlaceholderGeneratorInterface $placeholder_generator
+   * @param \Drupal\Core\Render\PlaceholderGeneratorInterface $placeholderGenerator
    *   The placeholder generator.
    */
-  public function __construct(RequestStack $request_stack, $cache_factory, CacheContextsManager $cache_contexts_manager, PlaceholderGeneratorInterface $placeholder_generator) {
-    if ($cache_factory instanceof CacheFactoryInterface) {
-      @trigger_error('Injecting ' . __CLASS__ . ' with the "cache_factory" service is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Use "variation_cache_factory" instead. See https://www.drupal.org/node/3365546', E_USER_DEPRECATED);
-      $cache_factory = \Drupal::service('variation_cache_factory');
-    }
-    parent::__construct($request_stack, $cache_factory, $cache_contexts_manager);
-    $this->placeholderGenerator = $placeholder_generator;
+  public function __construct(
+    RequestStack $requestStack,
+    VariationCacheFactoryInterface $cacheFactory,
+    CacheContextsManager $cacheContextsManager,
+    protected PlaceholderGeneratorInterface $placeholderGenerator,
+  ) {
+    parent::__construct($requestStack, $cacheFactory, $cacheContextsManager);
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Render/RenderCache.php b/core/lib/Drupal/Core/Render/RenderCache.php
index c93079b507f6e8ad3621a1430aa8ab21575c62fb..61a6c26d35975c308938bc5983b0a9e725ebdd3b 100644
--- a/core/lib/Drupal/Core/Render/RenderCache.php
+++ b/core/lib/Drupal/Core/Render/RenderCache.php
@@ -3,8 +3,8 @@
 namespace Drupal\Core\Render;
 
 use Drupal\Core\Cache\CacheableMetadata;
-use Drupal\Core\Cache\CacheFactoryInterface;
 use Drupal\Core\Cache\Context\CacheContextsManager;
+use Drupal\Core\Cache\VariationCacheFactoryInterface;
 use Symfony\Component\HttpFoundation\RequestStack;
 
 /**
@@ -14,45 +14,21 @@
  */
 class RenderCache implements RenderCacheInterface {
 
-  /**
-   * The request stack.
-   *
-   * @var \Symfony\Component\HttpFoundation\RequestStack
-   */
-  protected $requestStack;
-
-  /**
-   * The variation cache factory.
-   *
-   * @var \Drupal\Core\Cache\VariationCacheFactoryInterface
-   */
-  protected $cacheFactory;
-
-  /**
-   * The cache contexts manager.
-   *
-   * @var \Drupal\Core\Cache\Context\CacheContextsManager
-   */
-  protected $cacheContextsManager;
-
   /**
    * Constructs a new RenderCache object.
    *
-   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
+   * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
    *   The request stack.
-   * @param \Drupal\Core\Cache\VariationCacheFactoryInterface $cache_factory
+   * @param \Drupal\Core\Cache\VariationCacheFactoryInterface $cacheFactory
    *   The variation cache factory.
-   * @param \Drupal\Core\Cache\Context\CacheContextsManager $cache_contexts_manager
+   * @param \Drupal\Core\Cache\Context\CacheContextsManager $cacheContextsManager
    *   The cache contexts manager.
    */
-  public function __construct(RequestStack $request_stack, $cache_factory, CacheContextsManager $cache_contexts_manager) {
-    if ($cache_factory instanceof CacheFactoryInterface) {
-      @trigger_error('Injecting ' . __CLASS__ . ' with the "cache_factory" service is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Use "variation_cache_factory" instead. See https://www.drupal.org/node/3365546', E_USER_DEPRECATED);
-      $cache_factory = \Drupal::service('variation_cache_factory');
-    }
-    $this->requestStack = $request_stack;
-    $this->cacheFactory = $cache_factory;
-    $this->cacheContextsManager = $cache_contexts_manager;
+  public function __construct(
+    protected RequestStack $requestStack,
+    protected VariationCacheFactoryInterface $cacheFactory,
+    protected CacheContextsManager $cacheContextsManager,
+  ) {
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php
index a65c28537a184160fd4b5eebc0ae85795e8fdf9f..d36feab14e4311d357647a89297bb23116c72312 100644
--- a/core/lib/Drupal/Core/Render/Renderer.php
+++ b/core/lib/Drupal/Core/Render/Renderer.php
@@ -9,7 +9,6 @@
 use Drupal\Core\Access\AccessResultInterface;
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Cache\CacheableMetadata;
-use Drupal\Core\Controller\ControllerResolverInterface;
 use Drupal\Core\Form\FormHelper;
 use Drupal\Core\Render\Element\RenderCallbackInterface;
 use Drupal\Core\Security\TrustedCallbackInterface;
@@ -24,41 +23,6 @@
 class Renderer implements RendererInterface {
   use DoTrustedCallbackTrait;
 
-  /**
-   * The theme manager.
-   *
-   * @var \Drupal\Core\Theme\ThemeManagerInterface
-   */
-  protected $theme;
-
-  /**
-   * The callable resolver.
-   *
-   * @var \Drupal\Core\Utility\CallableResolver
-   */
-  protected CallableResolver $callableResolver;
-
-  /**
-   * The element info.
-   *
-   * @var \Drupal\Core\Render\ElementInfoManagerInterface
-   */
-  protected $elementInfo;
-
-  /**
-   * The placeholder generator.
-   *
-   * @var \Drupal\Core\Render\PlaceholderGeneratorInterface
-   */
-  protected $placeholderGenerator;
-
-  /**
-   * The render cache service.
-   *
-   * @var \Drupal\Core\Render\RenderCacheInterface
-   */
-  protected $renderCache;
-
   /**
    * The renderer configuration array.
    *
@@ -73,13 +37,6 @@ class Renderer implements RendererInterface {
    */
   protected $isRenderingRoot = FALSE;
 
-  /**
-   * The request stack.
-   *
-   * @var \Symfony\Component\HttpFoundation\RequestStack
-   */
-  protected $requestStack;
-
   /**
    * The render context collection.
    *
@@ -100,36 +57,34 @@ class Renderer implements RendererInterface {
   /**
    * Constructs a new Renderer.
    *
-   * @param \Drupal\Core\Utility\CallableResolver|\Drupal\Core\Controller\ControllerResolverInterface $callable_resolver
+   * @param \Drupal\Core\Utility\CallableResolver $callableResolver
    *   The callable resolver.
    * @param \Drupal\Core\Theme\ThemeManagerInterface $theme
    *   The theme manager.
-   * @param \Drupal\Core\Render\ElementInfoManagerInterface $element_info
+   * @param \Drupal\Core\Render\ElementInfoManagerInterface $elementInfo
    *   The element info.
-   * @param \Drupal\Core\Render\PlaceholderGeneratorInterface $placeholder_generator
+   * @param \Drupal\Core\Render\PlaceholderGeneratorInterface $placeholderGenerator
    *   The placeholder generator.
-   * @param \Drupal\Core\Render\RenderCacheInterface $render_cache
+   * @param \Drupal\Core\Render\RenderCacheInterface $renderCache
    *   The render cache service.
-   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
+   * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
    *   The request stack.
    * @param array $renderer_config
    *   The renderer configuration array.
    */
-  public function __construct(ControllerResolverInterface|CallableResolver $callable_resolver, ThemeManagerInterface $theme, ElementInfoManagerInterface $element_info, PlaceholderGeneratorInterface $placeholder_generator, RenderCacheInterface $render_cache, RequestStack $request_stack, array $renderer_config) {
-    if ($callable_resolver instanceof ControllerResolverInterface) {
-      @trigger_error('Calling ' . __METHOD__ . '() with an argument of ControllerResolverInterface is deprecated in drupal:10.2.0 and is removed in drupal:11.0.0. Use \Drupal\Core\Utility\CallableResolver instead. See https://www.drupal.org/node/3369969', E_USER_DEPRECATED);
-      $callable_resolver = \Drupal::service('callable_resolver');
-    }
-    $this->callableResolver = $callable_resolver;
-    $this->theme = $theme;
-    $this->elementInfo = $element_info;
-    $this->placeholderGenerator = $placeholder_generator;
-    $this->renderCache = $render_cache;
+  public function __construct(
+    protected CallableResolver $callableResolver,
+    protected ThemeManagerInterface $theme,
+    protected ElementInfoManagerInterface $elementInfo,
+    protected PlaceholderGeneratorInterface $placeholderGenerator,
+    protected RenderCacheInterface $renderCache,
+    protected RequestStack $requestStack,
+    array $renderer_config,
+  ) {
     if (!isset($renderer_config['debug'])) {
       $renderer_config['debug'] = FALSE;
     }
     $this->rendererConfig = $renderer_config;
-    $this->requestStack = $request_stack;
 
     // Initialize the context collection if needed.
     if (!isset(static::$contextCollection)) {
diff --git a/core/tests/Drupal/Tests/Component/Render/FormattableMarkupTest.php b/core/tests/Drupal/Tests/Component/Render/FormattableMarkupTest.php
index 06a50ebd5bc7972c188f650b190a057299fa0769..cb52f2f6952418779cead52505d5680093904950 100644
--- a/core/tests/Drupal/Tests/Component/Render/FormattableMarkupTest.php
+++ b/core/tests/Drupal/Tests/Component/Render/FormattableMarkupTest.php
@@ -54,29 +54,6 @@ public function testCount() {
     $this->assertEquals(strlen($string), $formattable_string->count());
   }
 
-  /**
-   * @covers ::__toString
-   * @dataProvider providerTestNullPlaceholder
-   * @group legacy
-   */
-  public function testNullPlaceholder(string $expected, string $string, array $arguments, string $expected_deprecation): void {
-    $this->expectDeprecation($expected_deprecation);
-    $this->assertEquals($expected, (string) new FormattableMarkup($string, $arguments));
-  }
-
-  /**
-   * Data provider for FormattableMarkupTest::testNullPlaceholder().
-   *
-   * @return array
-   */
-  public static function providerTestNullPlaceholder() {
-    return [
-      ['', '@empty', ['@empty' => NULL], 'Deprecated NULL placeholder value for key (@empty) in: "@empty". This will throw a PHP error in drupal:11.0.0. See https://www.drupal.org/node/3318826'],
-      ['', ':empty', [':empty' => NULL], 'Deprecated NULL placeholder value for key (:empty) in: ":empty". This will throw a PHP error in drupal:11.0.0. See https://www.drupal.org/node/3318826'],
-      ['<em class="placeholder"></em>', '%empty', ['%empty' => NULL], 'Deprecated NULL placeholder value for key (%%empty) in: "%%empty". This will throw a PHP error in drupal:11.0.0. See https://www.drupal.org/node/3318826'],
-    ];
-  }
-
   /**
    * Custom error handler that saves the last error.
    *