 core/lib/Drupal/Core/Menu/MenuParentFormSelector.php        | 13 +++++++------
 .../Drupal/Core/Menu/MenuParentFormSelectorInterface.php    |  6 +++---
 .../views/src/Plugin/views/cache/CachePluginBase.php        |  5 +++--
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/core/lib/Drupal/Core/Menu/MenuParentFormSelector.php b/core/lib/Drupal/Core/Menu/MenuParentFormSelector.php
index 3c11bb2..12928f9 100644
--- a/core/lib/Drupal/Core/Menu/MenuParentFormSelector.php
+++ b/core/lib/Drupal/Core/Menu/MenuParentFormSelector.php
@@ -3,6 +3,7 @@
 namespace Drupal\Core\Menu;
 
 use Drupal\Core\Cache\CacheableMetadata;
+use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
@@ -49,7 +50,7 @@ public function __construct(MenuLinkTreeInterface $menu_link_tree, EntityManager
   /**
    * {@inheritdoc}
    */
-  public function getParentSelectOptions($id = '', array $menus = NULL, CacheableMetadata &$cacheability = NULL) {
+  public function getParentSelectOptions($id = '', array $menus = NULL, RefinableCacheableDependencyInterface $cacheability = NULL) {
     if (!isset($menus)) {
       $menus = $this->getMenuOptions();
     }
@@ -135,10 +136,10 @@ protected function getParentDepthLimit($id) {
    *   An excluded menu link.
    * @param int $depth_limit
    *   The maximum depth of menu links considered for the select options.
-   * @param \Drupal\Core\Cache\CacheableMetadata|NULL &$cacheability
+   * @param \Drupal\Core\Cache\RefinableCacheableDependencyInterface|NULL $cacheability
    *   The object to add cacheability metadata to, if not NULL.
    */
-  protected function parentSelectOptionsTreeWalk(array $tree, $menu_name, $indent, array &$options, $exclude, $depth_limit, CacheableMetadata &$cacheability = NULL) {
+  protected function parentSelectOptionsTreeWalk(array $tree, $menu_name, $indent, array &$options, $exclude, $depth_limit, RefinableCacheableDependencyInterface $cacheability = NULL) {
     foreach ($tree as $element) {
       if ($element->depth > $depth_limit) {
         // Don't iterate through any links on this level.
@@ -148,9 +149,9 @@ protected function parentSelectOptionsTreeWalk(array $tree, $menu_name, $indent,
       // Collect the cacheability metadata of the access result, as well as the
       // link.
       if ($cacheability) {
-        $cacheability = $cacheability
-          ->merge(CacheableMetadata::createFromObject($element->access))
-          ->merge(CacheableMetadata::createFromObject($element->link));
+        $cacheability
+          ->addCacheableDependency(($element->access))
+          ->addCacheableDependency($element->link);
       }
 
       // Only show accessible links.
diff --git a/core/lib/Drupal/Core/Menu/MenuParentFormSelectorInterface.php b/core/lib/Drupal/Core/Menu/MenuParentFormSelectorInterface.php
index f478c7a..9387c42 100644
--- a/core/lib/Drupal/Core/Menu/MenuParentFormSelectorInterface.php
+++ b/core/lib/Drupal/Core/Menu/MenuParentFormSelectorInterface.php
@@ -2,7 +2,7 @@
 
 namespace Drupal\Core\Menu;
 
-use Drupal\Core\Cache\CacheableMetadata;
+use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
 
 /**
  * Defines an interface for menu selector form elements and menu link options.
@@ -18,7 +18,7 @@
    * @param array $menus
    *   Optional array of menu names as keys and titles as values to limit
    *   the select options.  If NULL, all menus will be included.
-   * @param \Drupal\Core\Cache\CacheableMetadata|NULL &$cacheability
+   * @param \Drupal\Core\Cache\RefinableCacheableDependencyInterface|NULL $cacheability
    *   Optional cacheability metadata object, which will be populated based on
    *   the accessibility of the links and the cacheability of the links.
    *
@@ -26,7 +26,7 @@
    *   Keyed array where the keys are contain a menu name and parent ID and
    *   the values are a menu name or link title indented by depth.
    */
-  public function getParentSelectOptions($id = '', array $menus = NULL, CacheableMetadata &$cacheability = NULL);
+  public function getParentSelectOptions($id = '', array $menus = NULL, RefinableCacheableDependencyInterface $cacheability = NULL);
 
   /**
    * Gets a form element to choose a menu and parent.
diff --git a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
index ad6d19d..b5922c2 100644
--- a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
+++ b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Cache\CacheableMetadata;
+use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
 use Drupal\views\Plugin\views\PluginBase;
 use Drupal\Core\Database\Query\Select;
 use Drupal\views\ResultRow;
@@ -283,10 +284,10 @@ protected function prepareViewResult(array $result) {
   /**
    * Alters the cache metadata of a display upon saving a view.
    *
-   * @param \Drupal\Core\Cache\CacheableMetadata $cache_metadata
+   * @param \Drupal\Core\Cache\RefinableCacheableDependencyInterface $cache_metadata
    *   The cache metadata.
    */
-  public function alterCacheMetadata(CacheableMetadata $cache_metadata) {
+  public function alterCacheMetadata(RefinableCacheableDependencyInterface $cache_metadata) {
   }
 
   /**
