diff --git a/core/lib/Drupal/Component/Plugin/PluginBag.php b/core/lib/Drupal/Component/Plugin/LazyPluginCollection.php
similarity index 94%
rename from core/lib/Drupal/Component/Plugin/PluginBag.php
rename to core/lib/Drupal/Component/Plugin/LazyPluginCollection.php
index 9631e22..0e89985 100644
--- a/core/lib/Drupal/Component/Plugin/PluginBag.php
+++ b/core/lib/Drupal/Component/Plugin/LazyPluginCollection.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\Component\Plugin\PluginBag.
+ * Contains \Drupal\Component\Plugin\LazyPluginCollection.
  */
 
 namespace Drupal\Component\Plugin;
@@ -10,7 +10,7 @@
 /**
  * Defines an object which stores multiple plugin instances to lazy load them.
  */
-abstract class PluginBag implements \Iterator, \Countable {
+abstract class LazyPluginCollection implements \Iterator, \Countable {
 
   /**
    * Stores all instantiated plugins.
@@ -35,7 +35,7 @@
   abstract protected function initializePlugin($instance_id);
 
   /**
-   * Returns the current configuration of all plugins in this bag.
+   * Returns the current configuration of all plugins in this collection.
    *
    * @return array
    *   An array of up-to-date plugin configuration.
@@ -43,7 +43,7 @@
   abstract public function getConfiguration();
 
   /**
-   * Sets the configuration for all plugins in this bag.
+   * Sets the configuration for all plugins in this collection.
    *
    * @param array $configuration
    *   An array of up-to-date plugin configuration.
diff --git a/core/lib/Drupal/Core/Action/ActionBag.php b/core/lib/Drupal/Core/Action/ActionCollection.php
similarity index 50%
rename from core/lib/Drupal/Core/Action/ActionBag.php
rename to core/lib/Drupal/Core/Action/ActionCollection.php
index b7ccdb5..5d51c00 100644
--- a/core/lib/Drupal/Core/Action/ActionBag.php
+++ b/core/lib/Drupal/Core/Action/ActionCollection.php
@@ -2,17 +2,17 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Action\ActionBag.
+ * Contains \Drupal\Core\Action\ActionCollection.
  */
 
 namespace Drupal\Core\Action;
 
-use Drupal\Core\Plugin\DefaultSinglePluginBag;
+use Drupal\Core\Plugin\DefaultSingleLazyPluginCollection;
 
 /**
- * Provides a container for lazily loading Action plugins.
+ * Provides a collection for lazily loading Action plugins.
  */
-class ActionBag extends DefaultSinglePluginBag {
+class ActionCollection extends DefaultSingleLazyPluginCollection {
 
   /**
    * {@inheritdoc}
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
index d028e05..ce608a4 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
@@ -35,7 +35,7 @@
  * \Drupal\Core\Config\Entity\ConfigEntityBase::calculateDependencies() which
  * resets the dependencies and provides an implementation to determine the
  * plugin providers for configuration entities that implement
- * \Drupal\Core\Config\Entity\EntityWithPluginBagInterface.
+ * \Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface.
  *
  * The configuration manager service provides methods to find dependencies for
  * a specified module, theme or configuration entity.
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
index 257d88f..dbaba80 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
@@ -33,8 +33,8 @@
   /**
    * The name of the property that is used to store plugin configuration.
    *
-   * This is needed when the entity utilizes a PluginBag, to dictate where the
-   * plugin configuration should be stored.
+   * This is needed when the entity utilizes a LazyPluginCollection, to dictate
+   * where the plugin configuration should be stored.
    *
    * @var string
    */
@@ -135,10 +135,10 @@ public function get($property_name) {
    * {@inheritdoc}
    */
   public function set($property_name, $value) {
-    if ($this instanceof EntityWithPluginBagInterface) {
+    if ($this instanceof EntityWithPluginCollectionInterface) {
       if ($property_name == $this->pluginConfigKey) {
         // If external code updates the settings, pass it along to the plugin.
-        $this->getPluginBag()->setConfiguration($value);
+        $this->getPluginCollection()->setConfiguration($value);
       }
     }
 
@@ -256,11 +256,11 @@ public function toArray() {
   public function preSave(EntityStorageInterface $storage) {
     parent::preSave($storage);
 
-    if ($this instanceof EntityWithPluginBagInterface) {
+    if ($this instanceof EntityWithPluginCollectionInterface) {
       // Any changes to the plugin configuration must be saved to the entity's
       // copy as well.
-      $plugin_bag = $this->getPluginBag();
-      $this->set($this->pluginConfigKey, $plugin_bag->getConfiguration());
+      $plugin_collection = $this->getPluginCollection();
+      $this->set($this->pluginConfigKey, $plugin_collection->getConfiguration());
     }
 
     // Ensure this entity's UUID does not exist with a different ID, regardless
@@ -296,13 +296,13 @@ public function calculateDependencies() {
     // Dependencies should be recalculated on every save. This ensures stale
     // dependencies are never saved.
     $this->dependencies = array();
-    // @todo When \Drupal\Core\Config\Entity\EntityWithPluginBagInterface moves
-    //   to a trait, switch to class_uses() instead.
-    if ($this instanceof EntityWithPluginBagInterface) {
+    // @todo When \Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface
+    //   moves to a trait, switch to class_uses() instead.
+    if ($this instanceof EntityWithPluginCollectionInterface) {
       // Configuration entities need to depend on the providers of any plugins
       // that they store the configuration for.
-      $plugin_bag = $this->getPluginBag();
-      foreach($plugin_bag as $instance) {
+      $plugin_collection = $this->getPluginCollection();
+      foreach ($plugin_collection as $instance) {
         $definition = $instance->getPluginDefinition();
         $this->addDependency('module', $definition['provider']);
         // Plugins can declare additional dependencies in their definition.
diff --git a/core/lib/Drupal/Core/Config/Entity/EntityWithPluginBagInterface.php b/core/lib/Drupal/Core/Config/Entity/EntityWithPluginBagInterface.php
deleted file mode 100644
index 0d40954..0000000
--- a/core/lib/Drupal/Core/Config/Entity/EntityWithPluginBagInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Config\Entity\EntityWithPluginBagInterface.
- */
-
-namespace Drupal\Core\Config\Entity;
-
-/**
- * Provides an interface for an object utilizing a plugin bag.
- *
- * @see \Drupal\Component\Plugin\PluginBag
- */
-interface EntityWithPluginBagInterface extends ConfigEntityInterface {
-
-  /**
-   * Returns the plugin bag used by this entity.
-   *
-   * @return \Drupal\Component\Plugin\PluginBag
-   */
-  public function getPluginBag();
-
-}
diff --git a/core/lib/Drupal/Core/Config/Entity/EntityWithPluginCollectionInterface.php b/core/lib/Drupal/Core/Config/Entity/EntityWithPluginCollectionInterface.php
new file mode 100644
index 0000000..adcfbf7
--- /dev/null
+++ b/core/lib/Drupal/Core/Config/Entity/EntityWithPluginCollectionInterface.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface.
+ */
+
+namespace Drupal\Core\Config\Entity;
+
+/**
+ * Provides an interface for an object utilizing a plugin collection.
+ *
+ * @see \Drupal\Component\Plugin\LazyPluginCollection
+ */
+interface EntityWithPluginCollectionInterface extends ConfigEntityInterface {
+
+  /**
+   * Returns the plugin collection used by this entity.
+   *
+   * @return \Drupal\Component\Plugin\LazyPluginCollection
+   */
+  public function getPluginCollection();
+
+}
diff --git a/core/lib/Drupal/Core/Plugin/DefaultPluginBag.php b/core/lib/Drupal/Core/Plugin/DefaultLazyPluginCollection.php
similarity index 85%
rename from core/lib/Drupal/Core/Plugin/DefaultPluginBag.php
rename to core/lib/Drupal/Core/Plugin/DefaultLazyPluginCollection.php
index a6bb5c9..3f7115f 100644
--- a/core/lib/Drupal/Core/Plugin/DefaultPluginBag.php
+++ b/core/lib/Drupal/Core/Plugin/DefaultLazyPluginCollection.php
@@ -2,24 +2,25 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Plugin\DefaultPluginBag.
+ * Contains \Drupal\Core\Plugin\DefaultLazyPluginCollection.
  */
 
 namespace Drupal\Core\Plugin;
 
 use Drupal\Component\Plugin\Exception\PluginNotFoundException;
-use Drupal\Component\Plugin\PluginBag;
+use Drupal\Component\Plugin\LazyPluginCollection;
 use Drupal\Component\Plugin\PluginManagerInterface;
 use Drupal\Component\Plugin\ConfigurablePluginInterface;
 
 /**
- * Provides a default plugin bag for a plugin type.
+ * Provides a default plugin collection for a plugin type.
  *
- * A plugin bag is used to contain plugins that will be lazily instantiated. The
- * configurations of each potential plugin are passed in, and the configuration
- * key containing the plugin ID is specified by self::$pluginKey.
+ * A plugin collection is used to contain plugins that will be lazily
+ * instantiated. The configurations of each potential plugin are passed in, and
+ * the configuration key containing the plugin ID is specified by
+ * self::$pluginKey.
  */
-class DefaultPluginBag extends PluginBag {
+class DefaultLazyPluginCollection extends LazyPluginCollection {
 
   /**
    * The manager used to instantiate the plugins.
@@ -29,11 +30,11 @@ class DefaultPluginBag extends PluginBag {
   protected $manager;
 
   /**
-   * The initial configuration for each plugin in the bag.
+   * The initial configuration for each plugin in the collection.
    *
    * @var array
    *   An associative array containing the initial configuration for each plugin
-   *   in the bag, keyed by plugin instance ID.
+   *   in the collection, keyed by plugin instance ID.
    */
   protected $configurations = array();
 
@@ -52,13 +53,13 @@ class DefaultPluginBag extends PluginBag {
   protected $originalOrder = array();
 
   /**
-   * Constructs a new DefaultPluginBag object.
+   * Constructs a new DefaultLazyPluginCollection object.
    *
    * @param \Drupal\Component\Plugin\PluginManagerInterface $manager
    *   The manager to be used for instantiating plugins.
    * @param array $configurations
    *   (optional) An associative array containing the initial configuration for
-   *   each plugin in the bag, keyed by plugin instance ID.
+   *   each plugin in the collection, keyed by plugin instance ID.
    */
   public function __construct(PluginManagerInterface $manager, array $configurations = array()) {
     $this->manager = $manager;
@@ -84,10 +85,10 @@ protected function initializePlugin($instance_id) {
   }
 
   /**
-   * Sorts all plugin instances in this bag.
+   * Sorts all plugin instances in this collection.
    *
    * @return self
-   *   Returns the plugin bag.
+   *   Returns the plugin collection.
    */
   public function sort() {
     uasort($this->instanceIDs, array($this, 'sortHelper'));
diff --git a/core/lib/Drupal/Core/Plugin/DefaultSinglePluginBag.php b/core/lib/Drupal/Core/Plugin/DefaultSingleLazyPluginCollection.php
similarity index 75%
rename from core/lib/Drupal/Core/Plugin/DefaultSinglePluginBag.php
rename to core/lib/Drupal/Core/Plugin/DefaultSingleLazyPluginCollection.php
index 2108ce1..3aabb7c 100644
--- a/core/lib/Drupal/Core/Plugin/DefaultSinglePluginBag.php
+++ b/core/lib/Drupal/Core/Plugin/DefaultSingleLazyPluginCollection.php
@@ -2,25 +2,25 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Plugin\DefaultSinglePluginBag.
+ * Contains \Drupal\Core\Plugin\DefaultSingleLazyPluginCollection.
  */
 
 namespace Drupal\Core\Plugin;
 
 use Drupal\Component\Plugin\PluginManagerInterface;
-use Drupal\Component\Plugin\PluginBag;
+use Drupal\Component\Plugin\LazyPluginCollection;
 use Drupal\Component\Plugin\ConfigurablePluginInterface;
 
 /**
- * Provides a default plugin bag for a plugin type.
+ * Provides a default plugin collection for a plugin type.
  *
- * A plugin bag usually stores multiple plugins, and is used to lazily
+ * A plugin collection usually stores multiple plugins, and is used to lazily
  * instantiate them. When only one plugin is needed, it is still best practice
- * to encapsulate all of the instantiation logic in a plugin bag. This class can
- * be used directly, or subclassed to add further exception handling in
- * self::initializePlugin().
+ * to encapsulate all of the instantiation logic in a plugin collection. This
+ * class can be used directly, or subclassed to add further exception handling
+ * in self::initializePlugin().
  */
-class DefaultSinglePluginBag extends PluginBag {
+class DefaultSingleLazyPluginCollection extends LazyPluginCollection {
 
   /**
    * The manager used to instantiate the plugins.
@@ -37,14 +37,14 @@ class DefaultSinglePluginBag extends PluginBag {
   protected $configuration;
 
   /**
-   * The instance ID used for this plugin bag.
+   * The instance ID used for this plugin collection.
    *
    * @var string
    */
   protected $instanceId;
 
   /**
-   * Constructs a new DefaultSinglePluginBag object.
+   * Constructs a new DefaultSingleLazyPluginCollection object.
    *
    * @param \Drupal\Component\Plugin\PluginManagerInterface $manager
    *   The manager to be used for instantiating plugins.
@@ -56,7 +56,7 @@ class DefaultSinglePluginBag extends PluginBag {
   public function __construct(PluginManagerInterface $manager, $instance_id, array $configuration) {
     $this->manager = $manager;
     $this->instanceId = $instance_id;
-    // This is still needed by the parent PluginBag class.
+    // This is still needed by the parent LazyPluginCollection class.
     $this->instanceIDs = array($instance_id => $instance_id);
     $this->configuration = $configuration;
   }
diff --git a/core/modules/block/lib/Drupal/block/BlockPluginBag.php b/core/modules/block/lib/Drupal/block/BlockPluginCollection.php
similarity index 86%
rename from core/modules/block/lib/Drupal/block/BlockPluginBag.php
rename to core/modules/block/lib/Drupal/block/BlockPluginCollection.php
index 5693281..9e3f397 100644
--- a/core/modules/block/lib/Drupal/block/BlockPluginBag.php
+++ b/core/modules/block/lib/Drupal/block/BlockPluginCollection.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\block\BlockPluginBag.
+ * Contains \Drupal\block\BlockPluginCollection.
  */
 
 namespace Drupal\block;
@@ -10,22 +10,22 @@
 use Drupal\Component\Plugin\Exception\PluginException;
 use Drupal\Component\Plugin\PluginManagerInterface;
 use Drupal\Component\Utility\String;
-use Drupal\Core\Plugin\DefaultSinglePluginBag;
+use Drupal\Core\Plugin\DefaultSingleLazyPluginCollection;
 
 /**
  * Provides a collection of block plugins.
  */
-class BlockPluginBag extends DefaultSinglePluginBag {
+class BlockPluginCollection extends DefaultSingleLazyPluginCollection {
 
   /**
-   * The block ID this plugin bag belongs to.
+   * The block ID this plugin collection belongs to.
    *
    * @var string
    */
   protected $blockId;
 
   /**
-   * Constructs a new BlockPluginBag.
+   * Constructs a new BlockPluginCollection.
    *
    * @param \Drupal\Component\Plugin\PluginManagerInterface $manager
    *   The manager to be used for instantiating plugins.
diff --git a/core/modules/block/lib/Drupal/block/Entity/Block.php b/core/modules/block/lib/Drupal/block/Entity/Block.php
index f1111fe..7f1164c 100644
--- a/core/modules/block/lib/Drupal/block/Entity/Block.php
+++ b/core/modules/block/lib/Drupal/block/Entity/Block.php
@@ -9,10 +9,10 @@
 
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\block\BlockPluginBag;
+use Drupal\block\BlockPluginCollection;
 use Drupal\block\BlockInterface;
 use Drupal\Core\Config\Entity\ConfigEntityInterface;
-use Drupal\Core\Config\Entity\EntityWithPluginBagInterface;
+use Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
 
 /**
@@ -42,7 +42,7 @@
  *   }
  * )
  */
-class Block extends ConfigEntityBase implements BlockInterface, EntityWithPluginBagInterface {
+class Block extends ConfigEntityBase implements BlockInterface, EntityWithPluginCollectionInterface {
 
   /**
    * The ID of the block.
@@ -80,11 +80,11 @@ class Block extends ConfigEntityBase implements BlockInterface, EntityWithPlugin
   protected $plugin;
 
   /**
-   * The plugin bag that holds the block plugin for this entity.
+   * The plugin collection that holds the block plugin for this entity.
    *
-   * @var \Drupal\block\BlockPluginBag
+   * @var \Drupal\block\BlockPluginCollection
    */
-  protected $pluginBag;
+  protected $pluginCollection;
 
   /**
    * {@inheritdoc}
@@ -102,17 +102,17 @@ class Block extends ConfigEntityBase implements BlockInterface, EntityWithPlugin
    * {@inheritdoc}
    */
   public function getPlugin() {
-    return $this->getPluginBag()->get($this->plugin);
+    return $this->getPluginCollection()->get($this->plugin);
   }
 
   /**
    * {@inheritdoc}
    */
-  public function getPluginBag() {
-    if (!$this->pluginBag) {
-      $this->pluginBag = new BlockPluginBag(\Drupal::service('plugin.manager.block'), $this->plugin, $this->get('settings'), $this->id());
+  public function getPluginCollection() {
+    if (!$this->pluginCollection) {
+      $this->pluginCollection = new BlockPluginCollection(\Drupal::service('plugin.manager.block'), $this->plugin, $this->get('settings'), $this->id());
     }
-    return $this->pluginBag;
+    return $this->pluginCollection;
   }
 
   /**
diff --git a/core/modules/block/tests/Drupal/block/Tests/BlockConfigEntityUnitTest.php b/core/modules/block/tests/Drupal/block/Tests/BlockConfigEntityUnitTest.php
index 98d8d6d..8044a70 100644
--- a/core/modules/block/tests/Drupal/block/Tests/BlockConfigEntityUnitTest.php
+++ b/core/modules/block/tests/Drupal/block/Tests/BlockConfigEntityUnitTest.php
@@ -88,30 +88,30 @@ public function setUp() {
    */
   public function testCalculateDependencies() {
     $values = array('theme' => 'stark');
-    // Mock the entity under test so that we can mock getPluginBag().
+    // Mock the entity under test so that we can mock getPluginCollection().
     $entity = $this->getMockBuilder('\Drupal\block\Entity\Block')
       ->setConstructorArgs(array($values, $this->entityTypeId))
-      ->setMethods(array('getPluginBag'))
+      ->setMethods(array('getPluginCollection'))
       ->getMock();
     // Create a configurable plugin that would add a dependency.
     $instance_id = $this->randomName();
     $instance = new TestConfigurablePlugin(array(), $instance_id, array('provider' => 'test'));
 
-    // Create a plugin bag to contain the instance.
-    $plugin_bag = $this->getMockBuilder('\Drupal\Core\Plugin\DefaultPluginBag')
+    // Create a plugin collection to contain the instance.
+    $plugin_collection = $this->getMockBuilder('\Drupal\Core\Plugin\DefaultLazyPluginCollection')
       ->disableOriginalConstructor()
       ->setMethods(array('get'))
       ->getMock();
-    $plugin_bag->expects($this->atLeastOnce())
+    $plugin_collection->expects($this->atLeastOnce())
       ->method('get')
       ->with($instance_id)
       ->will($this->returnValue($instance));
-    $plugin_bag->addInstanceId($instance_id);
+    $plugin_collection->addInstanceId($instance_id);
 
-    // Return the mocked plugin bag.
+    // Return the mocked plugin collection.
     $entity->expects($this->once())
-      ->method('getPluginBag')
-      ->will($this->returnValue($plugin_bag));
+      ->method('getPluginCollection')
+      ->will($this->returnValue($plugin_collection));
 
     $dependencies = $entity->calculateDependencies();
     $this->assertContains('test', $dependencies['module']);
diff --git a/core/modules/editor/lib/Drupal/editor/Entity/Editor.php b/core/modules/editor/lib/Drupal/editor/Entity/Editor.php
index 82b4ff7..46b247f 100644
--- a/core/modules/editor/lib/Drupal/editor/Entity/Editor.php
+++ b/core/modules/editor/lib/Drupal/editor/Entity/Editor.php
@@ -93,8 +93,8 @@ public function calculateDependencies() {
     parent::calculateDependencies();
     // Create a dependency on the associated FilterFormat.
     $this->addDependency('entity', $this->getFilterFormat()->getConfigDependencyName());
-    // @todo use EntityWithPluginBagInterface so configuration between config
-    //   entity and dependency on provider is managed automatically.
+    // @todo use EntityWithPluginCollectionInterface so configuration between
+    //   config entity and dependency on provider is managed automatically.
     $definition = $this->editorPluginManager()->createInstance($this->editor)->getPluginDefinition();
     $this->addDependency('module', $definition['provider']);
     return $this->dependencies;
diff --git a/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php b/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php
index bd8f0f90..75f9610 100644
--- a/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php
+++ b/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php
@@ -8,10 +8,10 @@
 namespace Drupal\filter\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Core\Config\Entity\EntityWithPluginBagInterface;
+use Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\filter\FilterFormatInterface;
-use Drupal\filter\FilterBag;
+use Drupal\filter\FilterCollection;
 use Drupal\filter\Plugin\FilterInterface;
 
 /**
@@ -43,7 +43,7 @@
  *   }
  * )
  */
-class FilterFormat extends ConfigEntityBase implements FilterFormatInterface, EntityWithPluginBagInterface {
+class FilterFormat extends ConfigEntityBase implements FilterFormatInterface, EntityWithPluginCollectionInterface {
 
   /**
    * Unique machine name of the format.
@@ -121,9 +121,9 @@ class FilterFormat extends ConfigEntityBase implements FilterFormatInterface, En
   /**
    * Holds the collection of filters that are attached to this format.
    *
-   * @var \Drupal\filter\FilterBag
+   * @var \Drupal\filter\FilterCollection
    */
-  protected $filterBag;
+  protected $filterCollection;
 
   /**
    * {@inheritdoc}
@@ -141,22 +141,22 @@ public function id() {
    * {@inheritdoc}
    */
   public function filters($instance_id = NULL) {
-    $filter_bag = $this->getPluginBag();
+    $filter_collection = $this->getPluginCollection();
     if (isset($instance_id)) {
-      return $filter_bag->get($instance_id);
+      return $filter_collection->get($instance_id);
     }
-    return $filter_bag;
+    return $filter_collection;
   }
 
   /**
    * {@inheritdoc}
    */
-  public function getPluginBag() {
-    if (!isset($this->filterBag)) {
-      $this->filterBag = new FilterBag(\Drupal::service('plugin.manager.filter'), $this->filters);
-      $this->filterBag->sort();
+  public function getPluginCollection() {
+    if (!isset($this->filterCollection)) {
+      $this->filterCollection = new FilterCollection(\Drupal::service('plugin.manager.filter'), $this->filters);
+      $this->filterCollection->sort();
     }
-    return $this->filterBag;
+    return $this->filterCollection;
   }
 
   /**
@@ -164,8 +164,8 @@ public function getPluginBag() {
    */
   public function setFilterConfig($instance_id, array $configuration) {
     $this->filters[$instance_id] = $configuration;
-    if (isset($this->filterBag)) {
-      $this->filterBag->setInstanceConfiguration($instance_id, $configuration);
+    if (isset($this->filterCollection)) {
+      $this->filterCollection->setInstanceConfiguration($instance_id, $configuration);
     }
     return $this;
   }
diff --git a/core/modules/filter/lib/Drupal/filter/FilterBag.php b/core/modules/filter/lib/Drupal/filter/FilterCollection.php
similarity index 95%
rename from core/modules/filter/lib/Drupal/filter/FilterBag.php
rename to core/modules/filter/lib/Drupal/filter/FilterCollection.php
index 970e7e8..44e5dd7 100644
--- a/core/modules/filter/lib/Drupal/filter/FilterBag.php
+++ b/core/modules/filter/lib/Drupal/filter/FilterCollection.php
@@ -2,18 +2,18 @@
 
 /**
  * @file
- * Contains \Drupal\filter\FilterBag.
+ * Contains \Drupal\filter\FilterCollection.
  */
 
 namespace Drupal\filter;
 
 use Drupal\Component\Utility\NestedArray;
-use Drupal\Core\Plugin\DefaultPluginBag;
+use Drupal\Core\Plugin\DefaultLazyPluginCollection;
 
 /**
  * A collection of filters.
  */
-class FilterBag extends DefaultPluginBag {
+class FilterCollection extends DefaultLazyPluginCollection {
 
   /**
    * All possible filter plugin IDs.
diff --git a/core/modules/filter/lib/Drupal/filter/FilterFormatInterface.php b/core/modules/filter/lib/Drupal/filter/FilterFormatInterface.php
index df93354..f077e11 100644
--- a/core/modules/filter/lib/Drupal/filter/FilterFormatInterface.php
+++ b/core/modules/filter/lib/Drupal/filter/FilterFormatInterface.php
@@ -20,8 +20,8 @@
    * @param string $instance_id
    *   (optional) The ID of a filter plugin instance to return.
    *
-   * @return \Drupal\filter\FilterBag|\Drupal\filter\Plugin\FilterInterface
-   *   Either the filter bag or a specific filter plugin instance.
+   * @return \Drupal\filter\FilterCollection|\Drupal\filter\Plugin\FilterInterface
+   *   Either the filter collection or a specific filter plugin instance.
    */
   public function filters($instance_id = NULL);
 
@@ -30,7 +30,7 @@ public function filters($instance_id = NULL);
    *
    * Sets or replaces the configuration of a filter plugin in $this->filters,
    * and if instantiated already, also ensures that the actual filter plugin on
-   * the FilterBag contains the identical configuration.
+   * the FilterCollection contains the identical configuration.
    *
    * @param string $instance_id
    *   The ID of a filter plugin to set the configuration for.
diff --git a/core/modules/filter/lib/Drupal/filter/Plugin/FilterBase.php b/core/modules/filter/lib/Drupal/filter/Plugin/FilterBase.php
index bf5e7a0..8f18ff6 100644
--- a/core/modules/filter/lib/Drupal/filter/Plugin/FilterBase.php
+++ b/core/modules/filter/lib/Drupal/filter/Plugin/FilterBase.php
@@ -38,8 +38,6 @@
   /**
    * The weight of this filter compared to others in a filter collection.
    *
-   * @see FilterBase::$filterBag
-   *
    * @var int
    */
   public $weight = 0;
@@ -59,13 +57,6 @@
   public $settings = array();
 
   /**
-   * A collection of all filters this filter participates in.
-   *
-   * @var \Drupal\filter\FilterBag
-   */
-  protected $bag;
-
-  /**
    * {@inheritdoc}
    */
   public function __construct(array $configuration, $plugin_id, $plugin_definition) {
diff --git a/core/modules/filter/lib/Drupal/filter/Tests/FilterUnitTest.php b/core/modules/filter/lib/Drupal/filter/Tests/FilterUnitTest.php
index a51d6b9..e437e9c 100644
--- a/core/modules/filter/lib/Drupal/filter/Tests/FilterUnitTest.php
+++ b/core/modules/filter/lib/Drupal/filter/Tests/FilterUnitTest.php
@@ -9,7 +9,7 @@
 
 use Drupal\Component\Utility\Html;
 use Drupal\simpletest\DrupalUnitTestBase;
-use Drupal\filter\FilterBag;
+use Drupal\filter\FilterCollection;
 
 /**
  * Unit tests for core filters.
@@ -41,8 +41,7 @@ protected function setUp() {
     $this->installConfig(array('system'));
 
     $manager = $this->container->get('plugin.manager.filter');
-    $bag = new FilterBag($manager, array());
-    $this->filters = $bag->getAll();
+    $this->filters = (new FilterCollection($manager, array()))->getAll();
   }
 
   /**
diff --git a/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php b/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php
index 74b574a..9d1ab3f 100644
--- a/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php
+++ b/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php
@@ -8,10 +8,10 @@
 namespace Drupal\image\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Core\Config\Entity\EntityWithPluginBagInterface;
+use Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Routing\RequestHelper;
-use Drupal\image\ImageEffectBag;
+use Drupal\image\ImageEffectCollection;
 use Drupal\image\ImageEffectInterface;
 use Drupal\image\ImageStyleInterface;
 use Drupal\Component\Utility\Crypt;
@@ -46,7 +46,7 @@
  *   }
  * )
  */
-class ImageStyle extends ConfigEntityBase implements ImageStyleInterface, EntityWithPluginBagInterface {
+class ImageStyle extends ConfigEntityBase implements ImageStyleInterface, EntityWithPluginCollectionInterface {
 
   /**
    * The name of the image style to use as replacement upon delete.
@@ -79,7 +79,7 @@ class ImageStyle extends ConfigEntityBase implements ImageStyleInterface, Entity
   /**
    * Holds the collection of image effects that are used by this image style.
    *
-   * @var \Drupal\image\ImageEffectBag
+   * @var \Drupal\image\ImageEffectCollection
    */
   protected $effectsBag;
 
@@ -348,7 +348,7 @@ public function getEffect($effect) {
    */
   public function getEffects() {
     if (!$this->effectsBag) {
-      $this->effectsBag = new ImageEffectBag(\Drupal::service('plugin.manager.image.effect'), $this->effects);
+      $this->effectsBag = new ImageEffectCollection(\Drupal::service('plugin.manager.image.effect'), $this->effects);
       $this->effectsBag->sort();
     }
     return $this->effectsBag;
@@ -357,7 +357,7 @@ public function getEffects() {
   /**
    * {@inheritdoc}
    */
-  public function getPluginBag() {
+  public function getPluginCollection() {
     return $this->getEffects();
   }
 
diff --git a/core/modules/image/lib/Drupal/image/ImageEffectBag.php b/core/modules/image/lib/Drupal/image/ImageEffectCollection.php
similarity index 88%
rename from core/modules/image/lib/Drupal/image/ImageEffectBag.php
rename to core/modules/image/lib/Drupal/image/ImageEffectCollection.php
index ad9f485..d48faf7 100644
--- a/core/modules/image/lib/Drupal/image/ImageEffectBag.php
+++ b/core/modules/image/lib/Drupal/image/ImageEffectCollection.php
@@ -2,17 +2,17 @@
 
 /**
  * @file
- * Contains \Drupal\image\ImageEffectBag.
+ * Contains \Drupal\image\ImageEffectCollection.
  */
 
 namespace Drupal\image;
 
-use Drupal\Core\Plugin\DefaultPluginBag;
+use Drupal\Core\Plugin\DefaultLazyPluginCollection;
 
 /**
  * A collection of image effects.
  */
-class ImageEffectBag extends DefaultPluginBag {
+class ImageEffectCollection extends DefaultLazyPluginCollection {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/image/lib/Drupal/image/ImageStyleInterface.php b/core/modules/image/lib/Drupal/image/ImageStyleInterface.php
index 27e1e02..25d155a 100644
--- a/core/modules/image/lib/Drupal/image/ImageStyleInterface.php
+++ b/core/modules/image/lib/Drupal/image/ImageStyleInterface.php
@@ -131,8 +131,8 @@ public function getEffect($effect);
   /**
    * Returns the image effects for this style.
    *
-   * @return \Drupal\image\ImageEffectBag|\Drupal\image\ImageEffectInterface[]
-   *   The image effect plugin bag.
+   * @return \Drupal\image\ImageEffectCollection|\Drupal\image\ImageEffectInterface[]
+   *   The image effect plugin collection.
    */
   public function getEffects();
 
diff --git a/core/modules/search/lib/Drupal/search/Entity/SearchPage.php b/core/modules/search/lib/Drupal/search/Entity/SearchPage.php
index 3e1fb70..67f1bd7 100644
--- a/core/modules/search/lib/Drupal/search/Entity/SearchPage.php
+++ b/core/modules/search/lib/Drupal/search/Entity/SearchPage.php
@@ -9,11 +9,11 @@
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Config\Entity\ConfigEntityInterface;
-use Drupal\Core\Config\Entity\EntityWithPluginBagInterface;
+use Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Component\Plugin\ConfigurablePluginInterface;
 use Drupal\search\Plugin\SearchIndexingInterface;
-use Drupal\search\Plugin\SearchPluginBag;
+use Drupal\search\Plugin\SearchPluginCollection;
 use Drupal\search\SearchPageInterface;
 
 /**
@@ -50,7 +50,7 @@
  *   }
  * )
  */
-class SearchPage extends ConfigEntityBase implements SearchPageInterface, EntityWithPluginBagInterface {
+class SearchPage extends ConfigEntityBase implements SearchPageInterface, EntityWithPluginCollectionInterface {
 
   /**
    * The name (plugin ID) of the search page entity.
@@ -97,11 +97,11 @@ class SearchPage extends ConfigEntityBase implements SearchPageInterface, Entity
   protected $weight;
 
   /**
-   * The plugin bag that stores search plugins.
+   * The plugin collection that stores search plugins.
    *
-   * @var \Drupal\search\Plugin\SearchPluginBag
+   * @var \Drupal\search\Plugin\SearchPluginCollection
    */
-  protected $pluginBag;
+  protected $pluginCollection;
 
   /**
    * {@inheritdoc}
@@ -112,17 +112,17 @@ class SearchPage extends ConfigEntityBase implements SearchPageInterface, Entity
    * {@inheritdoc}
    */
   public function getPlugin() {
-    return $this->getPluginBag()->get($this->plugin);
+    return $this->getPluginCollection()->get($this->plugin);
   }
 
   /**
    * {@inheritdoc}
    */
-  public function getPluginBag() {
-    if (!$this->pluginBag) {
-      $this->pluginBag = new SearchPluginBag($this->searchPluginManager(), $this->plugin, $this->configuration, $this->id());
+  public function getPluginCollection() {
+    if (!$this->pluginCollection) {
+      $this->pluginCollection = new SearchPluginCollection($this->searchPluginManager(), $this->plugin, $this->configuration, $this->id());
     }
-    return $this->pluginBag;
+    return $this->pluginCollection;
   }
 
   /**
@@ -130,7 +130,7 @@ public function getPluginBag() {
    */
   public function setPlugin($plugin_id) {
     $this->plugin = $plugin_id;
-    $this->getPluginBag()->addInstanceID($plugin_id);
+    $this->getPluginCollection()->addInstanceID($plugin_id);
   }
 
   /**
diff --git a/core/modules/search/lib/Drupal/search/Plugin/SearchPluginBag.php b/core/modules/search/lib/Drupal/search/Plugin/SearchPluginCollection.php
similarity index 81%
rename from core/modules/search/lib/Drupal/search/Plugin/SearchPluginBag.php
rename to core/modules/search/lib/Drupal/search/Plugin/SearchPluginCollection.php
index fc4612c..29e1571 100644
--- a/core/modules/search/lib/Drupal/search/Plugin/SearchPluginBag.php
+++ b/core/modules/search/lib/Drupal/search/Plugin/SearchPluginCollection.php
@@ -2,28 +2,28 @@
 
 /**
  * @file
- * Contains \Drupal\search\Plugin\SearchPluginBag.
+ * Contains \Drupal\search\Plugin\SearchPluginCollection.
  */
 
 namespace Drupal\search\Plugin;
 
-use Drupal\Core\Plugin\DefaultSinglePluginBag;
+use Drupal\Core\Plugin\DefaultSingleLazyPluginCollection;
 use Drupal\Component\Plugin\PluginManagerInterface;
 
 /**
  * Provides a container for lazily loading search plugins.
  */
-class SearchPluginBag extends DefaultSinglePluginBag {
+class SearchPluginCollection extends DefaultSingleLazyPluginCollection {
 
   /**
-   * The unique ID for the search page using this plugin bag.
+   * The unique ID for the search page using this plugin collection.
    *
    * @var string
    */
   protected $searchPageId;
 
   /**
-   * Constructs a new SearchPluginBag.
+   * Constructs a new SearchPluginCollection.
    *
    * @param \Drupal\Component\Plugin\PluginManagerInterface $manager
    *   The manager to be used for instantiating plugins.
diff --git a/core/modules/search/tests/Drupal/search/Tests/SearchPluginBagTest.php b/core/modules/search/tests/Drupal/search/Tests/SearchPluginCollectionTest.php
similarity index 67%
rename from core/modules/search/tests/Drupal/search/Tests/SearchPluginBagTest.php
rename to core/modules/search/tests/Drupal/search/Tests/SearchPluginCollectionTest.php
index c2cf9af..3b2f48e 100644
--- a/core/modules/search/tests/Drupal/search/Tests/SearchPluginBagTest.php
+++ b/core/modules/search/tests/Drupal/search/Tests/SearchPluginCollectionTest.php
@@ -2,23 +2,23 @@
 
 /**
  * @file
- * Contains \Drupal\search\Tests\SearchPluginBagTest.
+ * Contains \Drupal\search\Tests\SearchPluginCollectionTest.
  */
 
 namespace Drupal\search\Tests;
 
-use Drupal\search\Plugin\SearchPluginBag;
+use Drupal\search\Plugin\SearchPluginCollection;
 use Drupal\Tests\UnitTestCase;
 
 /**
- * Tests the search plugin bag.
+ * Tests the search plugin collection.
  *
- * @see \Drupal\search\Plugin\SearchPluginBag
+ * @see \Drupal\search\Plugin\SearchPluginCollection
  *
  * @group Drupal
  * @group Search
  */
-class SearchPluginBagTest extends UnitTestCase {
+class SearchPluginCollectionTest extends UnitTestCase {
 
   /**
    * The mocked plugin manager.
@@ -28,11 +28,11 @@ class SearchPluginBagTest extends UnitTestCase {
   protected $pluginManager;
 
   /**
-   * The tested plugin bag.
+   * The tested plugin collection.
    *
-   * @var \Drupal\search\Plugin\SearchPluginBag
+   * @var \Drupal\search\Plugin\SearchPluginCollection
    */
-  protected $searchPluginBag;
+  protected $searchPluginCollection;
 
   /**
    * Stores all setup plugin instances.
@@ -46,8 +46,8 @@ class SearchPluginBagTest extends UnitTestCase {
    */
   public static function getInfo() {
     return array(
-      'name' => 'Search plugin bag test',
-      'description' => 'Tests the \Drupal\search\Plugin\SearchPluginBag class',
+      'name' => 'Search plugin collection test',
+      'description' => 'Tests the \Drupal\search\Plugin\SearchPluginCollection class',
       'group' => 'Search',
     );
   }
@@ -56,7 +56,7 @@ public static function getInfo() {
    */
   protected function setUp() {
     $this->pluginManager = $this->getMock('Drupal\Component\Plugin\PluginManagerInterface');
-    $this->searchPluginBag = new SearchPluginBag($this->pluginManager, 'banana', array('id' => 'banana', 'color' => 'yellow'), 'fruit_stand');
+    $this->searchPluginCollection = new SearchPluginCollection($this->pluginManager, 'banana', array('id' => 'banana', 'color' => 'yellow'), 'fruit_stand');
   }
 
   /**
@@ -67,7 +67,7 @@ public function testGet() {
     $this->pluginManager->expects($this->once())
       ->method('createInstance')
       ->will($this->returnValue($plugin));
-    $this->assertSame($plugin, $this->searchPluginBag->get('banana'));
+    $this->assertSame($plugin, $this->searchPluginCollection->get('banana'));
   }
 
   /**
@@ -84,7 +84,7 @@ public function testGetWithConfigurablePlugin() {
       ->method('createInstance')
       ->will($this->returnValue($plugin));
 
-    $this->assertSame($plugin, $this->searchPluginBag->get('banana'));
+    $this->assertSame($plugin, $this->searchPluginCollection->get('banana'));
   }
 
 }
diff --git a/core/modules/system/lib/Drupal/system/Entity/Action.php b/core/modules/system/lib/Drupal/system/Entity/Action.php
index 6bc101f..e4af9f2 100644
--- a/core/modules/system/lib/Drupal/system/Entity/Action.php
+++ b/core/modules/system/lib/Drupal/system/Entity/Action.php
@@ -9,9 +9,9 @@
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Config\Entity\ConfigEntityInterface;
-use Drupal\Core\Config\Entity\EntityWithPluginBagInterface;
+use Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface;
 use Drupal\system\ActionConfigEntityInterface;
-use Drupal\Core\Action\ActionBag;
+use Drupal\Core\Action\ActionCollection;
 use Drupal\Component\Plugin\ConfigurablePluginInterface;
 
 /**
@@ -27,7 +27,7 @@
  *   }
  * )
  */
-class Action extends ConfigEntityBase implements ActionConfigEntityInterface, EntityWithPluginBagInterface {
+class Action extends ConfigEntityBase implements ActionConfigEntityInterface, EntityWithPluginCollectionInterface {
 
   /**
    * The name (plugin ID) of the action.
@@ -65,11 +65,11 @@ class Action extends ConfigEntityBase implements ActionConfigEntityInterface, En
   protected $plugin;
 
   /**
-   * The plugin bag that stores action plugins.
+   * The plugin collection that stores action plugins.
    *
-   * @var \Drupal\Core\Action\ActionBag
+   * @var \Drupal\Core\Action\ActionCollection
    */
-  protected $pluginBag;
+  protected $pluginCollection;
 
   /**
    * {@inheritdoc}
@@ -79,18 +79,18 @@ class Action extends ConfigEntityBase implements ActionConfigEntityInterface, En
   /**
    * {@inheritdoc}
    */
-  public function getPluginBag() {
-    if (!$this->pluginBag) {
-      $this->pluginBag = new ActionBag(\Drupal::service('plugin.manager.action'), $this->plugin, $this->configuration);
+  public function getPluginCollection() {
+    if (!$this->pluginCollection) {
+      $this->pluginCollection = new ActionCollection(\Drupal::service('plugin.manager.action'), $this->plugin, $this->configuration);
     }
-    return $this->pluginBag;
+    return $this->pluginCollection;
   }
 
   /**
    * {@inheritdoc}
    */
   public function getPlugin() {
-    return $this->getPluginBag()->get($this->plugin);
+    return $this->getPluginCollection()->get($this->plugin);
   }
 
   /**
@@ -98,7 +98,7 @@ public function getPlugin() {
    */
   public function setPlugin($plugin_id) {
     $this->plugin = $plugin_id;
-    $this->getPluginBag()->addInstanceId($plugin_id);
+    $this->getPluginCollection()->addInstanceId($plugin_id);
   }
 
   /**
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/ConfigEntityImportTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/ConfigEntityImportTest.php
index 2d3def7..2d9f586 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/ConfigEntityImportTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/ConfigEntityImportTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\system\Tests\Entity;
 
-use Drupal\Core\Config\Entity\EntityWithPluginBagInterface;
+use Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface;
 use Drupal\simpletest\WebTestBase;
 
 /**
@@ -101,7 +101,7 @@ protected function doFilterFormatUpdate() {
 
     /** @var $entity \Drupal\filter\Entity\FilterFormat */
     $entity = entity_load('filter_format', 'plain_text');
-    $plugin_bag = $entity->getPluginBag();
+    $plugin_collection = $entity->getPluginCollection();
 
     $filters = $entity->get('filters');
     $this->assertIdentical(72, $filters['filter_url']['settings']['filter_url_length']);
@@ -110,13 +110,13 @@ protected function doFilterFormatUpdate() {
     $entity->set('filters', $filters);
     $entity->save();
     $this->assertIdentical($filters, $entity->get('filters'));
-    $this->assertIdentical($filters, $plugin_bag->getConfiguration());
+    $this->assertIdentical($filters, $plugin_collection->getConfiguration());
 
     $filters['filter_url']['settings']['filter_url_length'] = -100;
-    $entity->getPluginBag()->setConfiguration($filters);
+    $entity->getPluginCollection()->setConfiguration($filters);
     $entity->save();
     $this->assertIdentical($filters, $entity->get('filters'));
-    $this->assertIdentical($filters, $plugin_bag->getConfiguration());
+    $this->assertIdentical($filters, $plugin_collection->getConfiguration());
 
     // Read the existing data, and prepare an altered version in staging.
     $custom_data = $original_data = $this->container->get('config.storage')->read($name);
@@ -133,7 +133,7 @@ protected function doImageStyleUpdate() {
 
     /** @var $entity \Drupal\image\Entity\ImageStyle */
     $entity = entity_load('image_style', 'thumbnail');
-    $plugin_bag = $entity->getPluginBag();
+    $plugin_collection = $entity->getPluginCollection();
 
     $effects = $entity->get('effects');
     $effect_id = key($effects);
@@ -144,14 +144,14 @@ protected function doImageStyleUpdate() {
     $entity->save();
     // Ensure the entity and plugin have the correct configuration.
     $this->assertIdentical($effects, $entity->get('effects'));
-    $this->assertIdentical($effects, $plugin_bag->getConfiguration());
+    $this->assertIdentical($effects, $plugin_collection->getConfiguration());
 
     $effects[$effect_id]['data']['height'] = -50;
-    $entity->getPluginBag()->setConfiguration($effects);
+    $entity->getPluginCollection()->setConfiguration($effects);
     $entity->save();
     // Ensure the entity and plugin have the correct configuration.
     $this->assertIdentical($effects, $entity->get('effects'));
-    $this->assertIdentical($effects, $plugin_bag->getConfiguration());
+    $this->assertIdentical($effects, $plugin_collection->getConfiguration());
 
     // Read the existing data, and prepare an altered version in staging.
     $custom_data = $original_data = $this->container->get('config.storage')->read($name);
@@ -184,7 +184,7 @@ protected function doSearchPageUpdate() {
   /**
    * Tests that a single set of plugin config stays in sync.
    *
-   * @param \Drupal\Core\Config\Entity\EntityWithPluginBagInterface $entity
+   * @param \Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface $entity
    *   The entity.
    * @param string $config_key
    *   Where the plugin config is stored.
@@ -193,8 +193,8 @@ protected function doSearchPageUpdate() {
    * @param mixed $expected
    *   The expected default value of the plugin config setting.
    */
-  protected function checkSinglePluginConfigSync(EntityWithPluginBagInterface $entity, $config_key, $setting_key, $expected) {
-    $plugin_bag = $entity->getPluginBag();
+  protected function checkSinglePluginConfigSync(EntityWithPluginCollectionInterface $entity, $config_key, $setting_key, $expected) {
+    $plugin_collection = $entity->getPluginCollection();
     $settings = $entity->get($config_key);
 
     // Ensure the default config exists.
@@ -205,14 +205,14 @@ protected function checkSinglePluginConfigSync(EntityWithPluginBagInterface $ent
     $entity->set($config_key, $settings);
     $entity->save();
     $this->assertIdentical($settings, $entity->get($config_key));
-    $this->assertIdentical($settings, $plugin_bag->getConfiguration());
+    $this->assertIdentical($settings, $plugin_collection->getConfiguration());
 
     // Change the plugin config by setting it on the plugin.
     $settings[$setting_key] = $this->randomString();
-    $plugin_bag->setConfiguration($settings);
+    $plugin_collection->setConfiguration($settings);
     $entity->save();
     $this->assertIdentical($settings, $entity->get($config_key));
-    $this->assertIdentical($settings, $plugin_bag->getConfiguration());
+    $this->assertIdentical($settings, $plugin_collection->getConfiguration());
   }
 
   /**
diff --git a/core/modules/system/tests/modules/plugin_test/lib/Drupal/plugin_test/Plugin/TestPluginBag.php b/core/modules/system/tests/modules/plugin_test/lib/Drupal/plugin_test/Plugin/TestPluginCollection.php
similarity index 73%
rename from core/modules/system/tests/modules/plugin_test/lib/Drupal/plugin_test/Plugin/TestPluginBag.php
rename to core/modules/system/tests/modules/plugin_test/lib/Drupal/plugin_test/Plugin/TestPluginCollection.php
index 9c8c7c0..780b06d 100644
--- a/core/modules/system/tests/modules/plugin_test/lib/Drupal/plugin_test/Plugin/TestPluginBag.php
+++ b/core/modules/system/tests/modules/plugin_test/lib/Drupal/plugin_test/Plugin/TestPluginCollection.php
@@ -2,28 +2,28 @@
 
 /**
  * @file
- * Contains \Drupal\plugin_test\Plugin\TestPluginBag.
+ * Contains \Drupal\plugin_test\Plugin\TestPluginCollection.
  */
 
 namespace Drupal\plugin_test\Plugin;
 
-use Drupal\Component\Plugin\PluginBag;
+use Drupal\Component\Plugin\LazyPluginCollection;
 use Drupal\Component\Plugin\PluginManagerInterface;
 
 /**
- * Defines a plugin bag which uses fruit plugins.
+ * Defines a plugin collection which uses fruit plugins.
  */
-class TestPluginBag extends PluginBag {
+class TestPluginCollection extends LazyPluginCollection {
 
   /**
-   * Stores the plugin manager used by this bag.
+   * Stores the plugin manager used by this collection.
    *
    * @var \Drupal\Component\Plugin\PluginManagerInterface
    */
   protected $manager;
 
   /**
-   * Constructs a TestPluginBag object.
+   * Constructs a TestPluginCollection object.
    *
    * @param \Drupal\Component\Plugin\PluginManagerInterface $manager
    *   The plugin manager that handles test plugins.
@@ -36,7 +36,7 @@ public function __construct(PluginManagerInterface $manager) {
   }
 
   /**
-   * Implements \Drupal\Component\Plugin\PluginBag::initializePlugin().
+   * {@inheritdoc}
    */
   protected function initializePlugin($instance_id) {
     $this->pluginInstances[$instance_id] = $this->manager->createInstance($instance_id, array());
diff --git a/core/modules/tour/lib/Drupal/tour/Entity/Tour.php b/core/modules/tour/lib/Drupal/tour/Entity/Tour.php
index 1361942..274a08c 100644
--- a/core/modules/tour/lib/Drupal/tour/Entity/Tour.php
+++ b/core/modules/tour/lib/Drupal/tour/Entity/Tour.php
@@ -9,7 +9,7 @@
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Entity\EntityStorageInterface;
-use Drupal\tour\TipsBag;
+use Drupal\tour\TipsCollection;
 use Drupal\tour\TourInterface;
 
 /**
@@ -67,12 +67,12 @@ class Tour extends ConfigEntityBase implements TourInterface {
   /**
    * Holds the collection of tips that are attached to this tour.
    *
-   * @var \Drupal\tour\TipsBag
+   * @var \Drupal\tour\TipsCollection
    */
-  protected $tipsBag;
+  protected $tipsCollection;
 
   /**
-   * The array of plugin config, only used for export and to populate the $tipsBag.
+   * The array of plugin config, only used for export and to populate the $tipsCollection.
    *
    * @var array
    */
@@ -84,7 +84,7 @@ class Tour extends ConfigEntityBase implements TourInterface {
   public function __construct(array $values, $entity_type) {
     parent::__construct($values, $entity_type);
 
-    $this->tipsBag = new TipsBag(\Drupal::service('plugin.manager.tour.tip'), $this->tips);
+    $this->tipsCollection = new TipsCollection(\Drupal::service('plugin.manager.tour.tip'), $this->tips);
   }
 
   /**
@@ -98,7 +98,7 @@ public function getRoutes() {
    * {@inheritdoc}
    */
   public function getTip($id) {
-    return $this->tipsBag->get($id);
+    return $this->tipsCollection->get($id);
   }
 
   /**
@@ -175,7 +175,7 @@ public function resetKeyedRoutes() {
   public function calculateDependencies() {
     parent::calculateDependencies();
 
-    foreach($this->tipsBag as $instance) {
+    foreach($this->tipsCollection as $instance) {
       $definition = $instance->getPluginDefinition();
       $this->addDependency('module', $definition['provider']);
     }
diff --git a/core/modules/tour/lib/Drupal/tour/TipsBag.php b/core/modules/tour/lib/Drupal/tour/TipsCollection.php
similarity index 67%
rename from core/modules/tour/lib/Drupal/tour/TipsBag.php
rename to core/modules/tour/lib/Drupal/tour/TipsCollection.php
index 337d3dc..8b5cd0b 100644
--- a/core/modules/tour/lib/Drupal/tour/TipsBag.php
+++ b/core/modules/tour/lib/Drupal/tour/TipsCollection.php
@@ -2,17 +2,17 @@
 
 /**
  * @file
- * Contains \Drupal\tour\TipsBag.
+ * Contains \Drupal\tour\TipsCollection.
  */
 
 namespace Drupal\tour;
 
-use Drupal\Core\Plugin\DefaultPluginBag;
+use Drupal\Core\Plugin\DefaultLazyPluginCollection;
 
 /**
  * A collection of tips.
  */
-class TipsBag extends DefaultPluginBag {
+class TipsCollection extends DefaultLazyPluginCollection {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/views/lib/Drupal/views/DisplayBag.php b/core/modules/views/lib/Drupal/views/DisplayCollection.php
similarity index 89%
rename from core/modules/views/lib/Drupal/views/DisplayBag.php
rename to core/modules/views/lib/Drupal/views/DisplayCollection.php
index a724745..ea70ffa 100644
--- a/core/modules/views/lib/Drupal/views/DisplayBag.php
+++ b/core/modules/views/lib/Drupal/views/DisplayCollection.php
@@ -2,19 +2,19 @@
 
 /**
  * @file
- * Contains \Drupal\views\DisplayBag.
+ * Contains \Drupal\views\DisplayCollection.
  */
 
 namespace Drupal\views;
 
 use Drupal\Component\Plugin\Exception\PluginException;
 use Drupal\Component\Plugin\PluginManagerInterface;
-use Drupal\Core\Plugin\DefaultPluginBag;
+use Drupal\Core\Plugin\DefaultLazyPluginCollection;
 
 /**
  * A class which wraps the displays of a view so you can lazy-initialize them.
  */
-class DisplayBag extends DefaultPluginBag {
+class DisplayCollection extends DefaultLazyPluginCollection {
 
   /**
    * Stores a reference to the view which has this displays attached.
@@ -29,7 +29,7 @@ class DisplayBag extends DefaultPluginBag {
   protected $pluginKey = 'display_plugin';
 
   /**
-   * Constructs a DisplayBag object.
+   * Constructs a DisplayCollection object.
    *
    * @param \Drupal\views\ViewExecutable
    *   The view which has this displays attached.
@@ -44,7 +44,7 @@ public function __construct(ViewExecutable $view, PluginManagerInterface $manage
   }
 
   /**
-   * Destructs a DisplayBag object.
+   * Destructs a DisplayCollection object.
    */
   public function __destruct() {
     $this->clear();
@@ -60,7 +60,7 @@ public function &get($instance_id) {
   }
 
   /**
-   * Overrides \Drupal\Component\Plugin\PluginBag::clear().
+   * {@inheritdoc}
    */
   public function clear() {
     foreach (array_filter($this->pluginInstances) as $display) {
@@ -102,7 +102,7 @@ protected function initializePlugin($display_id) {
   }
 
   /**
-   * Overrides \Drupal\Component\Plugin\PluginBag::remove().
+   * {@inheritdoc}
    */
   public function remove($instance_id) {
     $this->get($instance_id)->remove();
diff --git a/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayFeedTest.php b/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayFeedTest.php
index 34403c8..b29f458 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayFeedTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayFeedTest.php
@@ -52,7 +52,8 @@ public function testFeedUI() {
     $this->drupalGet('admin/structure/views');
     // Verify that the page lists the test_display_feed view.
     // Regression test: ViewListBuilder::getDisplayPaths() did not properly
-    // check whether a DisplayBag was returned in iterating over all displays.
+    // check whether a DisplayCollection was returned in iterating over all
+    // displays.
     $this->assertText('test_display_feed');
 
     // Check the attach TO interface.
diff --git a/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php b/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php
index c0228ba..ec0404f 100644
--- a/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php
@@ -10,7 +10,7 @@
 use Drupal\views\Views;
 use Drupal\views\ViewExecutable;
 use Drupal\views\ViewExecutableFactory;
-use Drupal\views\DisplayBag;
+use Drupal\views\DisplayCollection;
 use Drupal\views\Plugin\views\display\DefaultDisplay;
 use Drupal\views\Plugin\views\display\Page;
 use Drupal\views\Plugin\views\style\DefaultStyle;
@@ -201,7 +201,7 @@ public function testDisplays() {
 
     // Tests Drupal\views\ViewExecutable::initDisplay().
     $view->initDisplay();
-    $this->assertTrue($view->displayHandlers instanceof DisplayBag, 'The displayHandlers property has the right class.');
+    $this->assertTrue($view->displayHandlers instanceof DisplayCollection, 'The displayHandlers property has the right class.');
     // Tests the classes of the instances.
     $this->assertTrue($view->displayHandlers->get('default') instanceof DefaultDisplay);
     $this->assertTrue($view->displayHandlers->get('page_1') instanceof Page);
diff --git a/core/modules/views/lib/Drupal/views/ViewExecutable.php b/core/modules/views/lib/Drupal/views/ViewExecutable.php
index 4883932..3600989 100644
--- a/core/modules/views/lib/Drupal/views/ViewExecutable.php
+++ b/core/modules/views/lib/Drupal/views/ViewExecutable.php
@@ -205,7 +205,7 @@ class ViewExecutable extends DependencySerialization {
    * An array containing Drupal\views\Plugin\views\display\DisplayPluginBase
    * objects.
    *
-   * @var \Drupal\views\DisplayBag
+   * @var \Drupal\views\DisplayCollection
    */
   public $displayHandlers;
 
@@ -622,7 +622,7 @@ public function initDisplay() {
     }
 
     // Initialize the display cache array.
-    $this->displayHandlers = new DisplayBag($this, Views::pluginManager('display'));
+    $this->displayHandlers = new DisplayCollection($this, Views::pluginManager('display'));
 
     $this->current_display = 'default';
     $this->display_handler = $this->displayHandlers->get('default');
diff --git a/core/modules/views/tests/Drupal/views/Tests/Controller/ViewAjaxControllerTest.php b/core/modules/views/tests/Drupal/views/Tests/Controller/ViewAjaxControllerTest.php
index 588eec7..4e3aa22 100644
--- a/core/modules/views/tests/Drupal/views/Tests/Controller/ViewAjaxControllerTest.php
+++ b/core/modules/views/tests/Drupal/views/Tests/Controller/ViewAjaxControllerTest.php
@@ -140,15 +140,15 @@ public function testAjaxView() {
     $display_handler->expects($this->never())
       ->method('setOption');
 
-    $display_bag = $this->getMockBuilder('Drupal\views\DisplayBag')
+    $display_collection = $this->getMockBuilder('Drupal\views\DisplayCollection')
       ->disableOriginalConstructor()
       ->getMock();
-    $display_bag->expects($this->any())
+    $display_collection->expects($this->any())
       ->method('get')
       ->with('page_1')
       ->will($this->returnValue($display_handler));
 
-    $executable->displayHandlers = $display_bag;
+    $executable->displayHandlers = $display_collection;
 
     $response = $this->viewAjaxController->ajaxView($request);
     $this->assertTrue($response instanceof ViewAjaxResponse);
@@ -198,14 +198,14 @@ public function testAjaxViewWithPager() {
       ->method('setOption', '0')
       ->with($this->equalTo('pager_element'));
 
-    $display_bag = $this->getMockBuilder('Drupal\views\DisplayBag')
+    $display_collection = $this->getMockBuilder('Drupal\views\DisplayCollection')
       ->disableOriginalConstructor()
       ->getMock();
-    $display_bag->expects($this->any())
+    $display_collection->expects($this->any())
       ->method('get')
       ->with('page_1')
       ->will($this->returnValue($display_handler));
-    $executable->displayHandlers = $display_bag;
+    $executable->displayHandlers = $display_collection;
 
     $response = $this->viewAjaxController->ajaxView($request);
     $this->assertTrue($response instanceof ViewAjaxResponse);
diff --git a/core/modules/views/tests/Drupal/views/Tests/EventSubscriber/RouteSubscriberTest.php b/core/modules/views/tests/Drupal/views/Tests/EventSubscriber/RouteSubscriberTest.php
index 059749f..d0d9955 100644
--- a/core/modules/views/tests/Drupal/views/Tests/EventSubscriber/RouteSubscriberTest.php
+++ b/core/modules/views/tests/Drupal/views/Tests/EventSubscriber/RouteSubscriberTest.php
@@ -176,16 +176,16 @@ protected function setupMocks() {
     $display_1 = $this->getMock('Drupal\views\Plugin\views\display\DisplayRouterInterface');
     $display_2 = $this->getMock('Drupal\views\Plugin\views\display\DisplayRouterInterface');
 
-    $display_bag = $this->getMockBuilder('Drupal\views\DisplayBag')
+    $display_collection = $this->getMockBuilder('Drupal\views\DisplayCollection')
       ->disableOriginalConstructor()
       ->getMock();
-    $display_bag->expects($this->any())
+    $display_collection->expects($this->any())
       ->method('get')
       ->will($this->returnValueMap(array(
         array('page_1', $display_1),
         array('page_2', $display_2),
       )));
-    $executable->displayHandlers = $display_bag;
+    $executable->displayHandlers = $display_collection;
 
     $this->routeSubscriber->applicableViews = array();
     $this->routeSubscriber->applicableViews[] = array($executable, 'page_1');
diff --git a/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php b/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php
index 3c52f73..23a9042 100644
--- a/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php
@@ -210,44 +210,44 @@ public function testAddDependency() {
   /**
    * @covers ::calculateDependencies
    *
-   * @dataProvider providerCalculateDependenciesWithPluginBag
+   * @dataProvider providerCalculateDependenciesWithPluginCollection
    */
-  public function testCalculateDependenciesWithPluginBag($definition, $expected_dependencies) {
+  public function testCalculateDependenciesWithPluginCollection($definition, $expected_dependencies) {
     $values = array();
-    $this->entity = $this->getMockBuilder('\Drupal\Tests\Core\Config\Entity\Fixtures\ConfigEntityBaseWithPluginBag')
+    $this->entity = $this->getMockBuilder('\Drupal\Tests\Core\Config\Entity\Fixtures\ConfigEntityBaseWithPluginCollection')
       ->setConstructorArgs(array($values, $this->entityTypeId))
-      ->setMethods(array('getPluginBag'))
+      ->setMethods(array('getPluginCollection'))
       ->getMock();
 
     // Create a configurable plugin that would add a dependency.
     $instance_id = $this->randomName();
     $instance = new TestConfigurablePlugin(array(), $instance_id, $definition);
 
-    // Create a plugin bag to contain the instance.
-    $pluginBag = $this->getMockBuilder('\Drupal\Core\Plugin\DefaultPluginBag')
+    // Create a plugin collection to contain the instance.
+    $pluginCollection = $this->getMockBuilder('\Drupal\Core\Plugin\DefaultLazyPluginCollection')
       ->disableOriginalConstructor()
       ->setMethods(array('get'))
       ->getMock();
-    $pluginBag->expects($this->atLeastOnce())
+    $pluginCollection->expects($this->atLeastOnce())
       ->method('get')
       ->with($instance_id)
       ->will($this->returnValue($instance));
-    $pluginBag->addInstanceId($instance_id);
+    $pluginCollection->addInstanceId($instance_id);
 
-    // Return the mocked plugin bag.
+    // Return the mocked plugin collection.
     $this->entity->expects($this->once())
-      ->method('getPluginBag')
-      ->will($this->returnValue($pluginBag));
+      ->method('getPluginCollection')
+      ->will($this->returnValue($pluginCollection));
 
     $this->assertEquals($expected_dependencies, $this->entity->calculateDependencies());
   }
 
   /**
-   * Data provider for testCalculateDependenciesWithPluginBag.
+   * Data provider for testCalculateDependenciesWithPluginCollection.
    *
    * @return array
    */
-  public function providerCalculateDependenciesWithPluginBag() {
+  public function providerCalculateDependenciesWithPluginCollection() {
     // Start with 'a' so that order of the dependency array is fixed.
     $instance_dependency_1 = 'a' . $this->randomName(10);
     $instance_dependency_2 = 'a' . $this->randomName(11);
diff --git a/core/tests/Drupal/Tests/Core/Config/Entity/Fixtures/ConfigEntityBaseWithPluginBag.php b/core/tests/Drupal/Tests/Core/Config/Entity/Fixtures/ConfigEntityBaseWithPluginCollection.php
similarity index 58%
rename from core/tests/Drupal/Tests/Core/Config/Entity/Fixtures/ConfigEntityBaseWithPluginBag.php
rename to core/tests/Drupal/Tests/Core/Config/Entity/Fixtures/ConfigEntityBaseWithPluginCollection.php
index 85a7f10..49a6e97 100644
--- a/core/tests/Drupal/Tests/Core/Config/Entity/Fixtures/ConfigEntityBaseWithPluginBag.php
+++ b/core/tests/Drupal/Tests/Core/Config/Entity/Fixtures/ConfigEntityBaseWithPluginCollection.php
@@ -2,19 +2,19 @@
 
 /**
  * @file
- * Contains \Drupal\Tests\Core\Config\Entity\Fixtures\ConfigEntityBaseWithPluginBag.
+ * Contains \Drupal\Tests\Core\Config\Entity\Fixtures\ConfigEntityBaseWithPluginCollection.
  */
 
 namespace Drupal\Tests\Core\Config\Entity\Fixtures;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Core\Config\Entity\EntityWithPluginBagInterface;
+use Drupal\Core\Config\Entity\EntityWithPluginCollectionInterface;
 
 /**
  * Enables testing of dependency calculation.
  *
- * @see \Drupal\Tests\Core\Config\Entity\ConfigEntityBaseUnitTest::testCalculateDependenciesWithPluginBag()
+ * @see \Drupal\Tests\Core\Config\Entity\ConfigEntityBaseUnitTest::testCalculateDependenciesWithPluginCollection()
  * @see \Drupal\Core\Config\Entity\ConfigEntityBase::calculateDependencies()
  */
-abstract class ConfigEntityBaseWithPluginBag extends ConfigEntityBase implements EntityWithPluginBagInterface {
+abstract class ConfigEntityBaseWithPluginCollection extends ConfigEntityBase implements EntityWithPluginCollectionInterface {
 }
diff --git a/core/tests/Drupal/Tests/Core/Plugin/ConfigurablePluginBagTest.php b/core/tests/Drupal/Tests/Core/Plugin/ConfigurablePluginCollectionTest.php
similarity index 61%
rename from core/tests/Drupal/Tests/Core/Plugin/ConfigurablePluginBagTest.php
rename to core/tests/Drupal/Tests/Core/Plugin/ConfigurablePluginCollectionTest.php
index 11fbb37..c0df6ca 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/ConfigurablePluginBagTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/ConfigurablePluginCollectionTest.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\Tests\Core\Plugin\ConfigurablePluginBagTest.
+ * Contains \Drupal\Tests\Core\Plugin\ConfigurablePluginCollectionTest.
  */
 
 namespace Drupal\Tests\Core\Plugin;
@@ -10,15 +10,15 @@
 use Drupal\Tests\Core\Plugin\Fixtures\TestConfigurablePlugin;
 
 /**
- * Tests the default plugin bag with configurable plugins.
+ * Tests the default plugin collection with configurable plugins.
  *
  * @see \Drupal\Component\Plugin\ConfigurablePluginInterface
- * @see \Drupal\Core\Plugin\DefaultPluginBag
+ * @see \Drupal\Core\Plugin\DefaultLazyPluginCollection
  *
  * @group Drupal
  * @group Drupal_Plugin
  */
-class ConfigurablePluginBagTest extends PluginBagTestBase {
+class ConfigurablePluginCollectionTest extends LazyPluginCollectionTestBase {
 
   /**
    * Stores all setup plugin instances.
@@ -32,8 +32,8 @@ class ConfigurablePluginBagTest extends PluginBagTestBase {
    */
   public static function getInfo() {
     return array(
-      'name' => 'Configurable plugin bag',
-      'description' => 'Tests the plugin bag with configurable plugins.',
+      'name' => 'Configurable plugin collection',
+      'description' => 'Tests the plugin collection with configurable plugins.',
       'group' => 'Plugin API',
     );
   }
@@ -49,8 +49,8 @@ protected function getPluginMock($plugin_id, array $definition) {
    * Tests the getConfiguration() method with configurable plugins.
    */
   public function testConfigurableGetConfiguration() {
-    $this->setupPluginBag($this->exactly(3));
-    $config = $this->defaultPluginBag->getConfiguration();
+    $this->setupPluginCollection($this->exactly(3));
+    $config = $this->defaultPluginCollection->getConfiguration();
     $this->assertSame($this->config, $config);
   }
 
@@ -58,13 +58,13 @@ public function testConfigurableGetConfiguration() {
    * Tests the setConfiguration() method with configurable plugins.
    */
   public function testConfigurableSetConfiguration() {
-    $this->setupPluginBag($this->exactly(3));
-    $this->defaultPluginBag->getConfiguration();
-    $this->defaultPluginBag->setInstanceConfiguration('apple', array('value' => 'pineapple'));
+    $this->setupPluginCollection($this->exactly(3));
+    $this->defaultPluginCollection->getConfiguration();
+    $this->defaultPluginCollection->setInstanceConfiguration('apple', array('value' => 'pineapple'));
 
     $expected = $this->config;
     $expected['apple'] = array('value' => 'pineapple');
-    $config = $this->defaultPluginBag->getConfiguration();
+    $config = $this->defaultPluginCollection->getConfiguration();
     $this->assertSame($expected, $config);
     $plugin = $this->pluginInstances['apple'];
     $this->assertSame($expected['apple'], $plugin->getConfiguration());
diff --git a/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginBagTest.php b/core/tests/Drupal/Tests/Core/Plugin/DefaultLazyPluginCollectionTest.php
similarity index 55%
rename from core/tests/Drupal/Tests/Core/Plugin/DefaultPluginBagTest.php
rename to core/tests/Drupal/Tests/Core/Plugin/DefaultLazyPluginCollectionTest.php
index 18eec54..15a4291 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginBagTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/DefaultLazyPluginCollectionTest.php
@@ -2,28 +2,28 @@
 
 /**
  * @file
- * Contains \Drupal\Tests\Core\Plugin\DefaultPluginBagTest.
+ * Contains \Drupal\Tests\Core\Plugin\DefaultLazyPluginCollectionTest.
  */
 
 namespace Drupal\Tests\Core\Plugin;
 
 /**
- * Tests the default plugin bag.
+ * Tests the default plugin collection.
  *
- * @see \Drupal\Core\Plugin\DefaultPluginBag
+ * @coversDefaultClass \Drupal\Core\Plugin\DefaultLazyPluginCollection
  *
  * @group Drupal
  * @group Drupal_Plugin
  */
-class DefaultPluginBagTest extends PluginBagTestBase {
+class DefaultLazyPluginCollectionTest extends LazyPluginCollectionTestBase {
 
   /**
    * {@inheritdoc}
    */
   public static function getInfo() {
     return array(
-      'name' => 'Default plugin bag',
-      'description' => 'Tests the default plugin bag.',
+      'name' => 'Default plugin collection',
+      'description' => 'Tests the default plugin collection.',
       'group' => 'Plugin API',
     );
   }
@@ -31,29 +31,29 @@ public static function getInfo() {
   /**
    * Tests the has method.
    *
-   * @see \Drupal\Core\Plugin\DefaultPluginBag::has()
+   * @covers ::has()
    */
   public function testHas() {
-    $this->setupPluginBag();
+    $this->setupPluginCollection();
     $definitions = $this->getPluginDefinitions();
 
-    $this->assertFalse($this->defaultPluginBag->has($this->randomName()), 'Nonexistent plugin found.');
+    $this->assertFalse($this->defaultPluginCollection->has($this->randomName()), 'Nonexistent plugin found.');
 
     foreach (array_keys($definitions) as $plugin_id) {
-      $this->assertTrue($this->defaultPluginBag->has($plugin_id));
+      $this->assertTrue($this->defaultPluginCollection->has($plugin_id));
     }
   }
 
   /**
    * Tests the get method.
    *
-   * @see \Drupal\Core\Plugin\DefaultPluginBag::get()
+   * @covers ::get()
    */
   public function testGet() {
-    $this->setupPluginBag($this->once());
+    $this->setupPluginCollection($this->once());
     $apple = $this->pluginInstances['apple'];
 
-    $this->assertSame($apple, $this->defaultPluginBag->get('apple'));
+    $this->assertSame($apple, $this->defaultPluginCollection->get('apple'));
   }
 
   /**
@@ -63,8 +63,8 @@ public function testGet() {
    * @expectedExceptionMessage Plugin ID 'pear' was not found.
    */
   public function testGetNotExistingPlugin() {
-    $this->setupPluginBag();
-    $this->defaultPluginBag->get('pear');
+    $this->setupPluginCollection();
+    $this->defaultPluginCollection->get('pear');
   }
 
   /**
@@ -95,34 +95,35 @@ public function providerTestSortHelper() {
    * @dataProvider providerTestSortHelper
    */
   public function testSortHelper($plugin_id_1, $plugin_id_2, $expected) {
-    $this->setupPluginBag($this->any());
+    $this->setupPluginCollection($this->any());
     if ($expected != 0) {
       $expected = $expected > 0 ? 1 : -1;
     }
-    $this->assertEquals($expected, $this->defaultPluginBag->sortHelper($plugin_id_1, $plugin_id_2));
+    $this->assertEquals($expected, $this->defaultPluginCollection->sortHelper($plugin_id_1, $plugin_id_2));
   }
 
   /**
    * Tests the configuration getter method.
    *
-   * @see \Drupal\Core\Plugin\DefaultPluginBag::getConfiguration()
+   * @covers ::getConfiguration()
+   * @covers ::sort()
    */
   public function testGetConfiguration() {
-    $this->setupPluginBag($this->exactly(3));
+    $this->setupPluginCollection($this->exactly(3));
     // The expected order matches $this->config.
     $expected = array('banana', 'cherry', 'apple');
 
-    $config = $this->defaultPluginBag->getConfiguration();
+    $config = $this->defaultPluginCollection->getConfiguration();
     $this->assertSame($expected, array_keys($config), 'The order of the configuration is unchanged.');
 
-    $ids = $this->defaultPluginBag->getInstanceIds();
+    $ids = $this->defaultPluginCollection->getInstanceIds();
     $this->assertSame($expected, array_keys($ids), 'The order of the instances is unchanged.');
 
-    $this->defaultPluginBag->sort();
-    $config = $this->defaultPluginBag->getConfiguration();
+    $this->defaultPluginCollection->sort();
+    $config = $this->defaultPluginCollection->getConfiguration();
     $this->assertSame($expected, array_keys($config), 'After sorting, the order of the configuration is unchanged.');
 
-    $ids = $this->defaultPluginBag->getInstanceIds();
+    $ids = $this->defaultPluginCollection->getInstanceIds();
     sort($expected);
     $this->assertSame($expected, array_keys($ids), 'After sorting, the order of the instances is also sorted.');
   }
@@ -131,56 +132,56 @@ public function testGetConfiguration() {
    * Tests the addInstanceId() method.
    */
   public function testAddInstanceId() {
-    $this->setupPluginBag($this->exactly(4));
+    $this->setupPluginCollection($this->exactly(4));
     $expected = array(
       'banana' => 'banana',
       'cherry' => 'cherry',
       'apple' => 'apple',
     );
-    $this->defaultPluginBag->addInstanceId('apple');
-    $result = $this->defaultPluginBag->getInstanceIds();
+    $this->defaultPluginCollection->addInstanceId('apple');
+    $result = $this->defaultPluginCollection->getInstanceIds();
     $this->assertSame($expected, $result);
-    $this->assertSame($expected, array_intersect_key($result, $this->defaultPluginBag->getConfiguration()));
+    $this->assertSame($expected, array_intersect_key($result, $this->defaultPluginCollection->getConfiguration()));
 
     $expected = array(
       'cherry' => 'cherry',
       'apple' => 'apple',
       'banana' => 'banana',
     );
-    $this->defaultPluginBag->removeInstanceId('banana');
-    $this->defaultPluginBag->addInstanceId('banana', $this->config['banana']);
+    $this->defaultPluginCollection->removeInstanceId('banana');
+    $this->defaultPluginCollection->addInstanceId('banana', $this->config['banana']);
 
-    $result = $this->defaultPluginBag->getInstanceIds();
+    $result = $this->defaultPluginCollection->getInstanceIds();
     $this->assertSame($expected, $result);
-    $this->assertSame($expected, array_intersect_key($result, $this->defaultPluginBag->getConfiguration()));
+    $this->assertSame($expected, array_intersect_key($result, $this->defaultPluginCollection->getConfiguration()));
   }
 
   /**
    * Tests the removeInstanceId() method.
    *
-   * @see \Drupal\Core\Plugin\DefaultPluginBag::removeInstanceId()
+   * @covers ::removeInstanceId()
    */
   public function testRemoveInstanceId() {
-    $this->setupPluginBag($this->exactly(2));
-    $this->defaultPluginBag->removeInstanceId('cherry');
-    $config = $this->defaultPluginBag->getConfiguration();
+    $this->setupPluginCollection($this->exactly(2));
+    $this->defaultPluginCollection->removeInstanceId('cherry');
+    $config = $this->defaultPluginCollection->getConfiguration();
     $this->assertArrayNotHasKey('cherry', $config, 'After removing an instance, the configuration is updated.');
   }
 
   /**
    * Tests the setInstanceConfiguration() method.
    *
-   * @see \Drupal\Core\Plugin\DefaultPluginBag::setInstanceConfiguration()
+   * @covers ::setInstanceConfiguration()
    */
   public function testSetInstanceConfiguration() {
-    $this->setupPluginBag($this->exactly(3));
+    $this->setupPluginCollection($this->exactly(3));
     $expected = array(
       'id' => 'cherry',
       'key' => 'value',
       'custom' => 'bananas',
     );
-    $this->defaultPluginBag->setInstanceConfiguration('cherry', $expected);
-    $config = $this->defaultPluginBag->getConfiguration();
+    $this->defaultPluginCollection->setInstanceConfiguration('cherry', $expected);
+    $config = $this->defaultPluginCollection->getConfiguration();
     $this->assertSame($expected, $config['cherry']);
   }
 
@@ -188,29 +189,29 @@ public function testSetInstanceConfiguration() {
    * Tests the count() method.
    */
   public function testCount() {
-    $this->setupPluginBag();
-    $this->assertSame(3, $this->defaultPluginBag->count());
+    $this->setupPluginCollection();
+    $this->assertSame(3, $this->defaultPluginCollection->count());
   }
 
   /**
    * Tests the clear() method.
    */
   public function testClear() {
-    $this->setupPluginBag($this->exactly(6));
-    $this->defaultPluginBag->getConfiguration();
-    $this->defaultPluginBag->getConfiguration();
-    $this->defaultPluginBag->clear();
-    $this->defaultPluginBag->getConfiguration();
+    $this->setupPluginCollection($this->exactly(6));
+    $this->defaultPluginCollection->getConfiguration();
+    $this->defaultPluginCollection->getConfiguration();
+    $this->defaultPluginCollection->clear();
+    $this->defaultPluginCollection->getConfiguration();
   }
 
   /**
    * Tests the set() method.
    */
   public function testSet() {
-    $this->setupPluginBag($this->exactly(4));
+    $this->setupPluginCollection($this->exactly(4));
     $instance = $this->pluginManager->createInstance('cherry', $this->config['cherry']);
-    $this->defaultPluginBag->set('cherry2', $instance);
-    $this->defaultPluginBag->setInstanceConfiguration('cherry2', $this->config['cherry']);
+    $this->defaultPluginCollection->set('cherry2', $instance);
+    $this->defaultPluginCollection->setInstanceConfiguration('cherry2', $this->config['cherry']);
 
     $expected = array(
       'banana',
@@ -218,7 +219,7 @@ public function testSet() {
       'apple',
       'cherry2',
     );
-    $config = $this->defaultPluginBag->getConfiguration();
+    $config = $this->defaultPluginCollection->getConfiguration();
     $this->assertSame($expected, array_keys($config));
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Plugin/DefaultSingleLazyPluginCollectionTest.php b/core/tests/Drupal/Tests/Core/Plugin/DefaultSingleLazyPluginCollectionTest.php
new file mode 100644
index 0000000..4958993
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Plugin/DefaultSingleLazyPluginCollectionTest.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Tests\Core\Plugin\DefaultSingleLazyPluginCollectionTest.
+ */
+
+namespace Drupal\Tests\Core\Plugin;
+
+use Drupal\Core\Plugin\DefaultSingleLazyPluginCollection;
+
+/**
+ * Tests the default single plugin collection.
+ *
+ * @see \Drupal\Core\Plugin\DefaultSingleLazyPluginCollection
+ *
+ * @group Drupal
+ * @group Drupal_Plugin
+ */
+class DefaultSingleLazyPluginCollectionTest extends LazyPluginCollectionTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getInfo() {
+    return array(
+      'name' => 'Default single plugin collection',
+      'description' => 'Tests the default single plugin collection.',
+      'group' => 'Plugin API',
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setupPluginCollection(\PHPUnit_Framework_MockObject_Matcher_InvokedRecorder $create_count = NULL) {
+    $definitions = $this->getPluginDefinitions();
+    $this->pluginInstances['apple'] = $this->getPluginMock('apple', $definitions['apple']);
+    $create_count = $create_count ?: $this->never();
+    $this->pluginManager->expects($create_count)
+      ->method('createInstance')
+      ->will($this->returnValue($this->pluginInstances['apple']));
+
+    $this->defaultPluginCollection = new DefaultSingleLazyPluginCollection($this->pluginManager, 'apple', array('id' => 'apple', 'key' => 'value'));
+  }
+
+  /**
+   * Tests the get() method.
+   */
+  public function testGet() {
+    $this->setupPluginCollection($this->once());
+    $apple = $this->pluginInstances['apple'];
+
+    $this->assertSame($apple, $this->defaultPluginCollection->get('apple'));
+  }
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Plugin/DefaultSinglePluginBagTest.php b/core/tests/Drupal/Tests/Core/Plugin/DefaultSinglePluginBagTest.php
deleted file mode 100644
index ec7171a..0000000
--- a/core/tests/Drupal/Tests/Core/Plugin/DefaultSinglePluginBagTest.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Tests\Core\Plugin\DefaultSinglePluginBagTest.
- */
-
-namespace Drupal\Tests\Core\Plugin;
-
-use Drupal\Core\Plugin\DefaultSinglePluginBag;
-
-/**
- * Tests the default single plugin bag.
- *
- * @see \Drupal\Core\Plugin\DefaultSinglePluginBag
- *
- * @group Drupal
- * @group Drupal_Plugin
- */
-class DefaultSinglePluginBagTest extends PluginBagTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function getInfo() {
-    return array(
-      'name' => 'Default single plugin bag',
-      'description' => 'Tests the default single plugin bag.',
-      'group' => 'Plugin API',
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setupPluginBag(\PHPUnit_Framework_MockObject_Matcher_InvokedRecorder $create_count = NULL) {
-    $definitions = $this->getPluginDefinitions();
-    $this->pluginInstances['apple'] = $this->getPluginMock('apple', $definitions['apple']);
-    $create_count = $create_count ?: $this->never();
-    $this->pluginManager->expects($create_count)
-      ->method('createInstance')
-      ->will($this->returnValue($this->pluginInstances['apple']));
-
-    $this->defaultPluginBag = new DefaultSinglePluginBag($this->pluginManager, 'apple', array('id' => 'apple', 'key' => 'value'));
-  }
-
-  /**
-   * Tests the get() method.
-   */
-  public function testGet() {
-    $this->setupPluginBag($this->once());
-    $apple = $this->pluginInstances['apple'];
-
-    $this->assertSame($apple, $this->defaultPluginBag->get('apple'));
-  }
-
-}
diff --git a/core/tests/Drupal/Tests/Core/Plugin/PluginBagTestBase.php b/core/tests/Drupal/Tests/Core/Plugin/LazyPluginCollectionTestBase.php
similarity index 85%
rename from core/tests/Drupal/Tests/Core/Plugin/PluginBagTestBase.php
rename to core/tests/Drupal/Tests/Core/Plugin/LazyPluginCollectionTestBase.php
index 0e01a76..9e215bc 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/PluginBagTestBase.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/LazyPluginCollectionTestBase.php
@@ -2,18 +2,18 @@
 
 /**
  * @file
- * Contains \Drupal\Tests\Core\Plugin\PluginBagTestBase.
+ * Contains \Drupal\Tests\Core\Plugin\LazyPluginCollectionTestBase.
  */
 
 namespace Drupal\Tests\Core\Plugin;
 
-use Drupal\Core\Plugin\DefaultPluginBag;
+use Drupal\Core\Plugin\DefaultLazyPluginCollection;
 use Drupal\Tests\UnitTestCase;
 
 /**
- * Provides a base class for plugin bag tests.
+ * Provides a base class for plugin collection tests.
  */
-abstract class PluginBagTestBase extends UnitTestCase {
+abstract class LazyPluginCollectionTestBase extends UnitTestCase {
 
   /**
    * The mocked plugin manager.
@@ -23,11 +23,11 @@
   protected $pluginManager;
 
   /**
-   * The tested plugin bag.
+   * The tested plugin collection.
    *
-   * @var \Drupal\Core\Plugin\DefaultPluginBag|\PHPUnit_Framework_MockObject_MockObject
+   * @var \Drupal\Core\Plugin\DefaultLazyPluginCollection|\PHPUnit_Framework_MockObject_MockObject
    */
-  protected $defaultPluginBag;
+  protected $defaultPluginCollection;
 
   /**
    * Stores all setup plugin instances.
@@ -56,14 +56,14 @@ protected function setUp() {
   }
 
   /**
-   * Sets up the default plugin bag.
+   * Sets up the default plugin collection.
    *
    * @param \PHPUnit_Framework_MockObject_Matcher_InvokedRecorder|null $create_count
    *   (optional) The number of times that createInstance() is expected to be
    *   called. For example, $this->any(), $this->once(), $this->exactly(6).
    *   Defaults to $this->never().
    */
-  protected function setupPluginBag(\PHPUnit_Framework_MockObject_Matcher_InvokedRecorder $create_count = NULL) {
+  protected function setupPluginCollection(\PHPUnit_Framework_MockObject_Matcher_InvokedRecorder $create_count = NULL) {
     $this->pluginInstances = array();
     $map = array();
     foreach ($this->getPluginDefinitions() as $plugin_id => $definition) {
@@ -77,7 +77,7 @@ protected function setupPluginBag(\PHPUnit_Framework_MockObject_Matcher_InvokedR
       ->method('createInstance')
       ->will($this->returnCallback(array($this, 'returnPluginMap')));
 
-    $this->defaultPluginBag = new DefaultPluginBag($this->pluginManager, $this->config);
+    $this->defaultPluginCollection = new DefaultLazyPluginCollection($this->pluginManager, $this->config);
   }
 
   /**
