diff --git a/core/modules/layout_builder/layout_builder.services.yml b/core/modules/layout_builder/layout_builder.services.yml
index 6e94ed74d268351b258c81ecdc86824eac01802b..87c08814f6208cc2af08d67ee0214017050a5bb2 100644
--- a/core/modules/layout_builder/layout_builder.services.yml
+++ b/core/modules/layout_builder/layout_builder.services.yml
@@ -6,13 +6,6 @@ services:
     class: Drupal\layout_builder\Access\LayoutBuilderAccessCheck
     tags:
       - { name: access_check, applies_to: _layout_builder_access }
-  access_check.entity.layout:
-    # Deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Use
-    # access_check.entity.layout_builder_access instead. See
-    # https://www.drupal.org/node/3039551.
-    class: Drupal\layout_builder\Access\LayoutSectionAccessCheck
-    tags:
-      - { name: access_check, applies_to: _has_layout_section }
   plugin.manager.layout_builder.section_storage:
     class: Drupal\layout_builder\SectionStorage\SectionStorageManager
     parent: default_plugin_manager
diff --git a/core/modules/layout_builder/src/Access/LayoutSectionAccessCheck.php b/core/modules/layout_builder/src/Access/LayoutSectionAccessCheck.php
deleted file mode 100644
index e57218c9d94944176155ac5db63f02dfc355c248..0000000000000000000000000000000000000000
--- a/core/modules/layout_builder/src/Access/LayoutSectionAccessCheck.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-namespace Drupal\layout_builder\Access;
-
-use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Routing\Access\AccessInterface;
-use Drupal\Core\Routing\RouteMatchInterface;
-use Drupal\Core\Session\AccountInterface;
-use Drupal\layout_builder\SectionStorageInterface;
-
-/**
- * Provides an access check for the Layout Builder UI.
- *
- * @internal
- *   Tagged services are internal.
- *
- * @todo Deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Use
- *   \Drupal\layout_builder\Access\LayoutBuilderAccessCheck instead. See
- *   https://www.drupal.org/node/3039551.
- */
-class LayoutSectionAccessCheck implements AccessInterface {
-
-  /**
-   * Checks routing access to the layout.
-   *
-   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
-   *   The current route match.
-   * @param \Drupal\Core\Session\AccountInterface $account
-   *   The currently logged in account.
-   *
-   * @return \Drupal\Core\Access\AccessResultInterface
-   *   The access result.
-   */
-  public function access(RouteMatchInterface $route_match, AccountInterface $account) {
-    @trigger_error(__NAMESPACE__ . '\LayoutSectionAccessCheck is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Use \Drupal\layout_builder\Access\LayoutBuilderAccessCheck instead. See https://www.drupal.org/node/3039551.', E_USER_DEPRECATED);
-    $section_storage = $route_match->getParameter('section_storage');
-
-    if (empty($section_storage)) {
-      return AccessResult::forbidden()->addCacheContexts(['route']);
-    }
-
-    if (!$section_storage instanceof SectionStorageInterface) {
-      $access = AccessResult::forbidden();
-    }
-    else {
-      $access = AccessResult::allowedIfHasPermission($account, 'configure any layout');
-    }
-
-    return $access->addCacheableDependency($section_storage);
-  }
-
-}
diff --git a/core/modules/layout_builder/src/Controller/ChooseBlockController.php b/core/modules/layout_builder/src/Controller/ChooseBlockController.php
index a20a351d56e42b87c76a04badcff9f8f72a7b914..5da534e68702d5ef35d00d71a064ccd38b72e5c2 100644
--- a/core/modules/layout_builder/src/Controller/ChooseBlockController.php
+++ b/core/modules/layout_builder/src/Controller/ChooseBlockController.php
@@ -58,13 +58,9 @@ class ChooseBlockController implements ContainerInjectionInterface {
    * @param \Drupal\Core\Session\AccountInterface $current_user
    *   The current user.
    */
-  public function __construct(BlockManagerInterface $block_manager, EntityTypeManagerInterface $entity_type_manager, AccountInterface $current_user = NULL) {
+  public function __construct(BlockManagerInterface $block_manager, EntityTypeManagerInterface $entity_type_manager, AccountInterface $current_user) {
     $this->blockManager = $block_manager;
     $this->entityTypeManager = $entity_type_manager;
-    if (!$current_user) {
-      @trigger_error('The current_user service must be passed to ChooseBlockController::__construct(), it is required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $current_user = \Drupal::currentUser();
-    }
     $this->currentUser = $current_user;
   }
 
diff --git a/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php b/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php
index dc07388ba38b0d7a452ae7ccd549725aa64560d6..8f3b02289998ae7d4fdb8e365c5eb9d0aac7035a 100644
--- a/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php
+++ b/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php
@@ -341,30 +341,6 @@ protected function getContextsForEntity(FieldableEntityInterface $entity) {
     ] + $this->contextRepository()->getAvailableContexts();
   }
 
-  /**
-   * Gets the runtime sections for a given entity.
-   *
-   * @param \Drupal\Core\Entity\FieldableEntityInterface $entity
-   *   The entity.
-   *
-   * @return \Drupal\layout_builder\Section[]
-   *   The sections.
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
-   *   \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::findByContext()
-   *   should be used instead. See https://www.drupal.org/node/3022574.
-   */
-  protected function getRuntimeSections(FieldableEntityInterface $entity) {
-    @trigger_error('\Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::getRuntimeSections() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::findByContext() should be used instead. See https://www.drupal.org/node/3022574.', E_USER_DEPRECATED);
-    // For backwards compatibility, mimic the functionality of ::buildSections()
-    // by constructing a cacheable metadata object and retrieving the
-    // entity-based contexts.
-    $cacheability = new CacheableMetadata();
-    $contexts = $this->getContextsForEntity($entity);
-    $storage = $this->sectionStorageManager()->findByContext($contexts, $cacheability);
-    return $storage ? $storage->getSections() : [];
-  }
-
   /**
    * {@inheritdoc}
    *
diff --git a/core/modules/layout_builder/src/Form/DefaultsEntityForm.php b/core/modules/layout_builder/src/Form/DefaultsEntityForm.php
index 8fb71c52f9dcdd0c0b357d5174b43068792a1db2..df964916361f017be158c5b7f62fd4cd033ef023 100644
--- a/core/modules/layout_builder/src/Form/DefaultsEntityForm.php
+++ b/core/modules/layout_builder/src/Form/DefaultsEntityForm.php
@@ -50,12 +50,8 @@ class DefaultsEntityForm extends EntityForm {
    * @param \Drupal\Core\Entity\EntityTypeBundleInfoInterface $entity_type_bundle_info
    *   The entity type bundle info service.
    */
-  public function __construct(LayoutTempstoreRepositoryInterface $layout_tempstore_repository, EntityTypeBundleInfoInterface $entity_type_bundle_info = NULL) {
+  public function __construct(LayoutTempstoreRepositoryInterface $layout_tempstore_repository, EntityTypeBundleInfoInterface $entity_type_bundle_info) {
     $this->layoutTempstoreRepository = $layout_tempstore_repository;
-    if (!$entity_type_bundle_info) {
-      @trigger_error('The entity_type.bundle.info service must be passed to DefaultsEntityForm::__construct(), it is required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $entity_type_bundle_info = \Drupal::service('entity_type.bundle.info');
-    }
     $this->entityTypeBundleInfo = $entity_type_bundle_info;
   }
 
diff --git a/core/modules/layout_builder/src/InlineBlockEntityOperations.php b/core/modules/layout_builder/src/InlineBlockEntityOperations.php
index 37a14c1f58241ee089cfb62777fa4923040b9838..86c8adc442ee66cc00dc4e7f5ba097273abbc54d 100644
--- a/core/modules/layout_builder/src/InlineBlockEntityOperations.php
+++ b/core/modules/layout_builder/src/InlineBlockEntityOperations.php
@@ -2,7 +2,6 @@
 
 namespace Drupal\layout_builder;
 
-use Drupal\Core\Database\Connection;
 use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
@@ -55,25 +54,13 @@ class InlineBlockEntityOperations implements ContainerInjectionInterface {
    *   The entity type manager service.
    * @param \Drupal\layout_builder\InlineBlockUsageInterface $usage
    *   Inline block usage tracking service.
-   * @param \Drupal\Core\Database\Connection $database
-   *   The database connection.
    * @param \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface $section_storage_manager
    *   (optional) The section storage manager.
-   *
-   * @todo The current constructor signature is deprecated:
-   *   - The $section_storage_manager parameter is optional, but should become
-   *   required.
-   *   - The $database parameter is unused and should be removed.
-   *   Deprecate in https://www.drupal.org/node/3031492.
    */
-  public function __construct(EntityTypeManagerInterface $entityTypeManager, InlineBlockUsageInterface $usage, Connection $database, SectionStorageManagerInterface $section_storage_manager = NULL) {
+  public function __construct(EntityTypeManagerInterface $entityTypeManager, InlineBlockUsageInterface $usage, SectionStorageManagerInterface $section_storage_manager) {
     $this->entityTypeManager = $entityTypeManager;
     $this->blockContentStorage = $entityTypeManager->getStorage('block_content');
     $this->usage = $usage;
-    if ($section_storage_manager === NULL) {
-      @trigger_error('The plugin.manager.layout_builder.section_storage service must be passed to \Drupal\layout_builder\InlineBlockEntityOperations::__construct(). It was added in Drupal 8.7.0 and will be required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $section_storage_manager = \Drupal::service('plugin.manager.layout_builder.section_storage');
-    }
     $this->sectionStorageManager = $section_storage_manager;
   }
 
@@ -84,7 +71,6 @@ public static function create(ContainerInterface $container) {
     return new static(
       $container->get('entity_type.manager'),
       $container->get('inline_block.usage'),
-      $container->get('database'),
       $container->get('plugin.manager.layout_builder.section_storage')
     );
   }
diff --git a/core/modules/layout_builder/src/LayoutEntityHelperTrait.php b/core/modules/layout_builder/src/LayoutEntityHelperTrait.php
index 53b74490ab8e1588cf4be0ac7f59bd25dbc11e71..1abf32217884bc0b29ad6b46e862d79b1814a0fa 100644
--- a/core/modules/layout_builder/src/LayoutEntityHelperTrait.php
+++ b/core/modules/layout_builder/src/LayoutEntityHelperTrait.php
@@ -11,7 +11,6 @@
 use Drupal\Core\Plugin\Context\ContextDefinition;
 use Drupal\Core\Plugin\Context\EntityContext;
 use Drupal\layout_builder\Entity\LayoutEntityDisplayInterface;
-use Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage;
 
 /**
  * Methods to help with entities using the layout builder.
@@ -124,28 +123,6 @@ protected function getSectionStorageForEntity(EntityInterface $entity) {
     return $this->sectionStorageManager()->findByContext($contexts, new CacheableMetadata());
   }
 
-  /**
-   * Determines if an entity is using a field for the layout override.
-   *
-   * @param \Drupal\Core\Entity\EntityInterface $entity
-   *   The entity.
-   *
-   * @return bool
-   *   TRUE if the entity is using a field for a layout override.
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
-   *   To determine if an entity has a layout override, use
-   *   \Drupal\layout_builder\LayoutEntityHelperTrait::getSectionStorageForEntity()
-   *   and check whether the result is an instance of
-   *   \Drupal\layout_builder\DefaultsSectionStorageInterface.
-   *
-   * @see https://www.drupal.org/node/3030609
-   */
-  protected function isEntityUsingFieldOverride(EntityInterface $entity) {
-    @trigger_error('\Drupal\layout_builder\LayoutEntityHelperTrait::isEntityUsingFieldOverride() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Internal storage of overrides may change so the existence of the field does not necessarily guarantee an overridable entity. See https://www.drupal.org/node/3030609.', E_USER_DEPRECATED);
-    return $entity instanceof FieldableEntityInterface && $entity->hasField(OverridesSectionStorage::FIELD_NAME);
-  }
-
   /**
    * Determines if the original entity used the default section storage.
    *
diff --git a/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php b/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php
index 01f64eb37f7c153ba70f5d830a6ed659c06193bd..0f2288d7b5085c0831436818927547a4421b89e7 100644
--- a/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php
+++ b/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php
@@ -84,20 +84,15 @@ class InlineBlock extends BlockBase implements ContainerFactoryPluginInterface,
    * @param \Drupal\Core\Session\AccountInterface $current_user
    *   The current user.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, AccountInterface $current_user = NULL) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, AccountInterface $current_user) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
 
     $this->entityTypeManager = $entity_type_manager;
     $this->entityDisplayRepository = $entity_display_repository;
+    $this->currentUser = $current_user;
     if (!empty($this->configuration['block_revision_id']) || !empty($this->configuration['block_serialized'])) {
       $this->isNew = FALSE;
     }
-
-    if (!$current_user) {
-      @trigger_error('The current_user service must be passed to InlineBlock::__construct(), it is required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $current_user = \Drupal::currentUser();
-    }
-    $this->currentUser = $current_user;
   }
 
   /**
diff --git a/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php b/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php
index de8f1bfc452112b29e2d5f870b87162fe7c034fc..140a91213cc67be048d2eca988881c67cbebd4c2 100644
--- a/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php
+++ b/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php
@@ -213,49 +213,6 @@ protected function getEntityTypes() {
     });
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function extractIdFromRoute($value, $definition, $name, array $defaults) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    if (is_string($value) && strpos($value, '.') !== FALSE) {
-      return $value;
-    }
-
-    // If a bundle is not provided but a value corresponding to the bundle key
-    // is, use that for the bundle value.
-    if (empty($defaults['bundle']) && isset($defaults['bundle_key']) && !empty($defaults[$defaults['bundle_key']])) {
-      $defaults['bundle'] = $defaults[$defaults['bundle_key']];
-    }
-
-    if (!empty($defaults['entity_type_id']) && !empty($defaults['bundle']) && !empty($defaults['view_mode_name'])) {
-      return $defaults['entity_type_id'] . '.' . $defaults['bundle'] . '.' . $defaults['view_mode_name'];
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getSectionListFromId($id) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    if (strpos($id, '.') === FALSE) {
-      throw new \InvalidArgumentException(sprintf('The "%s" ID for the "%s" section storage type is invalid', $id, $this->getStorageType()));
-    }
-
-    $storage = $this->entityTypeManager->getStorage('entity_view_display');
-    // If the display does not exist, create a new one.
-    if (!$display = $storage->load($id)) {
-      list($entity_type_id, $bundle, $view_mode) = explode('.', $id, 3);
-      $display = $storage->create([
-        'targetEntityType' => $entity_type_id,
-        'bundle' => $bundle,
-        'mode' => $view_mode,
-        'status' => TRUE,
-      ]);
-    }
-    return $display;
-  }
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php b/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php
index eb3e12ef9b99ab07ca5db019f7cfcbdc1fc87add..d6c0729643a7a69be8ea502e6ca2b21e488bf251 100644
--- a/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php
+++ b/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php
@@ -93,17 +93,13 @@ class OverridesSectionStorage extends SectionStorageBase implements ContainerFac
   /**
    * {@inheritdoc}
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, SectionStorageManagerInterface $section_storage_manager, EntityRepositoryInterface $entity_repository, AccountInterface $current_user = NULL) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, SectionStorageManagerInterface $section_storage_manager, EntityRepositoryInterface $entity_repository, AccountInterface $current_user) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
 
     $this->entityTypeManager = $entity_type_manager;
     $this->entityFieldManager = $entity_field_manager;
     $this->sectionStorageManager = $section_storage_manager;
     $this->entityRepository = $entity_repository;
-    if (!$current_user) {
-      @trigger_error('The current_user service must be passed to OverridesSectionStorage::__construct(), it is required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $current_user = \Drupal::currentUser();
-    }
     $this->currentUser = $current_user;
   }
 
@@ -164,37 +160,6 @@ public function getTempstoreKey() {
     return $key;
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function extractIdFromRoute($value, $definition, $name, array $defaults) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    if (strpos($value, '.') !== FALSE) {
-      return $value;
-    }
-
-    if (isset($defaults['entity_type_id']) && !empty($defaults[$defaults['entity_type_id']])) {
-      $entity_type_id = $defaults['entity_type_id'];
-      $entity_id = $defaults[$entity_type_id];
-      return $entity_type_id . '.' . $entity_id;
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getSectionListFromId($id) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    if (strpos($id, '.') !== FALSE) {
-      list($entity_type_id, $entity_id) = explode('.', $id, 2);
-      $entity = $this->entityRepository->getActive($entity_type_id, $entity_id);
-      if ($entity instanceof FieldableEntityInterface && $entity->hasField(static::FIELD_NAME)) {
-        return $entity->get(static::FIELD_NAME);
-      }
-    }
-    throw new \InvalidArgumentException(sprintf('The "%s" ID for the "%s" section storage type is invalid', $id, $this->getStorageType()));
-  }
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/layout_builder/src/Plugin/SectionStorage/SectionStorageBase.php b/core/modules/layout_builder/src/Plugin/SectionStorage/SectionStorageBase.php
index 71b444a68c17dd701dc7bd7b3c7948b3866cf51f..415fed907ef5aa0cacea7c36f7d560261617c19e 100644
--- a/core/modules/layout_builder/src/Plugin/SectionStorage/SectionStorageBase.php
+++ b/core/modules/layout_builder/src/Plugin/SectionStorage/SectionStorageBase.php
@@ -7,7 +7,6 @@
 use Drupal\Core\Plugin\ContextAwarePluginBase;
 use Drupal\layout_builder\Routing\LayoutBuilderRoutesTrait;
 use Drupal\layout_builder\Section;
-use Drupal\layout_builder\SectionListInterface;
 use Drupal\layout_builder\SectionStorageInterface;
 use Drupal\layout_builder\TempStoreIdentifierInterface;
 
@@ -18,27 +17,6 @@ abstract class SectionStorageBase extends ContextAwarePluginBase implements Sect
 
   use LayoutBuilderRoutesTrait;
 
-  /**
-   * Sets the section list on the storage.
-   *
-   * @param \Drupal\layout_builder\SectionListInterface $section_list
-   *   The section list.
-   *
-   * @internal
-   *   As of Drupal 8.7.0, this method should no longer be used. It previously
-   *   should only have been used during storage instantiation.
-   *
-   * @throws \Exception
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0. This
-   *   method should no longer be used. The section list should be derived from
-   *   context. See https://www.drupal.org/node/3016262.
-   */
-  public function setSectionList(SectionListInterface $section_list) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::setSectionList() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. This method should no longer be used. The section list should be derived from context. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    throw new \Exception('\Drupal\layout_builder\SectionStorageInterface::setSectionList() must no longer be called. The section list should be derived from context. See https://www.drupal.org/node/3016262.');
-  }
-
   /**
    * Gets the section list.
    *
diff --git a/core/modules/layout_builder/src/SectionStorage/SectionStorageManager.php b/core/modules/layout_builder/src/SectionStorage/SectionStorageManager.php
index f425187fa34347aace90ce29c52acc8aee6374bf..4d89ca6235d094bf770906be0992ba000ec494bd 100644
--- a/core/modules/layout_builder/src/SectionStorage/SectionStorageManager.php
+++ b/core/modules/layout_builder/src/SectionStorage/SectionStorageManager.php
@@ -42,13 +42,9 @@ class SectionStorageManager extends DefaultPluginManager implements SectionStora
    * @param \Drupal\Core\Plugin\Context\ContextHandlerInterface $context_handler
    *   The context handler.
    */
-  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, ContextHandlerInterface $context_handler = NULL) {
+  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, ContextHandlerInterface $context_handler) {
     parent::__construct('Plugin/SectionStorage', $namespaces, $module_handler, SectionStorageInterface::class, SectionStorage::class);
 
-    if (!$context_handler) {
-      @trigger_error('The context.handler service must be passed to \Drupal\layout_builder\SectionStorage\SectionStorageManager::__construct(); it was added in Drupal 8.7.0 and will be required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $context_handler = \Drupal::service('context.handler');
-    }
     $this->contextHandler = $context_handler;
 
     $this->alterInfo('layout_builder_section_storage');
@@ -111,22 +107,4 @@ public function loadEmpty($type) {
     return $this->createInstance($type);
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function loadFromStorageId($type, $id) {
-    @trigger_error('\Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::loadFromStorageId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load() should be used instead. See https://www.drupal.org/node/3012353.', E_USER_DEPRECATED);
-    $contexts = $this->loadEmpty($type)->deriveContextsFromRoute($id, [], '', []);
-    return $this->load($type, $contexts);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function loadFromRoute($type, $value, $definition, $name, array $defaults) {
-    @trigger_error('\Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::loadFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() and \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load() should be used instead. See https://www.drupal.org/node/3012353.', E_USER_DEPRECATED);
-    $contexts = $this->loadEmpty($type)->deriveContextsFromRoute($value, $definition, $name, $defaults);
-    return $this->load($type, $contexts);
-  }
-
 }
diff --git a/core/modules/layout_builder/src/SectionStorage/SectionStorageManagerInterface.php b/core/modules/layout_builder/src/SectionStorage/SectionStorageManagerInterface.php
index 323fee50bbb5ef0a8f0652dc074ada466b4ed024..d2d5e42a005a850575b4b4cb88c48fa577bf584b 100644
--- a/core/modules/layout_builder/src/SectionStorage/SectionStorageManagerInterface.php
+++ b/core/modules/layout_builder/src/SectionStorage/SectionStorageManagerInterface.php
@@ -59,50 +59,4 @@ public function findByContext(array $contexts, RefinableCacheableDependencyInter
    */
   public function loadEmpty($type);
 
-  /**
-   * Loads a section storage populated with an existing section list.
-   *
-   * @param string $type
-   *   The section storage type.
-   * @param string $id
-   *   The section list ID.
-   *
-   * @return \Drupal\layout_builder\SectionStorageInterface
-   *   The section storage.
-   *
-   * @throws \InvalidArgumentException
-   *   Thrown if the ID is invalid.
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
-   *   \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load()
-   *   should be used instead. See https://www.drupal.org/node/3012353.
-   */
-  public function loadFromStorageId($type, $id);
-
-  /**
-   * Loads a section storage populated with a section list derived from a route.
-   *
-   * @param string $type
-   *   The section storage type.
-   * @param string $value
-   *   The raw value.
-   * @param mixed $definition
-   *   The parameter definition provided in the route options.
-   * @param string $name
-   *   The name of the parameter.
-   * @param array $defaults
-   *   The route defaults array.
-   *
-   * @return \Drupal\layout_builder\SectionStorageInterface|null
-   *   The section storage if it could be loaded, or NULL otherwise.
-   *
-   * @see \Drupal\Core\ParamConverter\ParamConverterInterface::convert()
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
-   *   \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute()
-   *   and \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load()
-   *   should be used instead. See https://www.drupal.org/node/3012353.
-   */
-  public function loadFromRoute($type, $value, $definition, $name, array $defaults);
-
 }
diff --git a/core/modules/layout_builder/src/SectionStorageInterface.php b/core/modules/layout_builder/src/SectionStorageInterface.php
index b555e9a9342cef109d24f2fb9dfefa1f43e88c43..35b3a9c87b8e698c10d99babe32afc3f3ec83d09 100644
--- a/core/modules/layout_builder/src/SectionStorageInterface.php
+++ b/core/modules/layout_builder/src/SectionStorageInterface.php
@@ -32,27 +32,6 @@ public function getStorageId();
    */
   public function getStorageType();
 
-  /**
-   * Derives the section list from the storage ID.
-   *
-   * @param string $id
-   *   The storage ID, see ::getStorageId().
-   *
-   * @return \Drupal\layout_builder\SectionListInterface
-   *   The section list.
-   *
-   * @throws \InvalidArgumentException
-   *   Thrown if the ID is invalid.
-   *
-   * @internal
-   *   This should only be called during section storage instantiation.
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0. The
-   *   section list should be derived from context. See
-   *   https://www.drupal.org/node/3016262.
-   */
-  public function getSectionListFromId($id);
-
   /**
    * Provides the routes needed for Layout Builder UI.
    *
@@ -87,30 +66,6 @@ public function getRedirectUrl();
    */
   public function getLayoutBuilderUrl($rel = 'view');
 
-  /**
-   * Configures the plugin based on route values.
-   *
-   * @param mixed $value
-   *   The raw value.
-   * @param mixed $definition
-   *   The parameter definition provided in the route options.
-   * @param string $name
-   *   The name of the parameter.
-   * @param array $defaults
-   *   The route defaults array.
-   *
-   * @return string|null
-   *   The section storage ID if it could be extracted, NULL otherwise.
-   *
-   * @internal
-   *   This should only be called during section storage instantiation.
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
-   *   \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute()
-   *   should be used instead. See https://www.drupal.org/node/3016262.
-   */
-  public function extractIdFromRoute($value, $definition, $name, array $defaults);
-
   /**
    * Derives the available plugin contexts from route values.
    *
diff --git a/core/modules/layout_builder/tests/modules/layout_builder_test/src/Plugin/SectionStorage/SimpleConfigSectionStorage.php b/core/modules/layout_builder/tests/modules/layout_builder_test/src/Plugin/SectionStorage/SimpleConfigSectionStorage.php
index a4149f5fde58a0b615689355b846875f36b9ed2d..a17ededaea7169e4bf73ee23f1a43649f181f707 100644
--- a/core/modules/layout_builder/tests/modules/layout_builder_test/src/Plugin/SectionStorage/SimpleConfigSectionStorage.php
+++ b/core/modules/layout_builder/tests/modules/layout_builder_test/src/Plugin/SectionStorage/SimpleConfigSectionStorage.php
@@ -198,22 +198,6 @@ public function getContextsDuringPreview() {
     return $this->getContexts();
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function getSectionListFromId($id) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    return $this;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function extractIdFromRoute($value, $definition, $name, array $defaults) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    return $value ?: $defaults['id'];
-  }
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php
index ee5dfb1f059d6693019b47efd73a5a6df2fb0ac9..af3c49cf646ba6aaf055b3532dd1c0df2f934125 100644
--- a/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php
+++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php
@@ -4,7 +4,6 @@
 
 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
 use Drupal\Tests\contextual\FunctionalJavascript\ContextualLinkClickTrait;
-use Zend\Stdlib\ArrayUtils;
 
 /**
  * Tests toggling of content preview.
@@ -149,10 +148,10 @@ protected function assertOrderInPage(array $items) {
     $blocks = $page->findAll('css', '[data-layout-content-preview-placeholder-label]');
 
     // Filter will only return value if block contains expected text.
-    $blocks_with_expected_text = ArrayUtils::filter($blocks, function ($block, $key) use ($items) {
+    $blocks_with_expected_text = array_filter($blocks, function ($block, $key) use ($items) {
       $block_text = $block->getText();
       return strpos($block_text, $items[$key]) !== FALSE;
-    }, ArrayUtils::ARRAY_FILTER_USE_BOTH);
+    }, ARRAY_FILTER_USE_BOTH);
 
     $this->assertCount(count($items), $blocks_with_expected_text);
   }
diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php
index c3b7bf53da45db9cdffac4ee371c4d57e890ef54..eba01b50f9aa5f2e82af69c34507727b264fb087 100644
--- a/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php
+++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php
@@ -172,23 +172,6 @@ protected function configureInlineBlock($old_body, $new_body, $block_css_locator
     $this->assertDialogClosedAndTextVisible($new_body);
   }
 
-  /**
-   * Waits for an element to be removed from the page.
-   *
-   * @param string $selector
-   *   CSS selector.
-   * @param int $timeout
-   *   (optional) Timeout in milliseconds, defaults to 10000.
-   *
-   * @deprecated in drupal:8.8.0 and is removed from drupal:9.0.0. Use
-   *   Drupal\FunctionalJavascriptTests\JSWebAssert::assertNoElementAfterWait()
-   */
-  protected function waitForNoElement($selector, $timeout = 10000) {
-    @trigger_error('::waitForNoElement is deprecated in Drupal 8.8.0 and will be removed before Drupal 9.0.0. Use \Drupal\FunctionalJavascriptTests\JSWebAssert::assertNoElementAfterWait() instead.', E_USER_DEPRECATED);
-    $condition = "(typeof jQuery !== 'undefined' && jQuery('$selector').length === 0)";
-    $this->assertJsCondition($condition, $timeout);
-  }
-
   /**
    * Asserts that the dialog closes and the new text appears on the main canvas.
    *
diff --git a/core/modules/layout_builder/tests/src/Kernel/DefaultsSectionStorageTest.php b/core/modules/layout_builder/tests/src/Kernel/DefaultsSectionStorageTest.php
index 1a3eeeb7e8f05be37a6d287ef63271ad292ee494..bd87b2c65111fda8e5b58bedabbe6ed5ffa470da 100644
--- a/core/modules/layout_builder/tests/src/Kernel/DefaultsSectionStorageTest.php
+++ b/core/modules/layout_builder/tests/src/Kernel/DefaultsSectionStorageTest.php
@@ -12,7 +12,6 @@
 use Drupal\layout_builder\Plugin\SectionStorage\DefaultsSectionStorage;
 use Drupal\layout_builder\Section;
 use Drupal\layout_builder\SectionComponent;
-use Drupal\layout_builder\SectionListInterface;
 use Drupal\layout_builder\SectionStorage\SectionStorageDefinition;
 
 /**
@@ -185,19 +184,6 @@ public function testGetContextsDuringPreview() {
     $this->assertSame('default', $result_value);
   }
 
-  /**
-   * @covers ::setSectionList
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::setSectionList() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. This method should no longer be used. The section list should be derived from context. See https://www.drupal.org/node/3016262.
-   * @group legacy
-   */
-  public function testSetSectionList() {
-    $section_list = $this->prophesize(SectionListInterface::class);
-    $this->expectException(\Exception::class);
-    $this->expectExceptionMessage('\Drupal\layout_builder\SectionStorageInterface::setSectionList() must no longer be called. The section list should be derived from context. See https://www.drupal.org/node/3016262.');
-    $this->plugin->setSectionList($section_list->reveal());
-  }
-
   /**
    * @covers ::getTempstoreKey
    */
diff --git a/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderEntityViewDisplayTest.php b/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderEntityViewDisplayTest.php
index 0e1639f8e2e0f977d90d2c19f349e55d17f76120..81e4f8abbc3ee8cf7dde07104ec123010d493720 100644
--- a/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderEntityViewDisplayTest.php
+++ b/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderEntityViewDisplayTest.php
@@ -3,7 +3,6 @@
 namespace Drupal\Tests\layout_builder\Kernel;
 
 use Drupal\Core\Config\Schema\SchemaIncompleteException;
-use Drupal\entity_test\Entity\EntityTest;
 use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay;
 
 /**
@@ -42,25 +41,6 @@ public function testInvalidConfiguration() {
     $this->sectionStorage->save();
   }
 
-  /**
-   * @covers ::getRuntimeSections
-   * @group legacy
-   * @expectedDeprecation \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::getRuntimeSections() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::findByContext() should be used instead. See https://www.drupal.org/node/3022574.
-   */
-  public function testGetRuntimeSections() {
-    $this->container->get('current_user')->setAccount($this->createUser());
-
-    $entity = EntityTest::create();
-    $entity->save();
-
-    $reflection = new \ReflectionMethod($this->sectionStorage, 'getRuntimeSections');
-    $reflection->setAccessible(TRUE);
-
-    $result = $reflection->invoke($this->sectionStorage, $entity);
-
-    $this->assertEquals($this->sectionStorage->getSections(), $result);
-  }
-
   /**
    * @dataProvider providerTestIsLayoutBuilderEnabled
    */
diff --git a/core/modules/layout_builder/tests/src/Kernel/OverridesSectionStorageTest.php b/core/modules/layout_builder/tests/src/Kernel/OverridesSectionStorageTest.php
index 532a406adb6b657d8cae22f96d61fc2bd61cdcf3..30f3ed16750d20a12b862d35038dc6b857aff0e3 100644
--- a/core/modules/layout_builder/tests/src/Kernel/OverridesSectionStorageTest.php
+++ b/core/modules/layout_builder/tests/src/Kernel/OverridesSectionStorageTest.php
@@ -13,7 +13,6 @@
 use Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage;
 use Drupal\layout_builder\Section;
 use Drupal\layout_builder\SectionComponent;
-use Drupal\layout_builder\SectionListInterface;
 use Drupal\Tests\user\Traits\UserCreationTrait;
 
 /**
@@ -208,19 +207,6 @@ public function testGetContextsDuringPreview() {
     $this->assertSame($context, $result['layout_builder.entity']);
   }
 
-  /**
-   * @covers ::setSectionList
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::setSectionList() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. This method should no longer be used. The section list should be derived from context. See https://www.drupal.org/node/3016262.
-   * @group legacy
-   */
-  public function testSetSectionList() {
-    $section_list = $this->prophesize(SectionListInterface::class);
-    $this->expectException(\Exception::class);
-    $this->expectExceptionMessage('\Drupal\layout_builder\SectionStorageInterface::setSectionList() must no longer be called. The section list should be derived from context. See https://www.drupal.org/node/3016262.');
-    $this->plugin->setSectionList($section_list->reveal());
-  }
-
   /**
    * @covers ::getDefaultSectionStorage
    */
diff --git a/core/modules/layout_builder/tests/src/Unit/DefaultsSectionStorageTest.php b/core/modules/layout_builder/tests/src/Unit/DefaultsSectionStorageTest.php
index 87580ad495b6fa6be687c9feba016a4a9eb0e075..fcf84fdb1b8e45215eadeee4d614a065c9fbf2de 100644
--- a/core/modules/layout_builder/tests/src/Unit/DefaultsSectionStorageTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/DefaultsSectionStorageTest.php
@@ -105,134 +105,6 @@ public function testThirdPartySettings() {
     $this->assertSame('value 2', $this->plugin->getThirdPartySetting('the_module', 'the_key'));
   }
 
-  /**
-   * @covers ::extractIdFromRoute
-   *
-   * @dataProvider providerTestExtractIdFromRoute
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.
-   *
-   * @group legacy
-   */
-  public function testExtractIdFromRoute($expected, $value, array $defaults) {
-    $result = $this->plugin->extractIdFromRoute($value, [], 'the_parameter_name', $defaults);
-    $this->assertSame($expected, $result);
-  }
-
-  /**
-   * Provides data for ::testExtractIdFromRoute().
-   */
-  public function providerTestExtractIdFromRoute() {
-    $data = [];
-    $data['with value'] = [
-      'foo.bar.baz',
-      'foo.bar.baz',
-      [],
-    ];
-    $data['empty value, without bundle'] = [
-      'my_entity_type.bundle_name.default',
-      '',
-      [
-        'entity_type_id' => 'my_entity_type',
-        'view_mode_name' => 'default',
-        'bundle_key' => 'my_bundle',
-        'my_bundle' => 'bundle_name',
-      ],
-    ];
-    $data['empty value, with bundle'] = [
-      'my_entity_type.bundle_name.default',
-      '',
-      [
-        'entity_type_id' => 'my_entity_type',
-        'view_mode_name' => 'default',
-        'bundle' => 'bundle_name',
-      ],
-    ];
-    $data['without value, empty defaults'] = [
-      NULL,
-      '',
-      [],
-    ];
-    return $data;
-  }
-
-  /**
-   * @covers ::getSectionListFromId
-   *
-   * @dataProvider providerTestGetSectionListFromId
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.
-   *
-   * @group legacy
-   */
-  public function testGetSectionListFromId($success, $expected_entity_id, $value) {
-    if ($expected_entity_id) {
-      $entity_storage = $this->prophesize(EntityStorageInterface::class);
-      $entity_storage->load($expected_entity_id)->willReturn('the_return_value');
-
-      $this->entityTypeManager->getDefinition('entity_view_display')->willReturn(new EntityType(['id' => 'entity_view_display']));
-      $this->entityTypeManager->getStorage('entity_view_display')->willReturn($entity_storage->reveal());
-    }
-    else {
-      $this->entityTypeManager->getDefinition('entity_view_display')->shouldNotBeCalled();
-      $this->entityTypeManager->getStorage('entity_view_display')->shouldNotBeCalled();
-    }
-
-    if (!$success) {
-      $this->expectException(\InvalidArgumentException::class);
-    }
-
-    $result = $this->plugin->getSectionListFromId($value);
-    if ($success) {
-      $this->assertEquals('the_return_value', $result);
-    }
-  }
-
-  /**
-   * Provides data for ::testGetSectionListFromId().
-   */
-  public function providerTestGetSectionListFromId() {
-    $data = [];
-    $data['with value'] = [
-      TRUE,
-      'foo.bar.baz',
-      'foo.bar.baz',
-    ];
-    $data['without value, empty defaults'] = [
-      FALSE,
-      NULL,
-      '',
-    ];
-    return $data;
-  }
-
-  /**
-   * @covers ::getSectionListFromId
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.
-   *
-   * @group legacy
-   */
-  public function testGetSectionListFromIdCreate() {
-    $expected = 'the_return_value';
-    $value = 'foo.bar.baz';
-    $expected_create_values = [
-      'targetEntityType' => 'foo',
-      'bundle' => 'bar',
-      'mode' => 'baz',
-      'status' => TRUE,
-    ];
-    $entity_storage = $this->prophesize(EntityStorageInterface::class);
-    $entity_storage->load($value)->willReturn(NULL);
-    $entity_storage->create($expected_create_values)->willReturn($expected);
-
-    $this->entityTypeManager->getDefinition('entity_view_display')->willReturn(new EntityType(['id' => 'entity_view_display']));
-    $this->entityTypeManager->getStorage('entity_view_display')->willReturn($entity_storage->reveal());
-
-    $result = $this->plugin->getSectionListFromId($value);
-    $this->assertSame($expected, $result);
-  }
-
   /**
    * @covers ::extractEntityFromRoute
    *
diff --git a/core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php b/core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php
index 3f7e97b03a7d2ee7a137c3d932db4b1ff2a957fa..71900e3dd8c0f3e10c6f82a821ae16845966099e 100644
--- a/core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php
@@ -2,13 +2,10 @@
 
 namespace Drupal\Tests\layout_builder\Unit;
 
-use Drupal\Component\Plugin\ConfigurablePluginInterface;
+use Drupal\Component\Plugin\ConfigurableInterface;
 use Drupal\Component\Plugin\DerivativeInspectionInterface;
 use Drupal\Component\Plugin\PluginInspectionInterface;
-use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\layout_builder\LayoutEntityHelperTrait;
-use Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage;
 use Drupal\layout_builder\Section;
 use Drupal\layout_builder\SectionComponent;
 use Drupal\Tests\UnitTestCase;
@@ -20,43 +17,6 @@
  */
 class LayoutEntityHelperTraitTest extends UnitTestCase {
 
-  /**
-   * @covers ::isEntityUsingFieldOverride
-   *
-   * @dataProvider providerTestIsEntityUsingFieldOverride
-   *
-   * @expectedDeprecation \Drupal\layout_builder\LayoutEntityHelperTrait::isEntityUsingFieldOverride() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Internal storage of overrides may change so the existence of the field does not necessarily guarantee an overridable entity. See https://www.drupal.org/node/3030609.
-   *
-   * @group legacy
-   */
-  public function testIsEntityUsingFieldOverride(EntityInterface $entity, $expected) {
-    $test_class = new TestClass();
-    $this->assertSame($expected, $test_class->isEntityUsingFieldOverride($entity));
-  }
-
-  /**
-   * Dataprovider for testIsEntityUsingFieldOverride().
-   */
-  public function providerTestIsEntityUsingFieldOverride() {
-    $data['non fieldable entity'] = [
-      $this->prophesize(EntityInterface::class)->reveal(),
-      FALSE,
-    ];
-    $fieldable_entity = $this->prophesize(FieldableEntityInterface::class);
-    $fieldable_entity->hasField(OverridesSectionStorage::FIELD_NAME)->willReturn(FALSE);
-    $data['fieldable entity without layout field'] = [
-      $fieldable_entity->reveal(),
-      FALSE,
-    ];
-    $entity_using_field = $this->prophesize(FieldableEntityInterface::class);
-    $entity_using_field->hasField(OverridesSectionStorage::FIELD_NAME)->willReturn(TRUE);
-    $data['fieldable entity with layout field'] = [
-      $entity_using_field->reveal(),
-      TRUE,
-    ];
-    return $data;
-  }
-
   /**
    * Dataprovider method for tests that need sections with inline blocks.
    */
@@ -77,7 +37,7 @@ public function providerSectionsWithInlineComponents() {
 
     // Ensure that inline block component is returned.
     $inline_component = $this->prophesize(SectionComponent::class);
-    $inline_plugin = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurablePluginInterface::class);
+    $inline_plugin = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurableInterface::class);
     $inline_plugin->getBaseId()->willReturn('inline_block');
     $inline_plugin->getConfiguration()->willReturn(['block_revision_id' => 'the_revision_id']);
     $inline_component->getPlugin()->willReturn($inline_plugin->reveal());
@@ -86,7 +46,7 @@ public function providerSectionsWithInlineComponents() {
 
     // Ensure that inline block component without revision is returned.
     $inline_component_without_revision_id = $this->prophesize(SectionComponent::class);
-    $inline_plugin_without_revision_id = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurablePluginInterface::class);
+    $inline_plugin_without_revision_id = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurableInterface::class);
     $inline_plugin_without_revision_id->getBaseId()->willReturn('inline_block');
     $inline_plugin_without_revision_id->getConfiguration()->willReturn(['other_key' => 'other_value']);
     $inline_component_without_revision_id->getPlugin()->willReturn($inline_plugin_without_revision_id->reveal());
@@ -99,7 +59,7 @@ public function providerSectionsWithInlineComponents() {
     $components = [];
     // Ensure that inline block components in all sections are returned.
     $inline_component2 = $this->prophesize(SectionComponent::class);
-    $inline_plugin2 = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurablePluginInterface::class);
+    $inline_plugin2 = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurableInterface::class);
     $inline_plugin2->getBaseId()->willReturn('inline_block');
     $inline_plugin2->getConfiguration()->willReturn(['block_revision_id' => 'the_other_revision_id']);
     $inline_component2->getPlugin()->willReturn($inline_plugin2->reveal());
@@ -152,7 +112,6 @@ public function testGetInlineBlockRevisionIdsInSections($sections, $components,
  */
 class TestClass {
   use LayoutEntityHelperTrait {
-    isEntityUsingFieldOverride as public;
     getInlineBlockComponents as public;
     getInlineBlockRevisionIdsInSections as public;
   }
diff --git a/core/modules/layout_builder/tests/src/Unit/LayoutTempstoreParamConverterTest.php b/core/modules/layout_builder/tests/src/Unit/LayoutTempstoreParamConverterTest.php
index 40e202f52b10828f4910695ce5a457e0d36680c7..0e7d76cfe437e58fbe4cb3996da19faf7e720e2f 100644
--- a/core/modules/layout_builder/tests/src/Unit/LayoutTempstoreParamConverterTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/LayoutTempstoreParamConverterTest.php
@@ -56,7 +56,6 @@ public function testConvertNoType() {
     $defaults = ['section_storage_type' => NULL];
 
     $section_storage_manager->hasDefinition()->shouldNotBeCalled();
-    $section_storage_manager->loadFromRoute()->shouldNotBeCalled();
     $section_storage_manager->load()->shouldNotBeCalled();
     $layout_tempstore_repository->get()->shouldNotBeCalled();
 
@@ -78,7 +77,6 @@ public function testConvertInvalidConverter() {
     $defaults = ['section_storage_type' => 'invalid'];
 
     $section_storage_manager->hasDefinition('invalid')->willReturn(FALSE);
-    $section_storage_manager->loadFromRoute()->shouldNotBeCalled();
     $section_storage_manager->load()->shouldNotBeCalled();
     $layout_tempstore_repository->get()->shouldNotBeCalled();
 
diff --git a/core/modules/layout_builder/tests/src/Unit/OverridesSectionStorageTest.php b/core/modules/layout_builder/tests/src/Unit/OverridesSectionStorageTest.php
index eb03ae2e767860f8cc6ac7b7094d46fbcf2e6fa6..8f10ba9ec091213cb4aade9d497e97d5db70a093 100644
--- a/core/modules/layout_builder/tests/src/Unit/OverridesSectionStorageTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/OverridesSectionStorageTest.php
@@ -72,115 +72,6 @@ protected function setUp() {
     $this->plugin = new OverridesSectionStorage([], 'overrides', $definition, $this->entityTypeManager->reveal(), $this->entityFieldManager->reveal(), $section_storage_manager->reveal(), $this->entityRepository->reveal(), $account->reveal());
   }
 
-  /**
-   * @covers ::extractIdFromRoute
-   *
-   * @dataProvider providerTestExtractIdFromRoute
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.
-   *
-   * @group legacy
-   */
-  public function testExtractIdFromRoute($expected, $value, array $defaults) {
-    $result = $this->plugin->extractIdFromRoute($value, [], 'the_parameter_name', $defaults);
-    $this->assertSame($expected, $result);
-  }
-
-  /**
-   * Provides data for ::testExtractIdFromRoute().
-   */
-  public function providerTestExtractIdFromRoute() {
-    $data = [];
-    $data['with value, with layout'] = [
-      'my_entity_type.entity_with_layout',
-      'my_entity_type.entity_with_layout',
-      [],
-    ];
-    $data['with value, without layout'] = [
-      NULL,
-      'my_entity_type',
-      [],
-    ];
-    $data['empty value, populated defaults'] = [
-      'my_entity_type.entity_with_layout',
-      '',
-      [
-        'entity_type_id' => 'my_entity_type',
-        'my_entity_type' => 'entity_with_layout',
-      ],
-    ];
-    $data['empty value, empty defaults'] = [
-      NULL,
-      '',
-      [],
-    ];
-    return $data;
-  }
-
-  /**
-   * @covers ::getSectionListFromId
-   *
-   * @dataProvider providerTestGetSectionListFromId
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.
-   *
-   * @group legacy
-   */
-  public function testGetSectionListFromId($success, $expected_entity_type_id, $id) {
-    $defaults['the_parameter_name'] = $id;
-
-    if ($expected_entity_type_id) {
-      $entity_without_layout = $this->prophesize(FieldableEntityInterface::class);
-      $entity_without_layout->hasField(OverridesSectionStorage::FIELD_NAME)->willReturn(FALSE);
-      $entity_without_layout->get(OverridesSectionStorage::FIELD_NAME)->shouldNotBeCalled();
-      $this->entityRepository->getActive('my_entity_type', 'entity_without_layout')->willReturn($entity_without_layout->reveal());
-
-      $entity_with_layout = $this->prophesize(FieldableEntityInterface::class);
-      $entity_with_layout->hasField(OverridesSectionStorage::FIELD_NAME)->willReturn(TRUE);
-      $entity_with_layout->get(OverridesSectionStorage::FIELD_NAME)->willReturn('the_return_value');
-      $this->entityRepository->getActive('my_entity_type', 'entity_with_layout')->willReturn($entity_with_layout->reveal());
-
-      $entity_type = new EntityType(['id' => $expected_entity_type_id]);
-      $this->entityTypeManager->getDefinition($expected_entity_type_id)->willReturn($entity_type);
-    }
-    else {
-      $this->entityTypeManager->getStorage(Argument::any())->shouldNotBeCalled();
-      $this->entityTypeManager->getDefinition(Argument::any())->shouldNotBeCalled();
-    }
-
-    if (!$success) {
-      $this->expectException(\InvalidArgumentException::class);
-    }
-
-    $result = $this->plugin->getSectionListFromId($id);
-    if ($success) {
-      $this->assertEquals('the_return_value', $result);
-    }
-  }
-
-  /**
-   * Provides data for ::testGetSectionListFromId().
-   */
-  public function providerTestGetSectionListFromId() {
-    $data = [];
-    $data['with value, with layout'] = [
-      TRUE,
-      'my_entity_type',
-      'my_entity_type.entity_with_layout',
-    ];
-    $data['with value, without layout'] = [
-      FALSE,
-      'my_entity_type',
-      'my_entity_type.entity_without_layout',
-    ];
-    $data['empty value, empty defaults'] = [
-      FALSE,
-      NULL,
-      '',
-    ];
-    return $data;
-  }
-
   /**
    * @covers ::extractEntityFromRoute
    *
diff --git a/core/modules/layout_builder/tests/src/Unit/SectionStorageManagerTest.php b/core/modules/layout_builder/tests/src/Unit/SectionStorageManagerTest.php
index b3b99d1fcd5bcb8ff68b391c402a1bab8c2e0019..6a026413fb3142dc7e3a61e9c8fcfdce3d62df11 100644
--- a/core/modules/layout_builder/tests/src/Unit/SectionStorageManagerTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/SectionStorageManagerTest.php
@@ -17,7 +17,6 @@
 use Drupal\layout_builder\SectionStorage\SectionStorageManager;
 use Drupal\layout_builder\SectionStorageInterface;
 use Drupal\Tests\UnitTestCase;
-use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * @coversDefaultClass \Drupal\layout_builder\SectionStorage\SectionStorageManager
@@ -85,23 +84,6 @@ protected function setUp() {
     $reflection_property->setValue($this->manager, $this->factory->reveal());
   }
 
-  /**
-   * @covers ::__construct
-   *
-   * @expectedDeprecation The context.handler service must be passed to \Drupal\layout_builder\SectionStorage\SectionStorageManager::__construct(); it was added in Drupal 8.7.0 and will be required before Drupal 9.0.0.
-   *
-   * @group legacy
-   */
-  public function testConstructNoContextHandler() {
-    $cache = $this->prophesize(CacheBackendInterface::class);
-    $module_handler = $this->prophesize(ModuleHandlerInterface::class);
-
-    $container = $this->prophesize(ContainerInterface::class);
-    $container->get('context.handler')->shouldBeCalled();
-    \Drupal::setContainer($container->reveal());
-    new SectionStorageManager(new \ArrayObject(), $cache->reveal(), $module_handler->reveal());
-  }
-
   /**
    * @covers ::loadEmpty
    */
@@ -111,46 +93,6 @@ public function testLoadEmpty() {
     $this->assertSame($this->plugin->reveal(), $result);
   }
 
-  /**
-   * @covers ::loadFromStorageId
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::loadFromStorageId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load() should be used instead. See https://www.drupal.org/node/3012353.
-   *
-   * @group legacy
-   */
-  public function testLoadFromStorageId() {
-    $this->plugin->deriveContextsFromRoute('the_storage_id', [], '', [])->willReturn([]);
-
-    $result = $this->manager->loadFromStorageId('the_plugin_id', 'the_storage_id');
-    $this->assertInstanceOf(SectionStorageInterface::class, $result);
-  }
-
-  /**
-   * @covers ::loadFromRoute
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::loadFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() and \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load() should be used instead. See https://www.drupal.org/node/3012353.
-   *
-   * @group legacy
-   */
-  public function testLoadFromRoute() {
-    $this->plugin->deriveContextsFromRoute('the_value', [], 'the_parameter_name', [])->willReturn([]);
-    $result = $this->manager->loadFromRoute('the_plugin_id', 'the_value', [], 'the_parameter_name', []);
-    $this->assertInstanceOf(SectionStorageInterface::class, $result);
-  }
-
-  /**
-   * @covers ::loadFromRoute
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::loadFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() and \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load() should be used instead. See https://www.drupal.org/node/3012353.
-   *
-   * @group legacy
-   */
-  public function testLoadFromRouteNull() {
-    $this->plugin->deriveContextsFromRoute('the_value', [], 'the_parameter_name', ['_route' => 'the_route_name'])->willReturn([]);
-    $result = $this->manager->loadFromRoute('the_plugin_id', 'the_value', [], 'the_parameter_name', ['_route' => 'the_route_name']);
-    $this->assertInstanceOf(SectionStorageInterface::class, $result);
-  }
-
   /**
    * @covers ::load
    */