In order to more accurately convey its purpose, PluginBag has been renamed to LazyPluginCollection.
In keeping with the new name, other classes have been renamed:
before
PluginBag
-- DefaultPluginBag
---- ConditionPluginBag
---- FilterBag
---- ImageEffectBag
---- TipsBag
---- DisplayBag
-- DefaultSinglePluginBag
---- ActionBag
---- BlockPluginBag
---- SearchPluginBag
-- TestPluginBag
PluginBagTestBase
-- ConfigurablePluginBagTest
-- DefaultPluginBagTest
-- DefaultSinglePluginBagTest
EntityWithPluginBagsInterface
ConfigEntityBaseWithPluginBags
SearchPluginBagTest
after
LazyPluginCollection
-- DefaultLazyPluginCollection
---- ConditionPluginCollection
---- FilterPluginCollection
---- ImageEffectPluginCollection
---- TipsPluginCollection
---- DisplayPluginCollection
-- DefaultSingleLazyPluginCollection
---- ActionPluginCollection
---- BlockPluginCollection
---- SearchPluginCollection
-- TestLazyPluginCollection
LazyPluginCollectionTestBase
-- ConfigurablePluginCollectionTest
-- DefaultLazyPluginCollectionTest
-- DefaultSingleLazyPluginCollectionTest
EntityWithPluginCollectionInterface
ConfigEntityBaseWithPluginCollections
SearchPluginCollectionTest
Background
The concept of PluginBags was introduced by views and then expanded to a half dozen other entity types. PluginBags provide a way to lazily instantiate a set of plugin instances. The suffix "Bag" was chosen due to its assumed similarity to Symfony objects like ParameterBag, FlashBag, etc. However, "Bag" is supposed to mean that the object contains a set of variables or parameters (values), but that's not what PluginBag actually does.
PluginBag is in fact an ordered map of values or other objects. The right name for that is a Collection. Additionally, PluginBag (or PluginCollection) doesn't explain its true feature, the laziness. Therefore, LazyPluginCollection makes the most sense.