diff --git a/core/lib/Drupal/Component/Plugin/LazyPluginCollection.php b/core/lib/Drupal/Component/Plugin/LazyPluginCollection.php
index 0564da0..f315788 100644
--- a/core/lib/Drupal/Component/Plugin/LazyPluginCollection.php
+++ b/core/lib/Drupal/Component/Plugin/LazyPluginCollection.php
@@ -12,7 +12,7 @@
  *
  * @ingroup plugin_api
  */
-abstract class LazyPluginCollection implements \Iterator, \Countable {
+abstract class LazyPluginCollection implements \Countable {
 
   /**
    * Stores all instantiated plugins.
@@ -79,6 +79,9 @@ public function has($instance_id) {
    *
    * @param string $instance_id
    *   The ID of the plugin instance being retrieved.
+   *
+   * @return mixed
+   *   The plugin instance.
    */
   public function &get($instance_id) {
     if (!isset($this->pluginInstances[$instance_id])) {
@@ -137,6 +140,21 @@ public function getInstanceIds() {
   }
 
   /**
+   * Returns all instances.
+   *
+   * Note: If you need a lazy behaviour use ::getInstanceIds()
+   *
+   * @return mixed[]
+   *   An array of plugin instances.
+   */
+  public function getInstances() {
+    foreach ($this->getInstanceIds() as $instance_id) {
+      $this->initializePlugin($instance_id);
+    }
+    return $this->getInstances();
+  }
+
+  /**
    * Removes an instance ID.
    *
    * @param string $instance_id
@@ -150,48 +168,6 @@ public function removeInstanceId($instance_id) {
   /**
    * {@inheritdoc}
    */
-  public function current() {
-    return $this->get($this->key());
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function next() {
-    next($this->instanceIDs);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function key() {
-    return key($this->instanceIDs);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function valid() {
-    $key = key($this->instanceIDs);
-    // Check the key is valid but also that this key yields a plugin from get().
-    // There can be situations where configuration contains data for a plugin
-    // that cannot be instantiated. In this case, this enables us to skip that
-    // plugin during iteration.
-    // @todo Look at removing when https://drupal.org/node/2080823 has been
-    //   solved.
-    return $key !== NULL && $key !== FALSE && $this->get($key);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function rewind() {
-    reset($this->instanceIDs);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function count() {
     return count($this->instanceIDs);
   }
diff --git a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
index 6c3a819..ba8afea 100644
--- a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
+++ b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
@@ -700,7 +700,7 @@ public function getLinkDisplay() {
     $display_id = $this->getOption('link_display');
     // If unknown, pick the first one.
     if (empty($display_id) || !$this->view->displayHandlers->has($display_id)) {
-      foreach ($this->view->displayHandlers as $display_id => $display) {
+      foreach ($this->view->displayHandlers->getInstances() as $display_id => $display) {
         if (!empty($display) && $display->hasPath()) {
           return $display_id;
         }
@@ -1855,7 +1855,7 @@ public function validateOptionsForm(&$form, FormStateInterface $form_state) {
             $form_state->setError($form['display_id'], $this->t('Display name must be letters, numbers, or underscores only.'));
           }
 
-          foreach ($this->view->displayHandlers as $id => $display) {
+          foreach ($this->view->displayHandlers->getInstances() as $id => $display) {
             if ($id != $this->view->current_display && ($form_state->getValue('display_id') == $id || (isset($display->new_id) && $form_state->getValue('display_id') == $display->new_id))) {
               $form_state->setError($form['display_id'], $this->t('Display id should be unique.'));
             }
diff --git a/core/modules/views/src/ViewExecutable.php b/core/modules/views/src/ViewExecutable.php
index db01ad8..a213398 100644
--- a/core/modules/views/src/ViewExecutable.php
+++ b/core/modules/views/src/ViewExecutable.php
@@ -1910,7 +1910,7 @@ public function validate() {
     $this->initDisplay();
     $current_display = $this->current_display;
 
-    foreach ($this->displayHandlers as $id => $display) {
+    foreach ($this->displayHandlers->getInstances() as $id => $display) {
       if (!empty($display)) {
         if (!empty($display->display['deleted'])) {
           continue;
