diff --git a/core/lib/Drupal/Component/Annotation/Plugin.php b/core/lib/Drupal/Component/Annotation/Plugin.php
index 751eb20..0af3010 100644
--- a/core/lib/Drupal/Component/Annotation/Plugin.php
+++ b/core/lib/Drupal/Component/Annotation/Plugin.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\Component\Annotation;
 
+use Drupal\Component\Utility\NestedArray;
+
 /**
  * Defines a Plugin annotation object.
  *
@@ -34,7 +36,13 @@ class Plugin implements AnnotationInterface {
    * classed annotations that were used.
    */
   public function __construct($values) {
-    $this->definition = $this->parse($values);
+    $reflection = new \ReflectionClass($this);
+    // Only keep actual default values by ignoring NULL values.
+    $defaults = array_filter($reflection->getDefaultProperties(), function ($value) {
+      return $value !== NULL;
+    });
+    $parsed_values = $this->parse($values);
+    $this->definition = NestedArray::mergeDeep($defaults, $parsed_values);
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Entity/Annotation/EntityType.php b/core/lib/Drupal/Core/Entity/Annotation/EntityType.php
new file mode 100644
index 0000000..8483177
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/Annotation/EntityType.php
@@ -0,0 +1,262 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Entity\Annotation\EntityType.
+ */
+
+namespace Drupal\Core\Entity\Annotation;
+
+use Drupal\Component\Annotation\Plugin;
+
+/**
+ * Defines an Entity type annotation object.
+ *
+ * @Annotation
+ */
+class EntityType extends Plugin {
+
+  /**
+   * The name of the module providing the type.
+   *
+   * @var string
+   */
+  public $module;
+
+  /**
+   * The name of the entity type class.
+   *
+   * @var string
+   */
+  public $class;
+
+  /**
+   * The name of the entity type's base table.
+   *
+   * @todo This is only used by \Drupal\Core\Entity\DatabaseStorageController.
+   *
+   * @var string
+   */
+  public $base_table;
+
+  /**
+   * The name of the class that is used to load the objects.
+   *
+   * This must implement \Drupal\Core\Entity\EntityStorageControllerInterface.
+   *
+   * @var string
+   */
+  public $controller_class = 'Drupal\Core\Entity\DatabaseStorageController';
+
+  /**
+   * Boolean indicating whether fields can be attached to entities of this type.
+   *
+   * @var bool
+   */
+  public $fieldable = FALSE;
+
+  /**
+   * Boolean indicating if the persistent cache of field data should be used.
+   *
+   * The persistent cache should usually only be disabled if a higher level
+   * persistent cache is available for the entity type. Defaults to TRUE.
+   *
+   * @var bool
+   */
+  public $field_cache = FALSE;
+
+  /**
+   * The names of classes for various form operations.
+   *
+   * An associative array where the keys are the names of the different form
+   * operations (such as 'create', 'edit', or 'delete') and the values are the
+   * names of the controller classes for those operations. The name of the
+   * operation is passed also to the form controller's constructor, so that one
+   * class can be used for multiple entity forms when the forms are similar.
+   * Defaults to Drupal\Core\Entity\EntityFormController.
+   *
+   * @var array
+   */
+  public $form_controller_class = 'Drupal\Core\Entity\EntityFormController';
+
+  /**
+   * The human-readable name of the type.
+   *
+   * @var string
+   */
+  public $label;
+
+  /**
+   * The human-readable name of the entity bundles, e.g. Vocabulary.
+   *
+   * @var string
+   */
+  public $bundle_label;
+
+  /**
+   * The name of a function that returns the label of the entity.
+   *
+   * The function takes an entity and optional langcode argument, and returns
+   * the label of the entity. If langcode is omitted, the entity's default
+   * language is used. The entity label is the main string associated with an
+   * entity; for example, the title of a node or the subject of a comment. If
+   * there is an entity object property that defines the label, use the 'label'
+   * element of the 'entity_keys' return value component to provide this
+   * information (see below). If more complex logic is needed to determine the
+   * label of an entity, you can instead specify a callback function here, which
+   * will be called to determine the entity label. See also the
+   * \Drupal\Core\Entity\EntityInterface::label() method, which implements this
+   * logic.
+   *
+   * @var string
+   */
+  public $label_callback;
+
+  /**
+   * The name of the class that provides listings of the entities.
+   *
+   * The class must implement \Drupal\Core\Entity\EntityListControllerInterface.
+   *
+   * @var string
+   */
+  public $list_controller_class = 'Drupal\Core\Entity\EntityListController';
+
+  /**
+   * The name of the class that is used to render the entities.
+   *
+   * @var string
+   */
+  public $render_controller_class;
+
+  /**
+   * The name of the class that is used for access checks.
+   *
+   * The class must implement \Drupal\Core\Entity\EntityAccessControllerInterface.
+   *
+   * @var string
+   */
+  public $access_controller_class = 'Drupal\Core\Entity\EntityAccessController';
+
+  /**
+   * The name of the translation controller class that should be used to handle the translation process.
+   *
+   * The class must implement \Drupal\translation_entity\EntityTranslationControllerInterface.
+   *
+   * @todo Interfaces from outside \Drupal\Core or \Drupal\Component should not
+   *   be used here.
+   *
+   * @var string
+   */
+  public $translation_controller_class;
+
+  /**
+   * Boolean indicating whether entities should be statically cached during a page request.
+   *
+   * @todo This is only used by \Drupal\Core\Entity\DatabaseStorageController.
+   *
+   * @var bool
+   */
+  public $static_cache = TRUE;
+
+  /**
+   * Boolean indicating whether entities of this type have mutlilingual support.
+   *
+   * @var bool
+   */
+  public $translatable = FALSE;
+
+  /**
+   * @todo translation_entity_entity_info_alter() uses this but it is undocumented.
+   *
+   * @var array
+   */
+  public $translation = array();
+
+  /**
+   * An array describing how the Field API can extract certain information from
+   * objects of this entity type:
+   * - id: The name of the property that contains the primary ID of the entity.
+   *   Every entity object passed to the Field API must have this property and
+   *   its value must be numeric.
+   * - revision: (optional) The name of the property that contains the revision
+   *   ID of the entity. The Field API assumes that all revision IDs are unique
+   *   across all entities of a type. This entry can be omitted if the entities
+   *   of this type are not versionable.
+   * - bundle: (optional) The name of the property that contains the bundle name
+   *   for the entity. The bundle name defines which set of fields are attached
+   *   to the entity (e.g. what nodes call "content type"). This entry can be
+   *   omitted if this entity type exposes a single bundle (such that all
+   *   entities have the same collection of fields). The name of this single
+   *   bundle will be the same as the entity type.
+   * - label: The name of the property that contains the entity label. For
+   *   example, if the entity's label is located in $entity->subject, then
+   *   'subject' should be specified here. If complex logic is required to build
+   *   the label, a 'label_callback' should be defined instead (see the
+   *   $label_callback block above for details).
+   * - uuid (optional): The name of the property that contains the universally
+   *   unique identifier of the entity, which is used to distinctly identify an
+   *   entity across different systems.
+   *
+   * @var array
+   */
+  public $entity_keys = array(
+    'revision' => '',
+    'bundle' => '',
+  );
+
+  /**
+   * An array describing how the Field API can extract the information it needs
+   * from the bundle objects for this type (e.g Vocabulary objects for terms;
+   * not applicable for nodes):
+   * - bundle: The name of the property that contains the name of the bundle
+   *   object.
+   *
+   * This entry can be omitted if this type's bundles do not exist as standalone
+   * objects.
+   *
+   * @var array
+   */
+  public $bundle_keys;
+
+  /**
+   * The base menu router path to which the entity admin user interface responds.
+   *
+   * It can be used to generate UI links and to attach additional router items
+   * to the entity UI in a generic fashion.
+   *
+   * @var string
+   */
+  public $menu_base_path;
+
+  /**
+   * The menu router path to be used to view the entity.
+   *
+   * @var string
+   */
+  public $menu_view_path;
+
+  /**
+   * The menu router path to be used to edit the entity.
+   *
+   * @var string
+   */
+  public $menu_edit_path;
+
+  /**
+   * A string identifying the menu loader in the router path.
+   *
+   * @var string
+   */
+  public $menu_path_wildcard;
+
+  /**
+   * Specifies whether a module exposing permissions for the current entity type
+   * should use entity-type level granularity, bundle level granularity or just
+   * skip this entity. The allowed values are respectively "entity_type",
+   * "bundle" or FALSE.
+   *
+   * @var string|bool
+   */
+  public $permission_granularity = 'entity_type';
+
+}
diff --git a/core/lib/Drupal/Core/Entity/EntityManager.php b/core/lib/Drupal/Core/Entity/EntityManager.php
index 43d0497..6adeb96 100644
--- a/core/lib/Drupal/Core/Entity/EntityManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityManager.php
@@ -19,114 +19,14 @@
 /**
  * Manages entity type plugin definitions.
  *
- * Each entity type definition array is set in the entity type plugin's
- * annotation and altered by hook_entity_info_alter(). The definition includes
- * the following keys:
- * - module: The name of the module providing the type.
- * - class: The name of the entity type class. Defaults to
- *   Drupal\Core\Entity\Entity.
- * - base_table: The name of the entity type's base table. Used by
- *   Drupal\Core\Entity\DatabaseStorageController.
- * - controller_class: The name of the class that is used to load the objects.
- *   The class must implement
- *   Drupal\Core\Entity\EntityStorageControllerInterface. Defaults to
- *   Drupal\Core\Entity\DatabaseStorageController.
- * - fieldable: (optional) Boolean indicating whether fields can be attached
- *   to entities of this type. Defaults to FALSE.
- * - field_cache: (optional) Boolean indicating whether the Field API's
- *   Field API's persistent cache of field data should be used. The persistent
- *   cache should usually only be disabled if a higher level persistent cache
- *   is available for the entity type. Defaults to TRUE.
- * - form_controller_class: (optional) An associative array where the keys
- *   are the names of the different form operations (such as 'create',
- *   'edit', or 'delete') and the values are the names of the controller
- *   classes for those operations. The name of the operation is passed also
- *   to the form controller's constructor, so that one class can be used for
- *   multiple entity forms when the forms are similar. Defaults to
- *   Drupal\Core\Entity\EntityFormController.
- * - label: The human-readable name of the type.
- * - bundle_label: The human-readable name of the entity bundles, e.g.
- *   Vocabulary.
- * - label_callback: (optional) A function taking an entity and optional
- *   langcode argument, and returning the label of the entity. If langcode is
- *   omitted, the entity's default language is used.
- *   The entity label is the main string associated with an entity; for
- *   example, the title of a node or the subject of a comment. If there is an
- *   entity object property that defines the label, use the 'label' element
- *   of the 'entity_keys' return value component to provide this information
- *   (see below). If more complex logic is needed to determine the label of
- *   an entity, you can instead specify a callback function here, which will
- *   be called to determine the entity label. See also the
- *   Drupal\Core\Entity\Entity::label() method, which implements this logic.
- * - list_controller_class: (optional) The name of the class that provides
- *   listings of the entities. The class must implement
- *   Drupal\Core\Entity\EntityListControllerInterface. Defaults to
- *   Drupal\Core\Entity\EntityListController.
- * - render_controller_class: The name of the class that is used to render the
- *   entities. Defaults to Drupal\Core\Entity\EntityRenderController.
- * - access_controller_class: The name of the class that is used for access
- *   checks. The class must implement
- *   Drupal\Core\Entity\EntityAccessControllerInterface. Defaults to
- *   Drupal\Core\Entity\EntityAccessController.
- * - translation_controller_class: (optional) The name of the translation
- *   controller class that should be used to handle the translation process.
- *   See Drupal\translation_entity\EntityTranslationControllerInterface for more
- *   information.
- * - static_cache: (optional) Boolean indicating whether entities should be
- *   statically cached during a page request. Used by
- *   Drupal\Core\Entity\DatabaseStorageController. Defaults to TRUE.
- * - translatable: (optional) Boolean indicating whether entities of this type
- *   have mutlilingual support. Defaults to FALSE.
- * - entity_keys: An array describing how the Field API can extract certain
- *   information from objects of this entity type. Elements:
- *   - id: The name of the property that contains the primary ID of the
- *     entity. Every entity object passed to the Field API must have this
- *     property and its value must be numeric.
- *   - revision: (optional) The name of the property that contains the
- *     revision ID of the entity. The Field API assumes that all revision IDs
- *     are unique across all entities of a type. This entry can be omitted if
- *     the entities of this type are not versionable.
- *   - bundle: (optional) The name of the property that contains the bundle
- *     name for the entity. The bundle name defines which set of fields are
- *     attached to the entity (e.g. what nodes call "content type"). This
- *     entry can be omitted if this entity type exposes a single bundle (such
- *     that all entities have the same collection of fields). The name of
- *     this single bundle will be the same as the entity type.
- *   - label: The name of the property that contains the entity label. For
- *     example, if the entity's label is located in $entity->subject, then
- *     'subject' should be specified here. If complex logic is required to
- *     build the label, a 'label_callback' should be defined instead (see
- *     the 'label_callback' section above for details).
- *   - uuid (optional): The name of the property that contains the universally
- *     unique identifier of the entity, which is used to distinctly identify
- *     an entity across different systems.
- * - bundle_keys: An array describing how the Field API can extract the
- *   information it needs from the bundle objects for this type (e.g
- *   Vocabulary objects for terms; not applicable for nodes). This entry can
- *   be omitted if this type's bundles do not exist as standalone objects.
- *   Elements:
- *   - bundle: The name of the property that contains the name of the bundle
- *     object.
- * - menu_base_path: (optional) The base menu router path to which the entity
- *   administration user interface responds. It can be used to generate UI
- *   links and to attach additional router items to the entity UI in a generic
- *   fashion.
- * - menu_view_path: (optional) The menu router path to be used to view the
- *   entity.
- * - menu_edit_path: (optional) The menu router path to be used to edit the
- *   entity.
- * - menu_path_wildcard: (optional) A string identifying the menu loader in the
- *   router path.
- * - permission_granularity: (optional) Specifies whether a module exposing
- *   permissions for the current entity type should use entity-type level
- *   granularity, bundle level granularity or just skip this entity. The allowed
- *   values are respectively "entity_type", "bundle" or FALSE. Defaults to
- *   "entity_type".
+ * Each entity type definition array is set in the entity type's
+ * annotation and altered by hook_entity_info_alter().
  *
  * The defaults for the plugin definition are provided in
  * \Drupal\Core\Entity\EntityManager::defaults.
  *
- * @see \Drupal\Core\Entity\Entity
+ * @see \Drupal\Core\Entity\Annotation\EntityType
+ * @see \Drupal\Core\Entity\EntityInterface
  * @see entity_get_info()
  * @see hook_entity_info_alter()
  */
@@ -140,30 +40,6 @@ class EntityManager extends PluginManagerBase {
   protected $controllers = array();
 
   /**
-   * The default values for optional keys of the entity plugin definition.
-   *
-   * @var array
-   */
-  protected $defaults = array(
-    'class' => 'Drupal\Core\Entity\Entity',
-    'controller_class' => 'Drupal\Core\Entity\DatabaseStorageController',
-    'entity_keys' => array(
-      'revision' => '',
-      'bundle' => '',
-    ),
-    'fieldable' => FALSE,
-    'field_cache' => TRUE,
-    'form_controller_class' => array(
-      'default' => 'Drupal\Core\Entity\EntityFormController',
-    ),
-    'list_controller_class' => 'Drupal\Core\Entity\EntityListController',
-    'access_controller_class' => 'Drupal\Core\Entity\EntityAccessController',
-    'static_cache' => TRUE,
-    'translation' => array(),
-    'permission_granularity' => 'entity_type',
-  );
-
-  /**
    * Constructs a new Entity plugin manager.
    *
    * @param array $namespaces
@@ -171,7 +47,10 @@ class EntityManager extends PluginManagerBase {
    */
   public function __construct(array $namespaces) {
     // Allow the plugin definition to be altered by hook_entity_info_alter().
-    $this->discovery = new AnnotatedClassDiscovery('Core', 'Entity', $namespaces);
+    $annotation_namespaces = array(
+      'Drupal\Core\Entity\Annotation' => DRUPAL_ROOT . '/core/lib',
+    );
+    $this->discovery = new AnnotatedClassDiscovery('Core', 'Entity', $namespaces, $annotation_namespaces, 'Drupal\Core\Entity\Annotation\EntityType');
     $this->discovery = new InfoHookDecorator($this->discovery, 'entity_info');
     $this->discovery = new ProcessDecorator($this->discovery, array($this, 'processDefinition'));
     $this->discovery = new AlterDecorator($this->discovery, 'entity_info');
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php
index 2c3cc20..318c741 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php
@@ -9,13 +9,13 @@
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityNG;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the aggregator feed entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "aggregator_feed",
  *   label = @Translation("Aggregator feed"),
  *   module = "aggregator",
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Item.php b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Item.php
index 4d19a75..f3fc06c 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Item.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Item.php
@@ -9,13 +9,13 @@
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityNG;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the aggregator item entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "aggregator_item",
  *   label = @Translation("Aggregator feed item"),
  *   module = "aggregator",
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php
index d0ea6ee..16ac96f 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php
@@ -9,13 +9,13 @@
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityNG;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the custom block entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "custom_block",
  *   label = @Translation("Custom Block"),
  *   bundle_label = @Translation("Custom Block type"),
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlockType.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlockType.php
index 991fbc5..dca5964 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlockType.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlockType.php
@@ -8,13 +8,13 @@
 namespace Drupal\custom_block\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the custom block type entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "custom_block_type",
  *   label = @Translation("Custom block type"),
  *   module = "custom_block",
diff --git a/core/modules/block/lib/Drupal/block/Plugin/Core/Entity/Block.php b/core/modules/block/lib/Drupal/block/Plugin/Core/Entity/Block.php
index 077a81e..2d8c638 100644
--- a/core/modules/block/lib/Drupal/block/Plugin/Core/Entity/Block.php
+++ b/core/modules/block/lib/Drupal/block/Plugin/Core/Entity/Block.php
@@ -8,14 +8,14 @@
 namespace Drupal\block\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 use Drupal\Component\Plugin\Exception\PluginException;
 
 /**
  * Defines a Block configuration entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "block",
  *   label = @Translation("Block"),
  *   module = "block",
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php
index c2dff01..57e4b61 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php
@@ -13,13 +13,13 @@
 use Drupal\breakpoint\InvalidBreakpointSourceException;
 use Drupal\breakpoint\InvalidBreakpointSourceTypeException;
 use Drupal\breakpoint\InvalidBreakpointMediaQueryException;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the Breakpoint entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "breakpoint",
  *   label = @Translation("Breakpoint"),
  *   module = "breakpoint",
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php
index 334d2cb..1b25224 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php
@@ -10,13 +10,13 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\breakpoint\InvalidBreakpointSourceException;
 use Drupal\breakpoint\InvalidBreakpointSourceTypeException;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the BreakpointGroup entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "breakpoint_group",
  *   label = @Translation("Breakpoint group"),
  *   module = "breakpoint",
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
index f6e9091..7fd53f8 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
@@ -9,13 +9,13 @@
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityNG;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the comment entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "comment",
  *   label = @Translation("Comment"),
  *   bundle_label = @Translation("Content type"),
diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigQueryTest.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigQueryTest.php
index 530868b..823840b 100644
--- a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigQueryTest.php
+++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigQueryTest.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\config_test\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the ConfigQueryTest configuration entity used by the query test.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "config_query_test",
  *   label = @Translation("Test configuration for query"),
  *   module = "config_test",
diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php
index 28b22cc..ba2e8a7 100644
--- a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php
+++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php
@@ -8,13 +8,13 @@
 namespace Drupal\config_test\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the ConfigTest configuration entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "config_test",
  *   label = @Translation("Test configuration"),
  *   module = "config_test",
diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php
index e639bea..a8afe02 100644
--- a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php
+++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php
@@ -8,13 +8,13 @@
 namespace Drupal\config_test\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the ConfigTestEmptyManifest configuration entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "config_test_empty_manifest",
  *   label = @Translation("Test empty manifest creation"),
  *   module = "config_test",
diff --git a/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php b/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php
index f01c2f5..f6afcfe 100644
--- a/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php
+++ b/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php
@@ -8,13 +8,13 @@
 namespace Drupal\contact\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the contact category entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "contact_category",
  *   label = @Translation("Contact category"),
  *   module = "contact",
diff --git a/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Message.php b/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Message.php
index 19901b2..ed67a45 100644
--- a/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Message.php
+++ b/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Message.php
@@ -7,14 +7,14 @@
 
 namespace Drupal\contact\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 use Drupal\Core\Entity\Entity;
 
 /**
  * Defines the contact message entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "contact_message",
  *   label = @Translation("Contact message"),
  *   module = "contact",
diff --git a/core/modules/editor/lib/Drupal/editor/Plugin/Core/Entity/Editor.php b/core/modules/editor/lib/Drupal/editor/Plugin/Core/Entity/Editor.php
index 22271ee..a1c2329 100644
--- a/core/modules/editor/lib/Drupal/editor/Plugin/Core/Entity/Editor.php
+++ b/core/modules/editor/lib/Drupal/editor/Plugin/Core/Entity/Editor.php
@@ -8,13 +8,13 @@
 namespace Drupal\editor\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the configured text editor entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "editor",
  *   label = @Translation("Editor"),
  *   module = "editor",
diff --git a/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php b/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php
index d88967f..757094d 100644
--- a/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php
+++ b/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php
@@ -8,14 +8,14 @@
 namespace Drupal\entity\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Configuration entity that contains display options for all components of a
  * rendered entity in a given view mode..
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_display",
  *   label = @Translation("Entity display"),
  *   module = "entity",
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleKeyTestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleKeyTestEntity.php
index 11723b8..6f6f03e 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleKeyTestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleKeyTestEntity.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\field_test\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "test_entity_bundle_key",
  *   label = @Translation("Test Entity with a bundle key"),
  *   module = "field_test",
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleTestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleTestEntity.php
index ee91584..1b39900 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleTestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleTestEntity.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\field_test\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "test_entity_bundle",
  *   label = @Translation("Test Entity with a specified bundle"),
  *   module = "field_test",
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/CacheableTestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/CacheableTestEntity.php
index 6970fa0..79e82ff 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/CacheableTestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/CacheableTestEntity.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\field_test\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "test_cacheable_entity",
  *   label = @Translation("Test Entity, cacheable"),
  *   module = "field_test",
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/TestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/TestEntity.php
index be75dc0..16f5921 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/TestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/TestEntity.php
@@ -8,13 +8,13 @@
 namespace Drupal\field_test\Plugin\Core\Entity;
 
 use Drupal\Core\Entity\Entity;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "test_entity",
  *   label = @Translation("Test Entity"),
  *   module = "field_test",
diff --git a/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php b/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
index 080c47a..9a99208 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
@@ -9,13 +9,13 @@
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the file entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "file",
  *   label = @Translation("File"),
  *   module = "file",
diff --git a/core/modules/filter/lib/Drupal/filter/Plugin/Core/Entity/FilterFormat.php b/core/modules/filter/lib/Drupal/filter/Plugin/Core/Entity/FilterFormat.php
index 13c26b5..1a0d531 100644
--- a/core/modules/filter/lib/Drupal/filter/Plugin/Core/Entity/FilterFormat.php
+++ b/core/modules/filter/lib/Drupal/filter/Plugin/Core/Entity/FilterFormat.php
@@ -8,13 +8,13 @@
 namespace Drupal\filter\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Represents a text format.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "filter_format",
  *   label = @Translation("Text format"),
  *   module = "filter",
diff --git a/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php b/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php
index 2c01d95..957c009 100644
--- a/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php
+++ b/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php
@@ -8,13 +8,13 @@
 namespace Drupal\image\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines an image style configuration entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "image_style",
  *   label = @Translation("Image style"),
  *   module = "image",
diff --git a/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/Display.php b/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/Display.php
index 95abe27..c4c199a 100644
--- a/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/Display.php
+++ b/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/Display.php
@@ -11,13 +11,13 @@
 use Drupal\layout\Config\BoundDisplayInterface;
 use Drupal\layout\Config\UnboundDisplayInterface;
 use Drupal\layout\Plugin\LayoutInterface;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the display entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "display",
  *   label = @Translation("Display"),
  *   module = "layout",
diff --git a/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/UnboundDisplay.php b/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/UnboundDisplay.php
index 712f014..cb13887 100644
--- a/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/UnboundDisplay.php
+++ b/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/UnboundDisplay.php
@@ -11,7 +11,7 @@
 use Drupal\layout\Config\BoundDisplayInterface;
 use Drupal\layout\Config\UnboundDisplayInterface;
 use Drupal\layout\Plugin\LayoutInterface;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -20,7 +20,7 @@
  * Unbound displays contain blocks that are not 'bound' to a specific layout,
  * and their contained blocks are mapped only to region types, not regions.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "unbound_display",
  *   label = @Translation("Unbound Display"),
  *   module = "layout",
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php b/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
index 0e02bce..85cca64 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
@@ -9,7 +9,7 @@
 
 use Symfony\Component\Routing\Route;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
@@ -17,7 +17,7 @@
 /**
  * Defines the menu link entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "menu_link",
  *   label = @Translation("Menu link"),
  *   module = "menu_link",
diff --git a/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php b/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
index 92ed8e8..c4d8109 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
@@ -9,13 +9,13 @@
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityNG;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the node entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "node",
  *   label = @Translation("Content"),
  *   bundle_label = @Translation("Content type"),
diff --git a/core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php b/core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php
index b65f248..2c30145 100644
--- a/core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php
+++ b/core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php
@@ -8,13 +8,13 @@
 namespace Drupal\picture\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the Picture entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "picture_mapping",
  *   label = @Translation("Picture mapping"),
  *   module = "picture",
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php b/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php
index fd72e3c..7d28544 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php
@@ -8,13 +8,13 @@
 namespace Drupal\shortcut\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the Shortcut configuration entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "shortcut",
  *   label = @Translation("Shortcut set"),
  *   module = "shortcut",
diff --git a/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php b/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php
index 4b63d9b..cfb5b7a 100644
--- a/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php
+++ b/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php
@@ -8,13 +8,13 @@
 namespace Drupal\system\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the Menu configuration entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "menu",
  *   label = @Translation("Menu"),
  *   module = "system",
diff --git a/core/modules/system/tests/modules/entity_cache_test_dependency/lib/Drupal/entity_cache_test_dependency/Plugin/Core/Entity/EntityCacheTest.php b/core/modules/system/tests/modules/entity_cache_test_dependency/lib/Drupal/entity_cache_test_dependency/Plugin/Core/Entity/EntityCacheTest.php
index 534a5f4..9026ea6 100644
--- a/core/modules/system/tests/modules/entity_cache_test_dependency/lib/Drupal/entity_cache_test_dependency/Plugin/Core/Entity/EntityCacheTest.php
+++ b/core/modules/system/tests/modules/entity_cache_test_dependency/lib/Drupal/entity_cache_test_dependency/Plugin/Core/Entity/EntityCacheTest.php
@@ -8,13 +8,13 @@
 namespace Drupal\entity_cache_test_dependency\Plugin\Core\Entity;
 
 use Drupal\Core\Entity\Entity;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the EntityCacheTest class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_cache_test",
  *   label = @Translation("Entity cache test"),
  *   module = "entity_cache_test_dependency"
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTest.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTest.php
index 0bfb73e..9db76eb 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTest.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTest.php
@@ -8,13 +8,13 @@
 namespace Drupal\entity_test\Plugin\Core\Entity;
 
 use Drupal\Core\Entity\EntityNG;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_test",
  *   label = @Translation("Test entity"),
  *   module = "entity_test",
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestDefaultAccess.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestDefaultAccess.php
index ef50be9..7ca3c68 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestDefaultAccess.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestDefaultAccess.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\entity_test\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines a test entity class with no access controller.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_test_default_access",
  *   label = @Translation("Test entity with default access"),
  *   module = "entity_test",
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestLabel.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestLabel.php
index bcc3170..43f0605 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestLabel.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestLabel.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\entity_test\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_test_label",
  *   label = @Translation("Entity Test label"),
  *   module = "entity_test",
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestLabelCallback.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestLabelCallback.php
index e49ba88..469bcb6 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestLabelCallback.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestLabelCallback.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\entity_test\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_test_label_callback",
  *   label = @Translation("Entity test label callback"),
  *   module = "entity_test",
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestMul.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestMul.php
index 4de550b..4448d17 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestMul.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestMul.php
@@ -8,13 +8,13 @@
 namespace Drupal\entity_test\Plugin\Core\Entity;
 
 use Drupal\entity_test\Plugin\Core\Entity\EntityTest;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_test_mul",
  *   label = @Translation("Test entity - data table"),
  *   module = "entity_test",
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestMulRev.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestMulRev.php
index 632ada7..342de3e 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestMulRev.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestMulRev.php
@@ -8,13 +8,13 @@
 namespace Drupal\entity_test\Plugin\Core\Entity;
 
 use Drupal\entity_test\Plugin\Core\Entity\EntityTestRev;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_test_mulrev",
  *   label = @Translation("Test entity - revisions and data table"),
  *   module = "entity_test",
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestNoLabel.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestNoLabel.php
index 9dfea73..bb13b06 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestNoLabel.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestNoLabel.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\entity_test\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_test_no_label",
  *   label = @Translation("Entity Test without label"),
  *   module = "entity_test",
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestRender.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestRender.php
index 29b42d1..64bcb6f 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestRender.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestRender.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\entity_test\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines a test entity class with a render controller.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_test_render",
  *   label = @Translation("Test render entity"),
  *   module = "entity_test",
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestRev.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestRev.php
index 1afc669..0632e2a 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestRev.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTestRev.php
@@ -8,13 +8,13 @@
 namespace Drupal\entity_test\Plugin\Core\Entity;
 
 use Drupal\entity_test\Plugin\Core\Entity\EntityTest;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the test entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "entity_test_rev",
  *   label = @Translation("Test entity - revisions"),
  *   module = "entity_test",
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
index affe712..07f2a81 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
@@ -9,13 +9,13 @@
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the taxonomy term entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "taxonomy_term",
  *   label = @Translation("Taxonomy term"),
  *   bundle_label = @Translation("Vocabulary"),
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php
index c125418..c9ede6a 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php
@@ -8,13 +8,13 @@
 namespace Drupal\taxonomy\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the taxonomy vocabulary entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "taxonomy_vocabulary",
  *   label = @Translation("Taxonomy vocabulary"),
  *   module = "taxonomy",
diff --git a/core/modules/tour/lib/Drupal/tour/Plugin/Core/Entity/Tour.php b/core/modules/tour/lib/Drupal/tour/Plugin/Core/Entity/Tour.php
index b26f9b8..1f83011 100644
--- a/core/modules/tour/lib/Drupal/tour/Plugin/Core/Entity/Tour.php
+++ b/core/modules/tour/lib/Drupal/tour/Plugin/Core/Entity/Tour.php
@@ -8,14 +8,14 @@
 namespace Drupal\tour\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 use Drupal\tour\TipsBag;
 
 /**
  * Defines the configured tour entity.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "tour",
  *   label = @Translation("Tour"),
  *   module = "tour",
diff --git a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php
index f64955c..ed75a43 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php
@@ -7,14 +7,14 @@
 
 namespace Drupal\user\Plugin\Core\Entity;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 
 /**
  * Defines the user role entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "user_role",
  *   label = @Translation("Role"),
  *   module = "user",
diff --git a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
index fb7cbbb..5b167f4 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
@@ -8,13 +8,13 @@
 namespace Drupal\user\Plugin\Core\Entity;
 
 use Drupal\Core\Entity\Entity;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines the user entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "user",
  *   label = @Translation("User"),
  *   module = "user",
diff --git a/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php b/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php
index 924cfa5..8fface7 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php
@@ -12,13 +12,13 @@
 use Drupal\views_ui\ViewUI;
 use Drupal\views\ViewStorageInterface;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Entity\Annotation\EntityType;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines a View configuration entity class.
  *
- * @Plugin(
+ * @EntityType(
  *   id = "view",
  *   label = @Translation("View"),
  *   module = "views",
