diff --git a/core/lib/Drupal/Component/Plugin/PluginBag.php b/core/lib/Drupal/Component/Plugin/PluginBag.php
index 50df14a..ae26b9d 100644
--- a/core/lib/Drupal/Component/Plugin/PluginBag.php
+++ b/core/lib/Drupal/Component/Plugin/PluginBag.php
@@ -83,6 +83,19 @@ public function set($instance_id, $value) {
   }
 
   /**
+   * Retrieves all instantiated plugin instances.
+   *
+   * @return array
+   *   An array of all available instantiated plugin instances.
+   */
+  public function all() {
+    foreach ($this->instanceIDs as $instance_id) {
+      $this->initializePlugin($instance_id);
+    }
+    return $this->pluginInstances;
+  }
+
+  /**
    * Removes an initialized plugin.
    *
    * The plugin can still be used, it will be reinitialized.
diff --git a/core/modules/system/lib/Drupal/system/Tests/Plugin/PluginBagTest.php b/core/modules/system/lib/Drupal/system/Tests/Plugin/PluginBagTest.php
index 892ca23..8d08b16 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Plugin/PluginBagTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Plugin/PluginBagTest.php
@@ -73,6 +73,14 @@ protected function testPluginBag() {
     }
 
     $this->assertEqual(count($plugin_bag), count($expected_instance_ids), 'The amount of items in plugin bag is as expected.');
+
+    // Test the all() method.
+    $plugin_bag->clear();
+    $expected = array();
+    foreach ($plugin_bag->getInstanceIDs() as $id) {
+      $expected[$id] = $this->mockBlockManager->createInstance($id, array());
+    }
+    $this->assertEqual($plugin_bag->all(), $expected, 'All expected plugin instances returned by all method.');
   }
 
 }
