diff --git a/core/lib/Drupal/Core/Plugin/Discovery/CacheDecorator.php b/core/lib/Drupal/Core/Plugin/Discovery/CacheDecorator.php
index 67d6cab..2111f8d 100644
--- a/core/lib/Drupal/Core/Plugin/Discovery/CacheDecorator.php
+++ b/core/lib/Drupal/Core/Plugin/Discovery/CacheDecorator.php
@@ -65,14 +65,23 @@ public function __construct(DiscoveryInterface $decorated, $cache_key, $cache_bi
    * Implements Drupal\Component\Plugin\Discovery\DicoveryInterface::getDefinition().
    */
   public function getDefinition($plugin_id) {
-    $definitions = $this->getDefinitions();
-    return isset($definitions[$plugin_id]) ? $definitions[$plugin_id] : NULL;
+    if (isset($this->definitions[$plugin_id])) {
+      return $this->definitions[$plugin_id];
+    }
+
+    if (($definitions = $this->getDefinitions()) && isset($definitions[$plugin_id])) {
+      return $definitions[$plugin_id];
+    }
   }
 
   /**
    * Implements Drupal\Component\Plugin\Discovery\DicoveryInterface::getDefinitions().
    */
   public function getDefinitions() {
+    if (isset($this->definitions)) {
+      return $this->definitions;
+    }
+
     $definitions = $this->getCachedDefinitions();
     if (!isset($definitions)) {
       $definitions = $this->decorated->getDefinitions();
