diff --git a/core/lib/Drupal/Component/Annotation/PluginID.php b/core/lib/Drupal/Component/Annotation/PluginID.php
deleted file mode 100644
index dcb27aa..0000000
--- a/core/lib/Drupal/Component/Annotation/PluginID.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains Drupal\Component\Annotation\PluginID.
- */
-
-namespace Drupal\Component\Annotation;
-
-/**
- * Defines a Plugin annotation object that just contains an ID.
- *
- * @Annotation
- */
-class PluginID implements AnnotationInterface {
-
-  /**
-   * The plugin ID.
-   *
-   * When an annotation is given no key, 'value' is assumed by Doctrine.
-   *
-   * @var string
-   */
-  public $value;
-
-  /**
-   * Implements \Drupal\Core\Annotation\AnnotationInterface::get().
-   */
-  public function get() {
-    return array(
-      'id' => $this->value,
-    );
-  }
-
-}
diff --git a/core/modules/action/lib/Drupal/action/Plugin/views/field/BulkForm.php b/core/modules/action/lib/Drupal/action/Plugin/views/field/BulkForm.php
index 83f93b9..a3329f7 100644
--- a/core/modules/action/lib/Drupal/action/Plugin/views/field/BulkForm.php
+++ b/core/modules/action/lib/Drupal/action/Plugin/views/field/BulkForm.php
@@ -7,13 +7,16 @@
 
 namespace Drupal\action\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\system\Plugin\views\field\BulkFormBase;
 
 /**
  * Defines a actions-based bulk operation form element.
  *
- * @PluginID("action_bulk_form")
+ * @Plugin(
+ *   id = "action_bulk_form",
+ *   module = "action"
+ * )
  */
 class BulkForm extends BulkFormBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/argument/UserUid.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/argument/UserUid.php
index e4fe764..b97f15e 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/argument/UserUid.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/argument/UserUid.php
@@ -8,7 +8,7 @@
 namespace Drupal\comment\Plugin\views\argument;
 
 use Drupal\views\Plugin\views\argument\ArgumentPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler to accept a user id to check for nodes that
@@ -16,7 +16,10 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("argument_comment_user_uid")
+ * @Plugin(
+ *   id = "argument_comment_user_uid",
+ *   module = "comment"
+ * )
  */
 class UserUid extends ArgumentPluginBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Comment.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Comment.php
index eda9ca4..d940336 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Comment.php
@@ -10,14 +10,17 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to allow linking to a comment.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment")
+ * @Plugin(
+ *   id = "comment",
+ *   module = "comment"
+ * )
  */
 class Comment extends FieldPluginBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Depth.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Depth.php
index 5bb7405..f90a028 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Depth.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Depth.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\comment\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_depth")
+ * @Plugin(
+ *   id = "comment_depth",
+ *   module = "comment"
+ * )
  */
 class Depth extends FieldPluginBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LastTimestamp.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LastTimestamp.php
index 35cbfec..ce7d03c 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LastTimestamp.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LastTimestamp.php
@@ -10,14 +10,17 @@
 use Drupal\views\Plugin\views\field\Date;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to display the timestamp of a comment with the count of comments.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_last_timestamp")
+ * @Plugin(
+ *   id = "comment_last_timestamp",
+ *   module = "comment"
+ * )
  */
 class LastTimestamp extends Date {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Link.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Link.php
index d9cd672..d2a4d0d 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Link.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Link.php
@@ -8,14 +8,17 @@
 namespace Drupal\comment\Plugin\views\field;
 
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Base field handler to present a link.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_link")
+ * @Plugin(
+ *   id = "comment_link",
+ *   module = "comment"
+ * )
  */
 class Link extends FieldPluginBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkApprove.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkApprove.php
index d546946..e538e06 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkApprove.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkApprove.php
@@ -7,14 +7,17 @@
 
 namespace Drupal\comment\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Provides a comment approve link.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_link_approve")
+ * @Plugin(
+ *   id = "comment_link_approve",
+ *   module = "comment"
+ * )
  */
 class LinkApprove extends Link {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkDelete.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkDelete.php
index 38b79da..7851d9d 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkDelete.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkDelete.php
@@ -7,14 +7,17 @@
 
 namespace Drupal\comment\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link to delete a node.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_link_delete")
+ * @Plugin(
+ *   id = "comment_link_delete",
+ *   module = "comment"
+ * )
  */
 class LinkDelete extends Link {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkEdit.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkEdit.php
index b0df349..c3407e4 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkEdit.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkEdit.php
@@ -7,14 +7,17 @@
 
 namespace Drupal\comment\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link node edit.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_link_edit")
+ * @Plugin(
+ *   id = "comment_link_edit",
+ *   module = "comment"
+ * )
  */
 class LinkEdit extends Link {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkReply.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkReply.php
index 2167c6b..400748d 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkReply.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/LinkReply.php
@@ -7,14 +7,17 @@
 
 namespace Drupal\comment\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link to delete a node.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_link_reply")
+ * @Plugin(
+ *   id = "comment_link_reply",
+ *   module = "comment"
+ * )
  */
 class LinkReply extends Link {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NcsLastCommentName.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NcsLastCommentName.php
index db5bba9..e30b7ca 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NcsLastCommentName.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NcsLastCommentName.php
@@ -8,14 +8,17 @@
 namespace Drupal\comment\Plugin\views\field;
 
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present the name of the last comment poster.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_ncs_last_comment_name")
+ * @Plugin(
+ *   id = "comment_ncs_last_comment_name",
+ *   module = "comment"
+ * )
  */
 class NcsLastCommentName extends FieldPluginBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NcsLastUpdated.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NcsLastUpdated.php
index 4c20cb3..dd85608 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NcsLastUpdated.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NcsLastUpdated.php
@@ -8,14 +8,17 @@
 namespace Drupal\comment\Plugin\views\field;
 
 use Drupal\views\Plugin\views\field\Date;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to display the newer of last comment / node updated.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_ncs_last_updated")
+ * @Plugin(
+ *   id = "comment_ncs_last_updated",
+ *   module = "comment"
+ * )
  */
 class NcsLastUpdated extends Date {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeComment.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeComment.php
index de113f0..a88a3cf 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeComment.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeComment.php
@@ -8,14 +8,17 @@
 namespace Drupal\comment\Plugin\views\field;
 
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Display node comment status.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_comment")
+ * @Plugin(
+ *   id = "node_comment",
+ *   module = "comment"
+ * )
  */
 class NodeComment extends FieldPluginBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeLink.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeLink.php
index fdfe8d9..b991cc9 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeLink.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeLink.php
@@ -8,14 +8,17 @@
 namespace Drupal\comment\Plugin\views\field;
 
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Handler for showing comment module's node link.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_node_link")
+ * @Plugin(
+ *   id = "comment_node_link",
+ *   module = "comment"
+ * )
  */
 class NodeLink extends FieldPluginBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeNewComments.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeNewComments.php
index 3f3f903..0678775 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeNewComments.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeNewComments.php
@@ -10,14 +10,17 @@
 use Drupal\views\Plugin\views\field\Numeric;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to display the number of new comments.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_new_comments")
+ * @Plugin(
+ *   id = "node_new_comments",
+ *   module = "comment"
+ * )
  */
 class NodeNewComments extends Numeric {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Username.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Username.php
index 05ceb8f..4509de3 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Username.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/Username.php
@@ -10,14 +10,17 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to allow linking to a user account or homepage.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("comment_username")
+ * @Plugin(
+ *   id = "comment_username",
+ *   module = "comment"
+ * )
  */
 class Username extends FieldPluginBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/NcsLastUpdated.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/NcsLastUpdated.php
index 7562c94..bd0d70a 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/NcsLastUpdated.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/NcsLastUpdated.php
@@ -8,14 +8,17 @@
 namespace Drupal\comment\Plugin\views\filter;
 
 use Drupal\views\Plugin\views\filter\Date;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter handler for the newer of last comment / node updated.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("ncs_last_updated")
+ * @Plugin(
+ *   id = "ncs_last_updated",
+ *   module = "comment"
+ * )
  */
 class NcsLastUpdated extends Date {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/NodeComment.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/NodeComment.php
index e49c116..30a0a7a 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/NodeComment.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/NodeComment.php
@@ -8,14 +8,17 @@
 namespace Drupal\comment\Plugin\views\filter;
 
 use Drupal\views\Plugin\views\filter\InOperator;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter based on comment node status.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("node_comment")
+ * @Plugin(
+ *   id = "node_comment",
+ *   module = "comment"
+ * )
  */
 class NodeComment extends InOperator {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/UserUid.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/UserUid.php
index b1c83f8..b56cd38 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/UserUid.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/filter/UserUid.php
@@ -8,7 +8,7 @@
 namespace Drupal\comment\Plugin\views\filter;
 
 use Drupal\views\Plugin\views\filter\FilterPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter handler to accept a user id to check for nodes that user posted or
@@ -16,7 +16,10 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("comment_user_uid")
+ * @Plugin(
+ *   id = "comment_user_uid",
+ *   module = "comment"
+ * )
  */
 class UserUid extends FilterPluginBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/NcsLastCommentName.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/NcsLastCommentName.php
index 9e2c70e..c7021b9 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/NcsLastCommentName.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/NcsLastCommentName.php
@@ -8,7 +8,7 @@
 namespace Drupal\comment\Plugin\views\sort;
 
 use Drupal\views\Plugin\views\sort\SortPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Sort handler to sort by last comment name which might be in 2 different
@@ -16,7 +16,10 @@
  *
  * @ingroup views_sort_handlers
  *
- * @PluginID("comment_ncs_last_comment_name")
+ * @Plugin(
+ *   id = "comment_ncs_last_comment_name",
+ *   module = "comment"
+ * )
  */
 class NcsLastCommentName extends SortPluginBase {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/NcsLastUpdated.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/NcsLastUpdated.php
index dfef21a..3af22a9 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/NcsLastUpdated.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/NcsLastUpdated.php
@@ -8,14 +8,17 @@
 namespace Drupal\comment\Plugin\views\sort;
 
 use Drupal\views\Plugin\views\sort\Date;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Sort handler for the newer of last comment / node updated.
  *
  * @ingroup views_sort_handlers
  *
- * @PluginID("ncs_last_updated")
+ * @Plugin(
+ *   id = "ncs_last_updated",
+ *   module = "comment"
+ * )
  */
 class NcsLastUpdated extends Date {
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/Thread.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/Thread.php
index 1c0d1c5..8d28815 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/Thread.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/sort/Thread.php
@@ -8,14 +8,17 @@
 namespace Drupal\comment\Plugin\views\sort;
 
 use Drupal\views\Plugin\views\sort\SortPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Sort handler for ordering by thread.
  *
  * @ingroup views_sort_handlers
  *
- * @PluginID("comment_thread")
+ * @Plugin(
+ *   id = "comment_thread",
+ *   module = "comment"
+ * )
  */
 class Thread extends SortPluginBase {
 
diff --git a/core/modules/contextual/lib/Drupal/contextual/Plugin/views/field/ContextualLinks.php b/core/modules/contextual/lib/Drupal/contextual/Plugin/views/field/ContextualLinks.php
index 86aa796..5ef7df0 100644
--- a/core/modules/contextual/lib/Drupal/contextual/Plugin/views/field/ContextualLinks.php
+++ b/core/modules/contextual/lib/Drupal/contextual/Plugin/views/field/ContextualLinks.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\contextual\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("contextual_links")
+ * @Plugin(
+ *   id = "contextual_links",
+ *   module = "contextual"
+ * )
  */
 class ContextualLinks extends FieldPluginBase {
 
diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index 8e16741..2ea9238 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -455,14 +455,6 @@ function field_entity_field_info($entity_type) {
 }
 
 /**
- * Implements hook_field_widget_info_alter().
- */
-function field_field_widget_info_alter(&$info) {
-  // Add the Hidden widget to all field types.
-  $info['hidden']['field_types'] = array_keys(field_info_field_types());
-}
-
-/**
  * Applies language fallback rules to the fields attached to the given entity.
  *
  * Core language fallback rules simply check if fields have a field translation
diff --git a/core/modules/field/lib/Drupal/field/Plugin/Type/LegacyDiscoveryDecorator.php b/core/modules/field/lib/Drupal/field/Plugin/Type/LegacyDiscoveryDecorator.php
index 1f94d7c..43aad82 100644
--- a/core/modules/field/lib/Drupal/field/Plugin/Type/LegacyDiscoveryDecorator.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Type/LegacyDiscoveryDecorator.php
@@ -67,9 +67,6 @@ public function getDefinitions() {
           unset($definition['behaviors']['default value']);
         }
 
-        // Legacy widgets also need a plugin id.
-        $definition['id'] = $plugin_id;
-
         $definitions[$plugin_id] = $definition;
       }
     }
diff --git a/core/modules/field/lib/Drupal/field/Plugin/field/widget/HiddenWidget.php b/core/modules/field/lib/Drupal/field/Plugin/field/widget/HiddenWidget.php
deleted file mode 100644
index d2ff3cb..0000000
--- a/core/modules/field/lib/Drupal/field/Plugin/field/widget/HiddenWidget.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\field\Plugin\field\widget\HiddenWidget.
- */
-
-namespace Drupal\field\Plugin\field\widget;
-
-use Drupal\Component\Annotation\Plugin;
-use Drupal\Core\Annotation\Translation;
-use Drupal\field\Plugin\Type\Widget\WidgetBase;
-
-/**
- * Plugin implementation of the 'Hidden' widget.
- *
- * @Plugin(
- *   id = "hidden",
- *   module = "field",
- *   label = @Translation("- Hidden -"),
- *   multiple_values = TRUE,
- *   weight = 50
- * )
- */
-class HiddenWidget extends WidgetBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function formElement(array $items, $delta, array $element, $langcode, array &$form, array &$form_state) {
-    // The purpose of this widget is to be hidden, so nothing to do here.
-    return array();
-  }
-}
diff --git a/core/modules/field/lib/Drupal/field/Plugin/views/argument/FieldList.php b/core/modules/field/lib/Drupal/field/Plugin/views/argument/FieldList.php
index 2176c91..9409689 100644
--- a/core/modules/field/lib/Drupal/field/Plugin/views/argument/FieldList.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/views/argument/FieldList.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\argument\Numeric;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for list field to show the human readable name in the
@@ -18,7 +18,10 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("field_list")
+ * @Plugin(
+ *   id = "field_list",
+ *   module = "field"
+ * )
  */
 class FieldList extends Numeric {
 
diff --git a/core/modules/field/lib/Drupal/field/Plugin/views/argument/ListString.php b/core/modules/field/lib/Drupal/field/Plugin/views/argument/ListString.php
index ada688f..daeb8ac 100644
--- a/core/modules/field/lib/Drupal/field/Plugin/views/argument/ListString.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/views/argument/ListString.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\argument\String;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for list field to show the human readable name in the
@@ -18,7 +18,10 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("field_list_string")
+ * @Plugin(
+ *   id = "field_list_string",
+ *   module = "field"
+ * )
  */
 class ListString extends String {
 
diff --git a/core/modules/field/lib/Drupal/field/Plugin/views/field/Field.php b/core/modules/field/lib/Drupal/field/Plugin/views/field/Field.php
index 4aff8f1..c73260f 100644
--- a/core/modules/field/lib/Drupal/field/Plugin/views/field/Field.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/views/field/Field.php
@@ -11,7 +11,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Views;
 
 /**
@@ -19,7 +19,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("field")
+ * @Plugin(
+ *   id = "field",
+ *   module = "field"
+ * )
  */
 class Field extends FieldPluginBase {
 
diff --git a/core/modules/field/lib/Drupal/field/Plugin/views/filter/FieldList.php b/core/modules/field/lib/Drupal/field/Plugin/views/filter/FieldList.php
index 17e143b..8ef220c 100644
--- a/core/modules/field/lib/Drupal/field/Plugin/views/filter/FieldList.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/views/filter/FieldList.php
@@ -8,14 +8,17 @@
 namespace Drupal\field\Plugin\views\filter;
 
 use Drupal\views\Plugin\views\filter\ManyToOne;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter handler which uses list-fields as options.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("field_list")
+ * @Plugin(
+ *   id = "field_list",
+ *   module = "field"
+ * )
  */
 class FieldList extends ManyToOne {
 
diff --git a/core/modules/field/lib/Drupal/field/Plugin/views/relationship/EntityReverse.php b/core/modules/field/lib/Drupal/field/Plugin/views/relationship/EntityReverse.php
index 6ae2118..e008c88 100644
--- a/core/modules/field/lib/Drupal/field/Plugin/views/relationship/EntityReverse.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/views/relationship/EntityReverse.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\relationship\RelationshipPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Views;
 
 /**
@@ -18,7 +18,10 @@
  *
  * @ingroup views_relationship_handlers
  *
- * @PluginID("entity_reverse")
+ * @Plugin(
+ *   id = "entity_reverse",
+ *   module = "field"
+ * )
  */
 class EntityReverse extends RelationshipPluginBase  {
 
diff --git a/core/modules/field/lib/Drupal/field/Tests/FormTest.php b/core/modules/field/lib/Drupal/field/Tests/FormTest.php
index b0a830d..fcda223 100644
--- a/core/modules/field/lib/Drupal/field/Tests/FormTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/FormTest.php
@@ -577,63 +577,4 @@ function testNestedFieldForm() {
     $this->assertFieldValues($entity_1, 'field_unlimited', LANGUAGE_NOT_SPECIFIED, array(3, 2));
     $this->assertFieldValues($entity_2, 'field_unlimited', LANGUAGE_NOT_SPECIFIED, array(13, 14, 15));
   }
-
-  /**
-   * Tests the Hidden widget.
-   */
-  function testFieldFormHiddenWidget() {
-    $this->field = $this->field_single;
-    $this->field_name = $this->field['field_name'];
-    $this->instance['field_name'] = $this->field_name;
-    $this->instance['widget']['type'] = 'hidden';
-    $this->instance['default_value'] = array(0 => array('value' => 99));
-    field_create_field($this->field);
-    field_create_instance($this->instance);
-    $langcode = LANGUAGE_NOT_SPECIFIED;
-
-    // Display the entity creation form.
-    $this->drupalGet('test-entity/add/test_bundle');
-
-    // Create an entity and test that the default value is assigned correctly to
-    // the field that uses the hidden widget.
-    $this->assertNoField("{$this->field_name}[$langcode][0][value]", 'The hidden widget is not displayed');
-    $this->drupalPost(NULL, array(), t('Save'));
-    preg_match('|test-entity/manage/(\d+)/edit|', $this->url, $match);
-    $id = $match[1];
-    $this->assertRaw(t('test_entity @id has been created.', array('@id' => $id)), 'Entity was created');
-    $entity = field_test_entity_test_load($id);
-    $this->assertEqual($entity->{$this->field_name}[$langcode][0]['value'], 99, 'Default value was saved');
-
-    // Update the instance to remove the default value and switch to the
-    // default widget.
-    $this->instance['default_value'] = NULL;
-    $this->instance['widget']['type'] = 'test_field_widget';
-    field_update_instance($this->instance);
-
-    // Display edit form.
-    $this->drupalGet('test-entity/manage/' . $id . '/edit');
-    $this->assertFieldByName("{$this->field_name}[$langcode][0][value]", 99, 'Widget is displayed with the correct default value');
-
-    // Update the entity.
-    $value = mt_rand(1, 127);
-    $edit = array("{$this->field_name}[$langcode][0][value]" => $value);
-    $this->drupalPost(NULL, $edit, t('Save'));
-    $this->assertRaw(t('test_entity @id has been updated.', array('@id' => $id)), 'Entity was updated');
-    entity_get_controller('test_entity')->resetCache(array($id));
-    $entity = field_test_entity_test_load($id);
-    $this->assertEqual($entity->{$this->field_name}[$langcode][0]['value'], $value, 'Field value was updated');
-
-    // Update the instance and switch to the Hidden widget again.
-    $this->instance['widget']['type'] = 'hidden';
-    field_update_instance($this->instance);
-
-    // Create a new revision.
-    $edit = array('revision' => TRUE);
-    $this->drupalPost('test-entity/manage/' . $id . '/edit', $edit, t('Save'));
-
-    // Check that the expected value has been carried over to the new revision.
-    entity_get_controller('test_entity')->resetCache(array($id));
-    $entity = field_test_entity_test_load($id);
-    $this->assertEqual($entity->{$this->field_name}[$langcode][0]['value'], $value, 'New revision has the expected value for the field with the Hidden widget');
-  }
 }
diff --git a/core/modules/field_ui/field_ui.admin.inc b/core/modules/field_ui/field_ui.admin.inc
index d58cc60..31b4c39 100644
--- a/core/modules/field_ui/field_ui.admin.inc
+++ b/core/modules/field_ui/field_ui.admin.inc
@@ -691,10 +691,6 @@ function field_ui_widget_type_form_submit($form, &$form_state) {
   try {
     field_update_instance($instance);
     drupal_set_message(t('Changed the widget for field %label.', array('%label' => $instance['label'])));
-
-    if ($instance['required'] && empty($instance['default_value']) && empty($instance['default_value_function']) && $instance['widget']['type'] == 'field_hidden') {
-      drupal_set_message(t('Field %label is required and uses the "hidden" widget. You might want to configure a default value.', array('%label' => $instance['label'])), 'warning');
-    }
   }
   catch (Exception $e) {
     drupal_set_message(t('There was a problem changing the widget for field %label.', array('%label' => $instance['label'])), 'error');
@@ -938,19 +934,6 @@ function field_ui_default_value_widget($field, $instance, &$form, &$form_state)
   $instance['required'] = FALSE;
   $instance['description'] = '';
 
-  // Adjust the instance definition to use the default widget of this field type
-  // instead of the hidden widget.
-  if ($instance['widget']['type'] == 'field_hidden') {
-    $field_type = field_info_field_types($field['type']);
-    $default_widget = field_info_widget_types($field_type['default_widget']);
-
-    $instance['widget'] = array(
-      'type' => $default_widget['id'],
-      'settings' => $default_widget['settings'],
-      'weight' => 0,
-    );
-  }
-
   // Insert the widget. Since we do not use the "official" instance definition,
   // the whole flow cannot use field_invoke_method().
   $items = (array) $instance['default_value'];
@@ -1030,10 +1013,6 @@ function field_ui_field_edit_form_submit($form, &$form_state) {
 
   drupal_set_message(t('Saved %label configuration.', array('%label' => $instance['label'])));
 
-  if ($instance['required'] && empty($instance['default_value']) && empty($instance['default_value_function']) && $instance['widget']['type'] == 'field_hidden') {
-    drupal_set_message(t('Field %label is required and uses the "hidden" widget. You might want to configure a default value.', array('%label' => $instance['label'])), 'warning');
-  }
-
   $form_state['redirect'] = field_ui_next_destination($instance['entity_type'], $instance['bundle']);
 }
 
diff --git a/core/modules/file/lib/Drupal/file/Plugin/views/argument/Fid.php b/core/modules/file/lib/Drupal/file/Plugin/views/argument/Fid.php
index d0fb508..886bf33 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/views/argument/Fid.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/views/argument/Fid.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\file\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\argument\Numeric;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("file_fid")
+ * @Plugin(
+ *   id = "file_fid",
+ *   module = "file"
+ * )
  */
 class Fid extends Numeric {
 
diff --git a/core/modules/file/lib/Drupal/file/Plugin/views/field/Extension.php b/core/modules/file/lib/Drupal/file/Plugin/views/field/Extension.php
index 376793f..65a0f9c 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/views/field/Extension.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/views/field/Extension.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\file\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("file_extension")
+ * @Plugin(
+ *   id = "file_extension",
+ *   module = "file"
+ * )
  */
 class Extension extends FieldPluginBase {
 
diff --git a/core/modules/file/lib/Drupal/file/Plugin/views/field/File.php b/core/modules/file/lib/Drupal/file/Plugin/views/field/File.php
index a64e857..2bd7a27 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/views/field/File.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/views/field/File.php
@@ -9,7 +9,7 @@
 
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 
 /**
@@ -17,7 +17,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("file")
+ * @Plugin(
+ *   id = "file",
+ *   module = "file"
+ * )
  */
 class File extends FieldPluginBase {
 
diff --git a/core/modules/file/lib/Drupal/file/Plugin/views/field/FileMime.php b/core/modules/file/lib/Drupal/file/Plugin/views/field/FileMime.php
index a63c2d6..fd424c9 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/views/field/FileMime.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/views/field/FileMime.php
@@ -7,14 +7,17 @@
 
 namespace Drupal\file\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to add rendering MIME type images as an option on the filemime field.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("file_filemime")
+ * @Plugin(
+ *   id = "file_filemime",
+ *   module = "file"
+ * )
  */
 class FileMime extends File {
 
diff --git a/core/modules/file/lib/Drupal/file/Plugin/views/field/Status.php b/core/modules/file/lib/Drupal/file/Plugin/views/field/Status.php
index 883602d..56ba1df 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/views/field/Status.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/views/field/Status.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\file\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("file_status")
+ * @Plugin(
+ *   id = "file_status",
+ *   module = "file"
+ * )
  */
 class Status extends FieldPluginBase {
 
diff --git a/core/modules/file/lib/Drupal/file/Plugin/views/field/Uri.php b/core/modules/file/lib/Drupal/file/Plugin/views/field/Uri.php
index 4e5eb5f..91e7116 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/views/field/Uri.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/views/field/Uri.php
@@ -7,12 +7,15 @@
 
 namespace Drupal\file\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to add rendering file paths as file URLs instead of as internal file URIs.
  *
- * @PluginID("file_uri")
+ * @Plugin(
+ *   id = "file_uri",
+ *   module = "file"
+ * )
  */
 class Uri extends File {
 
diff --git a/core/modules/file/lib/Drupal/file/Plugin/views/filter/Status.php b/core/modules/file/lib/Drupal/file/Plugin/views/filter/Status.php
index 20439fe..b6c7867 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/views/filter/Status.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/views/filter/Status.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\file\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\filter\InOperator;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("file_status")
+ * @Plugin(
+ *   id = "file_status",
+ *   module = "file"
+ * )
  */
 class Status extends InOperator {
 
diff --git a/core/modules/forum/forum.views.inc b/core/modules/forum/forum.views.inc
deleted file mode 100644
index fb79907..0000000
--- a/core/modules/forum/forum.views.inc
+++ /dev/null
@@ -1,159 +0,0 @@
-<?php
-
-/**
- * @file
- * Provide views data and handlers for forum.module.
- *
- * @ingroup views_module_handlers
- */
-
-/**
- * Implements hook_views_data().
- */
-function forum_views_data() {
-
-  $data['forum_index']['table']['group'] = t('Forum');
-  $data['forum_index']['table']['base'] = array(
-    'field' => 'nid',
-    'title' => t('Forum content'),
-    'access query tag' => 'node_access',
-  );
-
-  $data['forum_index']['nid'] = array(
-    'title' => t('Nid'),
-    'help' => t('The content ID of the forum index entry.'),
-    'field' => array(
-      'id' => 'numeric',
-    ),
-    'filter' => array(
-      'id' => 'numeric',
-    ),
-    'argument' => array(
-      'id' => 'numeric',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-    'relationship' => array(
-      'base' => 'node',
-      'base field' => 'nid',
-      'label' => t('Node'),
-    ),
-  );
-
-  $data['forum_index']['title'] = array(
-    'title' => t('Title'),
-    'help' => t('The content title.'),
-    'field' => array(
-      'id' => 'standard',
-      'link_to_node default' => TRUE,
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-  );
-
-  $data['forum_index']['tid'] = array(
-    'title' => t('Has taxonomy term ID'),
-    'help' => t('Display content if it has the selected taxonomy terms.'),
-    'argument' => array(
-      'id' => 'taxonomy_index_tid',
-      'name table' => 'taxonomy_term_data',
-      'name field' => 'name',
-      'empty field name' => t('Uncategorized'),
-      'numeric' => TRUE,
-      'skip base' => 'taxonomy_term_data',
-    ),
-    'field' => array(
-      'id' => 'numeric',
-    ),
-    'filter' => array(
-      'title' => t('Has taxonomy term'),
-      'id' => 'taxonomy_index_tid',
-      'hierarchy table' => 'taxonomy_term_hierarchy',
-      'numeric' => TRUE,
-      'skip base' => 'taxonomy_term_data',
-      'allow empty' => TRUE,
-    ),
-    'relationship' => array(
-      'base' => 'taxonomy_term',
-      'base field' => 'tid',
-      'label' => t('Term'),
-    ),
-  );
-
-
-  $data['forum_index']['created'] = array(
-    'title' => t('Post date'),
-    'help' => t('The date the content was posted.'),
-    'field' => array(
-      'id' => 'date',
-    ),
-    'sort' => array(
-      'id' => 'date'
-    ),
-    'filter' => array(
-      'id' => 'date',
-    ),
-  );
-
-  $data['forum_index']['sticky'] = array(
-    'title' => t('Sticky'),
-    'help' => t('Whether or not the content is sticky.'),
-    'field' => array(
-      'id' => 'boolean',
-      'click sortable' => TRUE,
-      'output formats' => array(
-        'sticky' => array(t('Sticky'), t('Not sticky')),
-      ),
-    ),
-    'filter' => array(
-      'id' => 'boolean',
-      'label' => t('Sticky'),
-      'type' => 'yes-no',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-      'help' => t('Whether or not the content is sticky. To list sticky content first, set this to descending.'),
-    ),
-  );
-
-  $data['forum_index']['last_comment_timestamp'] = array(
-    'title' => t('Last comment time'),
-    'help' => t('Date and time of when the last comment was posted.'),
-    'field' => array(
-      'id' => 'comment_last_timestamp',
-    ),
-    'sort' => array(
-      'id' => 'date',
-    ),
-    'filter' => array(
-      'id' => 'date',
-    ),
-  );
-
-  $data['forum_index']['comment_count'] = array(
-    'title' => t('Comment count'),
-    'help' => t('The number of comments a node has.'),
-    'field' => array(
-      'id' => 'numeric',
-    ),
-    'filter' => array(
-      'id' => 'numeric',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-    'argument' => array(
-      'id' => 'standard',
-    ),
-  );
-
-  return $data;
-}
diff --git a/core/modules/forum/lib/Drupal/forum/Tests/Views/ForumIntegrationTest.php b/core/modules/forum/lib/Drupal/forum/Tests/Views/ForumIntegrationTest.php
deleted file mode 100644
index cfcdfa2..0000000
--- a/core/modules/forum/lib/Drupal/forum/Tests/Views/ForumIntegrationTest.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\forum\Tests\Views\ForumIntegrationTest.
- */
-
-namespace Drupal\forum\Tests\Views;
-
-use Drupal\views\Tests\ViewTestBase;
-use Drupal\views\Tests\ViewTestData;
-
-/**
- * Tests the forum integration into views.
- */
-class ForumIntegrationTest extends ViewTestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = array('forum_test_views');
-
-  /**
-   * Views used by this test.
-   *
-   * @var array
-   */
-  public static $testViews = array('test_forum_index');
-
-  public static function getInfo() {
-    return array(
-      'name' => 'Forum: Views data',
-      'description' => 'Tests the forum integration into views.',
-      'group' => 'Views module integration',
-    );
-  }
-
-  protected function setUp() {
-    parent::setUp();
-
-    ViewTestData::importTestViews(get_class($this), array('forum_test_views'));
-  }
-
-
-  /**
-   * Tests the integration.
-   */
-  public function testForumIntegration() {
-    // Create a forum.
-    $entity_manager = $this->container->get('plugin.manager.entity');
-    $term = $entity_manager->getStorageController('taxonomy_term')->create(array('vid' => 'forums'));
-    $term->save();
-
-    $comment_storage_controller = $entity_manager->getStorageController('comment');
-
-    // Create some nodes which are part of this forum with some comments.
-    $nodes = array();
-    for ($i = 0; $i < 3; $i++) {
-      $node = $this->drupalCreateNode(array('type' => 'forum', 'taxonomy_forums' => array($term->id()), 'sticky' => $i == 0 ? NODE_STICKY : NODE_NOT_STICKY));
-      $nodes[] = $node;
-    }
-
-    $comments = array();
-    foreach ($nodes as $index => $node) {
-      for ($i = 0; $i <= $index; $i++) {
-        $comment = $comment_storage_controller->create(array('node_type' => 'node_type_forum', 'nid' => $node->id()));
-        $comment->save();
-        $comments[$comment->get('nid')->target_id][$comment->id()] = $comment;
-      }
-    }
-
-    $view = views_get_view('test_forum_index');
-    $this->executeView($view);
-
-    $expected_result = array();
-    $expected_result[] = array(
-      'nid' => $nodes[0]->id(),
-      'sticky' => NODE_STICKY,
-      'comment_count' => 1.
-    );
-    $expected_result[] = array(
-      'nid' => $nodes[1]->id(),
-      'sticky' => NODE_NOT_STICKY,
-      'comment_count' => 2.
-    );
-    $expected_result[] = array(
-      'nid' => $nodes[2]->id(),
-      'sticky' => NODE_NOT_STICKY,
-      'comment_count' => 3.
-    );
-    $column_map = array(
-      'nid' => 'nid',
-      'forum_index_sticky' => 'sticky',
-      'forum_index_comment_count' => 'comment_count',
-    );
-    $this->assertIdenticalResultset($view, $expected_result, $column_map);
-  }
-
-}
diff --git a/core/modules/forum/tests/modules/forum_test_views/forum_test_views.info.yml b/core/modules/forum/tests/modules/forum_test_views/forum_test_views.info.yml
deleted file mode 100644
index 121f6d3..0000000
--- a/core/modules/forum/tests/modules/forum_test_views/forum_test_views.info.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-name: 'Forum test views'
-description: 'Provides default views for views forum tests.'
-package: Testing
-version: VERSION
-core: 8.x
-dependencies:
-  - forum
-  - views
-hidden: true
diff --git a/core/modules/forum/tests/modules/forum_test_views/forum_test_views.module b/core/modules/forum/tests/modules/forum_test_views/forum_test_views.module
deleted file mode 100644
index b3d9bbc..0000000
--- a/core/modules/forum/tests/modules/forum_test_views/forum_test_views.module
+++ /dev/null
@@ -1 +0,0 @@
-<?php
diff --git a/core/modules/forum/tests/modules/forum_test_views/test_views/views.view.test_forum_index.yml b/core/modules/forum/tests/modules/forum_test_views/test_views/views.view.test_forum_index.yml
deleted file mode 100644
index bafdc5f..0000000
--- a/core/modules/forum/tests/modules/forum_test_views/test_views/views.view.test_forum_index.yml
+++ /dev/null
@@ -1,149 +0,0 @@
-base_field: nid
-base_table: forum_index
-core: 8.x
-description: ''
-status: '1'
-display:
-  default:
-    display_plugin: default
-    id: default
-    display_title: Master
-    position: ''
-    display_options:
-      access:
-        type: none
-      cache:
-        type: none
-      query:
-        type: views_query
-      exposed_form:
-        type: basic
-      pager:
-        type: full
-      style:
-        type: default
-      row:
-        type: fields
-      fields:
-        nid:
-          table: forum_index
-          field: nid
-          id: nid
-        sticky:
-          id: sticky
-          table: forum_index
-          field: sticky
-          relationship: none
-          group_type: group
-          admin_label: ''
-          label: Sticky
-          exclude: '0'
-          alter:
-            alter_text: '0'
-            text: ''
-            make_link: '0'
-            path: ''
-            absolute: '0'
-            external: '0'
-            replace_spaces: '0'
-            path_case: none
-            trim_whitespace: '0'
-            alt: ''
-            rel: ''
-            link_class: ''
-            prefix: ''
-            suffix: ''
-            target: ''
-            nl2br: '0'
-            max_length: ''
-            word_boundary: '1'
-            ellipsis: '1'
-            more_link: '0'
-            more_link_text: ''
-            more_link_path: ''
-            strip_tags: '0'
-            trim: '0'
-            preserve_tags: ''
-            html: '0'
-          element_type: ''
-          element_class: ''
-          element_label_type: ''
-          element_label_class: ''
-          element_label_colon: '1'
-          element_wrapper_type: ''
-          element_wrapper_class: ''
-          element_default_classes: '1'
-          empty: ''
-          hide_empty: '0'
-          empty_zero: '0'
-          hide_alter_empty: '1'
-          type: yes-no
-          type_custom_true: ''
-          type_custom_false: ''
-          not: '0'
-          plugin_id: boolean
-        comment_count:
-          id: comment_count
-          table: forum_index
-          field: comment_count
-          relationship: none
-          group_type: group
-          admin_label: ''
-          label: 'Comment count'
-          exclude: '0'
-          alter:
-            alter_text: '0'
-            text: ''
-            make_link: '0'
-            path: ''
-            absolute: '0'
-            external: '0'
-            replace_spaces: '0'
-            path_case: none
-            trim_whitespace: '0'
-            alt: ''
-            rel: ''
-            link_class: ''
-            prefix: ''
-            suffix: ''
-            target: ''
-            nl2br: '0'
-            max_length: ''
-            word_boundary: '1'
-            ellipsis: '1'
-            more_link: '0'
-            more_link_text: ''
-            more_link_path: ''
-            strip_tags: '0'
-            trim: '0'
-            preserve_tags: ''
-            html: '0'
-          element_type: ''
-          element_class: ''
-          element_label_type: ''
-          element_label_class: ''
-          element_label_colon: '1'
-          element_wrapper_type: ''
-          element_wrapper_class: ''
-          element_default_classes: '1'
-          empty: ''
-          hide_empty: '0'
-          empty_zero: '0'
-          hide_alter_empty: '1'
-          set_precision: '0'
-          precision: '0'
-          decimal: .
-          separator: ','
-          format_plural: '0'
-          format_plural_singular: '1'
-          format_plural_plural: '@count'
-          prefix: ''
-          suffix: ''
-          plugin_id: numeric
-      filters: {  }
-      sorts: {  }
-label: test_forum_index
-module: views
-id: test_forum_index
-tag: ''
-langcode: en
diff --git a/core/modules/history/lib/Drupal/history/Plugin/views/field/HistoryUserTimestamp.php b/core/modules/history/lib/Drupal/history/Plugin/views/field/HistoryUserTimestamp.php
index ccbba18..028c924 100644
--- a/core/modules/history/lib/Drupal/history/Plugin/views/field/HistoryUserTimestamp.php
+++ b/core/modules/history/lib/Drupal/history/Plugin/views/field/HistoryUserTimestamp.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\node\Plugin\views\field\Node;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to display the marker for new content.
@@ -20,7 +20,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("history_user_timestamp")
+ * @Plugin(
+ *   id = "history_user_timestamp",
+ *   module = "history"
+ * )
  */
 class HistoryUserTimestamp extends Node {
 
diff --git a/core/modules/history/lib/Drupal/history/Plugin/views/filter/HistoryUserTimestamp.php b/core/modules/history/lib/Drupal/history/Plugin/views/filter/HistoryUserTimestamp.php
index 7847ccc..c76d375 100644
--- a/core/modules/history/lib/Drupal/history/Plugin/views/filter/HistoryUserTimestamp.php
+++ b/core/modules/history/lib/Drupal/history/Plugin/views/filter/HistoryUserTimestamp.php
@@ -8,7 +8,7 @@
 namespace Drupal\history\Plugin\views\filter;
 
 use Drupal\views\Plugin\views\filter\FilterPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter for new content.
@@ -18,7 +18,10 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("history_user_timestamp")
+ * @Plugin(
+ *   id = "history_user_timestamp",
+ *   module = "history"
+ * )
  */
 class HistoryUserTimestamp extends FilterPluginBase {
 
diff --git a/core/modules/language/lib/Drupal/language/Plugin/views/argument/LanguageArgument.php b/core/modules/language/lib/Drupal/language/Plugin/views/argument/LanguageArgument.php
index a23e7c4..44ebbe2 100644
--- a/core/modules/language/lib/Drupal/language/Plugin/views/argument/LanguageArgument.php
+++ b/core/modules/language/lib/Drupal/language/Plugin/views/argument/LanguageArgument.php
@@ -8,14 +8,17 @@
 namespace Drupal\language\Plugin\views\argument;
 
 use Drupal\views\Plugin\views\argument\ArgumentPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Defines an argument handler to accept a language.
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("language")
+ * @Plugin(
+ *   id = "language",
+ *   module = "language"
+ * )
  */
 class LanguageArgument extends ArgumentPluginBase {
 
diff --git a/core/modules/language/lib/Drupal/language/Plugin/views/field/LanguageField.php b/core/modules/language/lib/Drupal/language/Plugin/views/field/LanguageField.php
index bd10ef5..3c2ca79 100644
--- a/core/modules/language/lib/Drupal/language/Plugin/views/field/LanguageField.php
+++ b/core/modules/language/lib/Drupal/language/Plugin/views/field/LanguageField.php
@@ -8,14 +8,17 @@
 namespace Drupal\language\Plugin\views\field;
 
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Defines a field handler to translate a language into its readable form.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("language")
+ * @Plugin(
+ *   id = "language",
+ *   module = "language"
+ * )
  */
 class LanguageField extends FieldPluginBase {
 
diff --git a/core/modules/language/lib/Drupal/language/Plugin/views/filter/LanguageFilter.php b/core/modules/language/lib/Drupal/language/Plugin/views/filter/LanguageFilter.php
index 45311ed..5a5da1b 100644
--- a/core/modules/language/lib/Drupal/language/Plugin/views/filter/LanguageFilter.php
+++ b/core/modules/language/lib/Drupal/language/Plugin/views/filter/LanguageFilter.php
@@ -8,14 +8,17 @@
 namespace Drupal\language\Plugin\views\filter;
 
 use Drupal\views\Plugin\views\filter\InOperator;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Provides filtering by language.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("language")
+ * @Plugin(
+ *   id = "language",
+ *   module = "language"
+ * )
  */
 class LanguageFilter extends InOperator {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/area/ListingEmpty.php b/core/modules/node/lib/Drupal/node/Plugin/views/area/ListingEmpty.php
index 666cf26..acacb23 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/area/ListingEmpty.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/area/ListingEmpty.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\node\Plugin\views\area;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\area\AreaPluginBase;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_area_handlers
  *
- * @PluginID("node_listing_empty")
+ * @Plugin(
+ *   id = "node_listing_empty",
+ *   module = "node"
+ * )
  */
 class ListingEmpty extends AreaPluginBase {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/argument/Nid.php b/core/modules/node/lib/Drupal/node/Plugin/views/argument/Nid.php
index 4519778..f19676b 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/argument/Nid.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/argument/Nid.php
@@ -8,12 +8,15 @@
 namespace Drupal\node\Plugin\views\argument;
 
 use Drupal\views\Plugin\views\argument\Numeric;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler to accept a node id.
  *
- * @PluginID("node_nid")
+ * @Plugin(
+ *   id = "node_nid",
+ *   module = "node"
+ * )
  */
 class Nid extends Numeric {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/argument/Type.php b/core/modules/node/lib/Drupal/node/Plugin/views/argument/Type.php
index e8eb090..00eb0a6 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/argument/Type.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/argument/Type.php
@@ -8,12 +8,15 @@
 namespace Drupal\node\Plugin\views\argument;
 
 use Drupal\views\Plugin\views\argument\String;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler to accept a node type.
  *
- * @PluginID("node_type")
+ * @Plugin(
+ *   id = "node_type",
+ *   module = "node"
+ * )
  */
 class Type extends String {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/argument/UidRevision.php b/core/modules/node/lib/Drupal/node/Plugin/views/argument/UidRevision.php
index d432024..5630b03 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/argument/UidRevision.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/argument/UidRevision.php
@@ -8,13 +8,16 @@
 namespace Drupal\node\Plugin\views\argument;
 
 use Drupal\user\Plugin\views\argument\Uid;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter handler to accept a user id to check for nodes that
  * user posted or created a revision on.
  *
- * @PluginID("node_uid_revision")
+ * @Plugin(
+ *   id = "node_uid_revision",
+ *   module = "node"
+ * )
  */
 class UidRevision extends Uid {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/argument/Vid.php b/core/modules/node/lib/Drupal/node/Plugin/views/argument/Vid.php
index 4e36279..3136671 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/argument/Vid.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/argument/Vid.php
@@ -8,12 +8,15 @@
 namespace Drupal\node\Plugin\views\argument;
 
 use Drupal\views\Plugin\views\argument\Numeric;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler to accept a node revision id.
  *
- * @PluginID("node_vid")
+ * @Plugin(
+ *   id = "node_vid",
+ *   module = "node"
+ * )
  */
 class Vid extends Numeric {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/Language.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/Language.php
index 4fd253a..4d0ff3e 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/Language.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/Language.php
@@ -8,14 +8,17 @@
 namespace Drupal\node\Plugin\views\field;
 
 use Drupal\node\Plugin\views\field\Node;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to translate a language into its readable form.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_language")
+ * @Plugin(
+ *   id = "node_language",
+ *   module = "node"
+ * )
  */
 class Language extends Node {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/Link.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/Link.php
index ace65a6..dc77691 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/Link.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/Link.php
@@ -8,14 +8,17 @@
 namespace Drupal\node\Plugin\views\field;
 
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link to the node.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_link")
+ * @Plugin(
+ *   id = "node_link",
+ *   module = "node"
+ * )
  */
 class Link extends FieldPluginBase {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/LinkDelete.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/LinkDelete.php
index 51cc3fe..a1afd13 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/LinkDelete.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/LinkDelete.php
@@ -8,14 +8,17 @@
 namespace Drupal\node\Plugin\views\field;
 
 use Drupal\node\Plugin\views\field\Link;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link to delete a node.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_link_delete")
+ * @Plugin(
+ *   id = "node_link_delete",
+ *   module = "node"
+ * )
  */
 class LinkDelete extends Link {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/LinkEdit.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/LinkEdit.php
index 2a69d13..529244f 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/LinkEdit.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/LinkEdit.php
@@ -8,14 +8,17 @@
 namespace Drupal\node\Plugin\views\field;
 
 use Drupal\node\Plugin\views\field\Link;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link node edit.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_link_edit")
+ * @Plugin(
+ *   id = "node_link_edit",
+ *   module = "node"
+ * )
  */
 class LinkEdit extends Link {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/Node.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/Node.php
index 124d9c8..3b0683b 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/Node.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/Node.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to provide simple renderer that allows linking to a node.
@@ -19,7 +19,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node")
+ * @Plugin(
+ *   id = "node",
+ *   module = "node"
+ * )
  */
 class Node extends FieldPluginBase {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/Path.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/Path.php
index 3e41bc7..366ded2 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/Path.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/Path.php
@@ -10,14 +10,17 @@
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present the path to the node.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_path")
+ * @Plugin(
+ *   id = "node_path",
+ *   module = "node"
+ * )
  */
 class Path extends FieldPluginBase {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/Revision.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/Revision.php
index 8d9d285..f493a54 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/Revision.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/Revision.php
@@ -10,14 +10,17 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\node\Plugin\views\field\Node;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A basic node_revision handler.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_revision")
+ * @Plugin(
+ *   id = "node_revision",
+ *   module = "node"
+ * )
  */
 class Revision extends Node {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLink.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLink.php
index 758af76..24cee3d 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLink.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLink.php
@@ -10,14 +10,17 @@
 use Drupal\node\Plugin\views\field\Link;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link to a node revision.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_revision_link")
+ * @Plugin(
+ *   id = "node_revision_link",
+ *   module = "node"
+ * )
  */
 class RevisionLink extends Link {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLinkDelete.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLinkDelete.php
index 2d5aee7..4096ad9 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLinkDelete.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLinkDelete.php
@@ -8,14 +8,17 @@
 namespace Drupal\node\Plugin\views\field;
 
 use Drupal\node\Plugin\views\field\RevisionLink;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present link to delete a node revision.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_revision_link_delete")
+ * @Plugin(
+ *   id = "node_revision_link_delete",
+ *   module = "node"
+ * )
  */
 class RevisionLinkDelete extends RevisionLink {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLinkRevert.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLinkRevert.php
index 537857e..bb5bc37 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLinkRevert.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/RevisionLinkRevert.php
@@ -8,14 +8,17 @@
 namespace Drupal\node\Plugin\views\field;
 
 use Drupal\node\Plugin\views\field\RevisionLink;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link to revert a node to a revision.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_revision_link_revert")
+ * @Plugin(
+ *   id = "node_revision_link_revert",
+ *   module = "node"
+ * )
  */
 class RevisionLinkRevert extends RevisionLink {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/Type.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/Type.php
index f29135d..94955a1 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/Type.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/Type.php
@@ -8,14 +8,17 @@
 namespace Drupal\node\Plugin\views\field;
 
 use Drupal\node\Plugin\views\field\Node;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to translate a node type into its readable form.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("node_type")
+ * @Plugin(
+ *   id = "node_type",
+ *   module = "node"
+ * )
  */
 class Type extends Node {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/filter/Access.php b/core/modules/node/lib/Drupal/node/Plugin/views/filter/Access.php
index f9e66b9..eef38a4 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/filter/Access.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/filter/Access.php
@@ -8,14 +8,17 @@
 namespace Drupal\node\Plugin\views\filter;
 
 use Drupal\views\Plugin\views\filter\FilterPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter by node_access records.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("node_access")
+ * @Plugin(
+ *   id = "node_access",
+ *   module = "node"
+ * )
  */
 class Access extends FilterPluginBase {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/filter/Status.php b/core/modules/node/lib/Drupal/node/Plugin/views/filter/Status.php
index 3ae361e..6e284e0 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/filter/Status.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/filter/Status.php
@@ -8,14 +8,17 @@
 namespace Drupal\node\Plugin\views\filter;
 
 use Drupal\views\Plugin\views\filter\FilterPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter by published status.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("node_status")
+ * @Plugin(
+ *   id = "node_status",
+ *   module = "node"
+ * )
  */
 class Status extends FilterPluginBase {
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/filter/UidRevision.php b/core/modules/node/lib/Drupal/node/Plugin/views/filter/UidRevision.php
index 9ed9fe3..8a4cb5f 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/filter/UidRevision.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/filter/UidRevision.php
@@ -8,14 +8,17 @@
 namespace Drupal\node\Plugin\views\filter;
 
 use Drupal\user\Plugin\views\filter\Name;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter handler to check for revisions a certain user has created.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("node_uid_revision")
+ * @Plugin(
+ *   id = "node_uid_revision",
+ *   module = "node"
+ * )
  */
 class UidRevision extends Name {
 
diff --git a/core/modules/overlay/templates/overlay.tpl.php b/core/modules/overlay/templates/overlay.tpl.php
index 2b342ba..38e6664 100644
--- a/core/modules/overlay/templates/overlay.tpl.php
+++ b/core/modules/overlay/templates/overlay.tpl.php
@@ -28,7 +28,7 @@
       <h1 id="overlay-title"<?php print $title_attributes; ?>><?php print $title; ?></h1>
     </div>
     <div id="overlay-close-wrapper">
-      <a id="overlay-close" href="#" class="overlay-close" role="button" aria-controls="overlay-content"><span class="element-invisible"><?php print t('Close overlay'); ?></span></a>
+      <a id="overlay-close" href="#" class="overlay-close"><span class="element-invisible"><?php print t('Close overlay'); ?></span></a>
     </div>
     <?php if ($tabs): ?><h2 class="element-invisible"><?php print t('Primary tabs'); ?></h2><ul id="overlay-tabs"><?php print render($tabs); ?></ul><?php endif; ?>
   </div>
diff --git a/core/modules/search/lib/Drupal/search/Plugin/views/argument/Search.php b/core/modules/search/lib/Drupal/search/Plugin/views/argument/Search.php
index 0f4f4b5..354b0c1 100644
--- a/core/modules/search/lib/Drupal/search/Plugin/views/argument/Search.php
+++ b/core/modules/search/lib/Drupal/search/Plugin/views/argument/Search.php
@@ -8,14 +8,17 @@
 namespace Drupal\search\Plugin\views\argument;
 
 use Drupal\views\Plugin\views\argument\ArgumentPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument that accepts query keys for search.
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("search")
+ * @Plugin(
+ *   id = "search",
+ *   module = "search"
+ * )
  */
 class Search extends ArgumentPluginBase {
 
diff --git a/core/modules/search/lib/Drupal/search/Plugin/views/field/Score.php b/core/modules/search/lib/Drupal/search/Plugin/views/field/Score.php
index 26e28f1..4f7d6bf 100644
--- a/core/modules/search/lib/Drupal/search/Plugin/views/field/Score.php
+++ b/core/modules/search/lib/Drupal/search/Plugin/views/field/Score.php
@@ -8,14 +8,17 @@
 namespace Drupal\search\Plugin\views\field;
 
 use Drupal\views\Plugin\views\field\Numeric;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to provide simple renderer that allows linking to a node.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("search_score")
+ * @Plugin(
+ *   id = "search_score",
+ *   module = "search"
+ * )
  */
 class Score extends Numeric {
 
diff --git a/core/modules/search/lib/Drupal/search/Plugin/views/filter/Search.php b/core/modules/search/lib/Drupal/search/Plugin/views/filter/Search.php
index afb7724..3c961b6 100644
--- a/core/modules/search/lib/Drupal/search/Plugin/views/filter/Search.php
+++ b/core/modules/search/lib/Drupal/search/Plugin/views/filter/Search.php
@@ -9,14 +9,17 @@
 
 use Drupal\search\SearchQuery;
 use Drupal\views\Plugin\views\filter\FilterPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to provide simple renderer that allows linking to a node.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("search")
+ * @Plugin(
+ *   id = "search",
+ *   module = "search"
+ * )
  */
 class Search extends FilterPluginBase {
 
diff --git a/core/modules/search/lib/Drupal/search/Plugin/views/sort/Score.php b/core/modules/search/lib/Drupal/search/Plugin/views/sort/Score.php
index c547d0e..7ce047e 100644
--- a/core/modules/search/lib/Drupal/search/Plugin/views/sort/Score.php
+++ b/core/modules/search/lib/Drupal/search/Plugin/views/sort/Score.php
@@ -8,14 +8,17 @@
 namespace Drupal\search\Plugin\views\sort;
 
 use Drupal\views\Plugin\views\sort\SortPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to provide simple renderer that allows linking to a node.
  *
  * @ingroup views_sort_handlers
  *
- * @PluginID("search_score")
+ * @Plugin(
+ *   id = "search_score",
+ *   module = "search"
+ * )
  */
 class Score extends SortPluginBase {
 
diff --git a/core/modules/simpletest/simpletest.css b/core/modules/simpletest/simpletest.css
index 86bd04b..0337e62 100644
--- a/core/modules/simpletest/simpletest.css
+++ b/core/modules/simpletest/simpletest.css
@@ -30,8 +30,12 @@ th.simpletest_test {
   background-color: #edf5fa;
   color: #494949;
 }
+.simpletest-test-select .form-item {
+  margin-bottom: 0;
+  margin-top: 0;
+}
 
-table#simpletest-form-table tr.simpletest-group label {
+#simpletest-form-table tr.simpletest-group label {
   display: inline;
 }
 
diff --git a/core/modules/simpletest/simpletest.module b/core/modules/simpletest/simpletest.module
index 5ad1b39..69cfb5f 100644
--- a/core/modules/simpletest/simpletest.module
+++ b/core/modules/simpletest/simpletest.module
@@ -83,10 +83,12 @@ function simpletest_theme() {
     'simpletest_test_table' => array(
       'render element' => 'table',
       'file' => 'simpletest.pages.inc',
+      'template' => 'simpletest-test-table',
     ),
     'simpletest_result_summary' => array(
       'render element' => 'form',
       'file' => 'simpletest.pages.inc',
+      'template' => 'simpletest-result-summary',
     ),
   );
 }
diff --git a/core/modules/simpletest/simpletest.pages.inc b/core/modules/simpletest/simpletest.pages.inc
index 4fb908d..945760b 100644
--- a/core/modules/simpletest/simpletest.pages.inc
+++ b/core/modules/simpletest/simpletest.pages.inc
@@ -5,6 +5,8 @@
  * Page callbacks for simpletest module.
  */
 
+use Drupal\Core\Template\Attribute;
+
 /**
  * List tests arranged in groups that can be selected and run.
  */
@@ -58,26 +60,19 @@ function simpletest_test_form($form, &$form_state) {
 }
 
 /**
- * Returns HTML for a test list generated by simpletest_test_form() into a table.
+ * Prepares variables for test list table templates.
+ *
+ * Default template: simpletest-test-table.html.twig.
  *
- * @param $variables
+ * @param array $variables
  *   An associative array containing:
  *   - table: A render element representing the table.
- *
- * @ingroup themeable
  */
-function theme_simpletest_test_table($variables) {
+function template_preprocess_simpletest_test_table(&$variables) {
   $table = $variables['table'];
 
   drupal_add_library('simpletest', 'drupal.simpletest');
 
-  // Create header for test selection table.
-  $header = array(
-    array('class' => array('select-all')),
-    array('data' => t('Test'), 'class' => array('simpletest_test')),
-    array('data' => t('Description'), 'class' => array('simpletest_description')),
-  );
-
   // Define the images used to expand/collapse the test groups.
   $js = array(
     'images' => array(
@@ -87,36 +82,25 @@ function theme_simpletest_test_table($variables) {
   );
 
   // Cycle through each test group and create a row.
-  $rows = array();
+
+  $variables['test_groups'] = array();
   foreach (element_children($table) as $key) {
     $element = &$table[$key];
-    $row = array();
+
+    $variables['test_groups'][$key] = new stdClass();
 
     // Make the class name safe for output on the page by replacing all
     // non-word/decimal characters with a dash (-).
     $test_class = strtolower(trim(preg_replace("/[^\w\d]/", "-", $key)));
+    $variables['test_groups'][$key]->test_class = $test_class;
 
     // Select the right "expand"/"collapse" image, depending on whether the
     // category is expanded (at least one test selected) or not.
     $collapsed = !empty($element['#collapsed']);
     $image_index = $collapsed ? 0 : 1;
 
-    // Place-holder for checkboxes to select group of tests.
-    $row[] = array('id' => $test_class, 'class' => array('simpletest-select-all'));
-
     // Expand/collapse image and group title.
-    $row[] = array(
-      'data' => '<div class="simpletest-image" id="simpletest-test-group-' . $test_class . '"></div>' .
-        '<label for="' . $test_class . '-select-all" class="simpletest-group-label">' . $key . '</label>',
-      'class' => array('simpletest-group-label'),
-    );
-
-    $row[] = array(
-      'data' => '&nbsp;',
-      'class' => array('simpletest-group-description'),
-    );
-
-    $rows[] = array('data' => $row, 'class' => array('simpletest-group'));
+    $variables['test_groups'][$key]->label = $key;
 
     // Add individual tests to group.
     $current_js = array(
@@ -129,51 +113,40 @@ function theme_simpletest_test_table($variables) {
     // Sorting $element by children's #title attribute instead of by class name.
     uasort($element, 'element_sort_by_title');
 
+    $variables['test_groups'][$key]->tests = array();
+
     // Cycle through each test within the current group.
     foreach (element_children($element) as $test_name) {
       $test = $element[$test_name];
-      $row = array();
+      $test_data = new stdClass();
+      $test_data->attributes = new Attribute(array('class' => array()));
+      $test_data->id = $test['#id'];
 
       $current_js['testNames'][] = $test['#id'];
 
       // Store test title and description so that checkbox won't render them.
-      $title = $test['#title'];
-      $description = $test['#description'];
+      $test_data->title = $test['#title'];
+      $test_data->description = $test['#description'];
+      unset($test['#description']);
 
       $test['#title_display'] = 'invisible';
-      unset($test['#description']);
 
       // Test name is used to determine what tests to run.
       $test['#name'] = $test_name;
 
-      $row[] = array(
-        'data' => drupal_render($test),
-        'class' => array('simpletest-test-select'),
-      );
-      $row[] = array(
-        'data' => '<label for="' . $test['#id'] . '">' . $title . '</label>',
-        'class' => array('simpletest-test-label'),
-      );
-      $row[] = array(
-        'data' => '<div class="description">' . $description . '</div>',
-        'class' => array('simpletest-test-description'),
-      );
+      // Add the checkbox field.
+      $test_data->field = $test;
+
+      $test_data->attributes['class'][] = $test_class . '-test';
+      $test_data->attributes['class'][] = ($collapsed ? 'js-hide' : '');
 
-      $rows[] = array('data' => $row, 'class' => array($test_class . '-test', ($collapsed ? 'js-hide' : '')));
+      $variables['test_groups'][$key]->tests[$test_name] = $test_data;
     }
     $js['simpletest-test-group-' . $test_class] = $current_js;
-    unset($table[$key]);
   }
 
   // Add js array of settings.
   drupal_add_js(array('simpleTest' => $js), 'setting');
-
-  if (empty($rows)) {
-    return '<strong>' . t('No tests to display.') . '</strong>';
-  }
-  else {
-    return theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'simpletest-form-table')));
-  }
 }
 
 /**
@@ -274,7 +247,7 @@ function simpletest_result_form($form, &$form_state, $test_id) {
       $form['result']['summary']['#' . $assertion->status]++;
     }
     $form['result']['results'][$group]['table'] = array(
-      '#theme' => 'table',
+      '#type' => 'table',
       '#header' => $header,
       '#rows' => $rows,
     );
@@ -370,17 +343,18 @@ function simpletest_result_form_submit($form, &$form_state) {
 }
 
 /**
- * Returns HTML for the summary status of a simpletest result.
+ * Prepares variables for the simpletest result's summary status templates.
+ *
+ * Default template: simpletest-result-summary.html.twig.
  *
- * @param $variables
+ * @param array $variables
  *   An associative array containing:
  *   - form: A render element representing the form.
- *
- * @ingroup themeable
  */
-function theme_simpletest_result_summary($variables) {
+function template_preprocess_simpletest_result_summary(&$variables) {
   $form = $variables['form'];
-  return '<div class="simpletest-' . ($form['#ok'] ? 'pass' : 'fail') . '">' . _simpletest_format_summary_line($form) . '</div>';
+  $variables['summary'] = _simpletest_format_summary_line($form);
+  $variables['status'] = $form['#ok'] ? 'pass' : 'fail';
 }
 
 /**
diff --git a/core/modules/simpletest/templates/simpletest-result-summary.html.twig b/core/modules/simpletest/templates/simpletest-result-summary.html.twig
new file mode 100644
index 0000000..e4f298a
--- /dev/null
+++ b/core/modules/simpletest/templates/simpletest-result-summary.html.twig
@@ -0,0 +1,16 @@
+{#
+/**
+ * @file
+ * Default theme implementation for the content of simpletest result summary.
+ *
+ * Available variables:
+ * - status: Pass or fail of test.
+ * - summary: Summary info of test.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_simpletest_result_summary()
+ *
+ * @ingroup themeable
+ */
+#}
+<div class="simpletest-{{ status }}">{{ summary }}</div>
diff --git a/core/modules/simpletest/templates/simpletest-test-table.html.twig b/core/modules/simpletest/templates/simpletest-test-table.html.twig
new file mode 100644
index 0000000..f6a94be
--- /dev/null
+++ b/core/modules/simpletest/templates/simpletest-test-table.html.twig
@@ -0,0 +1,46 @@
+{#
+/**
+ * @file
+ * Default theme implementation for the content of simpletest test table.
+ *
+ * Available variables:
+ * - table: A simpletest table.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_simpletest_test_table()
+ *
+ * @ingroup themeable
+ */
+#}
+<table id="simpletest-form-table">
+  <thead>
+      <tr>
+          <th class="select-all"></th>
+          <th class="simpletest_test">{{ 'Test'|t }}</th>
+          <th class="simpletest_description">{{ 'Description'|t }}</th>
+      </tr>
+  </thead>
+  <tbody>
+      {% for test_group in test_groups %}
+        <tr class="simpletest-group">
+          <td id="{{ test_group.test_class }}" class="simpletest-select-all"></td>
+          <td class="simpletest-group-label">
+            <div class="simpletest-image" id="simpletest-test-group-{{ test_group.test_class }}"></div>
+            <label for="{{ test_group.test_class }}-select-all" class="simpletest-group-label">{{ test_group.label }}</label>
+          </td>
+          <td class="simpletest-group-description">&nbsp;</td>
+        </tr>
+        {% for test in test_group.tests %}
+            <tr{{ test.attributes }}>
+              <td class="simpletest-test-select">{{ test.field }}</td>
+              <td class="simpletest-test-label"><label for="{{ test.id }}">{{ test.title }}</label></td>
+              <td class="simpletest-test-description"><div class="description">{{ test.description }}</div></td>
+            </tr>
+        {% endfor %}
+      {% else %}
+        <tr>
+          <td colspan="3">{{ 'No tests to display.'|t }}</td>
+        </tr>
+      {% endfor %}
+  </tbody>
+</table>
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTid.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTid.php
index f51a5ce..0cbcadd 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTid.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTid.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\taxonomy\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\argument\ManyToOne;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("taxonomy_index_tid")
+ * @Plugin(
+ *   id = "taxonomy_index_tid",
+ *   module = "taxonomy"
+ * )
  */
 class IndexTid extends ManyToOne {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTidDepth.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTidDepth.php
index a08190c..c43c69e 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTidDepth.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTidDepth.php
@@ -8,7 +8,7 @@
 namespace Drupal\taxonomy\Plugin\views\argument;
 
 use Drupal\views\Plugin\views\argument\ArgumentPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for taxonomy terms with depth.
@@ -18,7 +18,10 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("taxonomy_index_tid_depth")
+ * @Plugin(
+ *   id = "taxonomy_index_tid_depth",
+ *   module = "taxonomy"
+ * )
  */
 class IndexTidDepth extends ArgumentPluginBase {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTidDepthModifier.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTidDepthModifier.php
index db159d7..c8aecf0 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTidDepthModifier.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/IndexTidDepthModifier.php
@@ -8,7 +8,7 @@
 namespace Drupal\taxonomy\Plugin\views\argument;
 
 use Drupal\views\Plugin\views\argument\ArgumentPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for to modify depth for a previous term.
@@ -18,7 +18,10 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("taxonomy_index_tid_depth_modifier")
+ * @Plugin(
+ *   id = "taxonomy_index_tid_depth_modifier",
+ *   module = "taxonomy"
+ * )
  */
 class IndexTidDepthModifier extends ArgumentPluginBase {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/Taxonomy.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/Taxonomy.php
index 3a132dd..3106222 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/Taxonomy.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/Taxonomy.php
@@ -8,14 +8,17 @@
 namespace Drupal\taxonomy\Plugin\views\argument;
 
 use Drupal\views\Plugin\views\argument\Numeric;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for basic taxonomy tid.
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("taxonomy")
+ * @Plugin(
+ *   id = "taxonomy",
+ *   module = "taxonomy"
+ * )
  */
 class Taxonomy extends Numeric {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/VocabularyVid.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/VocabularyVid.php
index 618ddfd..c036ed5 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/VocabularyVid.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument/VocabularyVid.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\taxonomy\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\argument\Numeric;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("vocabulary_vid")
+ * @Plugin(
+ *   id = "vocabulary_vid",
+ *   module = "taxonomy"
+ * )
  */
 class VocabularyVid extends Numeric {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/Language.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/Language.php
index 7131fef..9dc6f68 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/Language.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/Language.php
@@ -7,12 +7,14 @@
 
 namespace Drupal\taxonomy\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to show the language of a taxonomy term.
  *
- * @PluginID("taxonomy_term_language")
+ * @Plugin(
+ *   id = "taxonomy_term_language"
+ * )
  */
 class Language extends Taxonomy {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/LinkEdit.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/LinkEdit.php
index 64225c0..2868e51 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/LinkEdit.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/LinkEdit.php
@@ -10,14 +10,17 @@
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a term edit link.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("term_link_edit")
+ * @Plugin(
+ *   id = "term_link_edit",
+ *   module = "taxonomy"
+ * )
  */
 class LinkEdit extends FieldPluginBase {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/Taxonomy.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/Taxonomy.php
index 9d04648..ee885fd 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/Taxonomy.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/Taxonomy.php
@@ -10,7 +10,7 @@
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to provide simple renderer that allows linking to a taxonomy
@@ -20,7 +20,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("taxonomy")
+ * @Plugin(
+ *   id = "taxonomy",
+ *   module = "taxonomy"
+ * )
  */
 class Taxonomy extends FieldPluginBase {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/TaxonomyIndexTid.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/TaxonomyIndexTid.php
index 2880252..9aefbec 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/TaxonomyIndexTid.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/field/TaxonomyIndexTid.php
@@ -10,14 +10,17 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\field\PrerenderList;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to display all taxonomy terms of a node.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("taxonomy_index_tid")
+ * @Plugin(
+ *   id = "taxonomy_index_tid",
+ *   module = "taxonomy"
+ * )
  */
 class TaxonomyIndexTid extends PrerenderList {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/filter/TaxonomyIndexTid.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/filter/TaxonomyIndexTid.php
index f485ac6..856254a 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/filter/TaxonomyIndexTid.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/filter/TaxonomyIndexTid.php
@@ -9,7 +9,7 @@
 
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\filter\ManyToOne;
 
 /**
@@ -17,7 +17,10 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("taxonomy_index_tid")
+ * @Plugin(
+ *   id = "taxonomy_index_tid",
+ *   module = "taxonomy"
+ * )
  */
 class TaxonomyIndexTid extends ManyToOne {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/filter/TaxonomyIndexTidDepth.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/filter/TaxonomyIndexTidDepth.php
index 4ceb482..6329e85 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/filter/TaxonomyIndexTidDepth.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/filter/TaxonomyIndexTidDepth.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\taxonomy\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter handler for taxonomy terms with depth.
@@ -17,7 +17,10 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("taxonomy_index_tid_depth")
+ * @Plugin(
+ *   id = "taxonomy_index_tid_depth",
+ *   module = "taxonomy"
+ * )
  */
 class TaxonomyIndexTidDepth extends TaxonomyIndexTid {
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/relationship/NodeTermData.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/relationship/NodeTermData.php
index f365c3a..91d78ea 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/relationship/NodeTermData.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/relationship/NodeTermData.php
@@ -10,14 +10,17 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\relationship\RelationshipPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Relationship handler to return the taxonomy terms of nodes.
  *
  * @ingroup views_relationship_handlers
  *
- * @PluginID("node_term_data")
+ * @Plugin(
+ *   id = "node_term_data",
+ *   module = "taxonomy"
+ * )
  */
 class NodeTermData extends RelationshipPluginBase  {
 
diff --git a/core/modules/translation_entity/lib/Drupal/translation_entity/Plugin/views/field/TranslationLink.php b/core/modules/translation_entity/lib/Drupal/translation_entity/Plugin/views/field/TranslationLink.php
index 618b6ae..897c538 100644
--- a/core/modules/translation_entity/lib/Drupal/translation_entity/Plugin/views/field/TranslationLink.php
+++ b/core/modules/translation_entity/lib/Drupal/translation_entity/Plugin/views/field/TranslationLink.php
@@ -8,7 +8,7 @@
 namespace Drupal\translation_entity\Plugin\views\field;
 
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Entity\EntityInterface;
 
 /**
@@ -16,7 +16,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("translation_entity_link")
+ * @Plugin(
+ *   id = "translation_entity_link",
+ *   module = "translation_entity"
+ * )
  */
 class TranslationLink extends FieldPluginBase {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/argument/RolesRid.php b/core/modules/user/lib/Drupal/user/Plugin/views/argument/RolesRid.php
index bbef57e..c2fdf2a 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/argument/RolesRid.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/argument/RolesRid.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\argument\ManyToOne;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("users_roles_rid")
+ * @Plugin(
+ *   id = "users_roles_rid",
+ *   module = "user"
+ * )
  */
 class RolesRid extends ManyToOne {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/argument/Uid.php b/core/modules/user/lib/Drupal/user/Plugin/views/argument/Uid.php
index 82c5b75..bbcbccf 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/argument/Uid.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/argument/Uid.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\argument\Numeric;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("user_uid")
+ * @Plugin(
+ *   id = "user_uid",
+ *   module = "user"
+ * )
  */
 class Uid extends Numeric {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/Language.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/Language.php
index ced49f0..d0ca31a 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/Language.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/Language.php
@@ -7,14 +7,17 @@
 
 namespace Drupal\user\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Views field handler for user language.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("user_language")
+ * @Plugin(
+ *   id = "user_language",
+ *   module = "user"
+ * )
  */
 class Language extends User {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/Link.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/Link.php
index 39b2a9b..6264824 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/Link.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/Link.php
@@ -11,14 +11,17 @@
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link to the user.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("user_link")
+ * @Plugin(
+ *   id = "user_link",
+ *   module = "user"
+ * )
  */
 class Link extends FieldPluginBase {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/LinkCancel.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/LinkCancel.php
index b55e0c9..97b49b8 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/LinkCancel.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/LinkCancel.php
@@ -8,14 +8,17 @@
 namespace Drupal\user\Plugin\views\field;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link to user cancel.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("user_link_cancel")
+ * @Plugin(
+ *   id = "user_link_cancel",
+ *   module = "user"
+ * )
  */
 class LinkCancel extends Link {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/LinkEdit.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/LinkEdit.php
index e7f63be..b50b0da 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/LinkEdit.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/LinkEdit.php
@@ -8,14 +8,17 @@
 namespace Drupal\user\Plugin\views\field;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to present a link to user edit.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("user_link_edit")
+ * @Plugin(
+ *   id = "user_link_edit",
+ *   module = "user"
+ * )
  */
 class LinkEdit extends Link {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/Mail.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/Mail.php
index 5598b18..7c4aec1 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/Mail.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/Mail.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("user_mail")
+ * @Plugin(
+ *   id = "user_mail",
+ *   module = "user"
+ * )
  */
 class Mail extends User {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/Name.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/Name.php
index 33e274c..3401f6b 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/Name.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/Name.php
@@ -9,7 +9,7 @@
 
 use Drupal\user\Plugin\views\field\User;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\ViewExecutable;
 
 /**
@@ -17,7 +17,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("user_name")
+ * @Plugin(
+ *   id = "user_name",
+ *   module = "user"
+ * )
  */
 class Name extends User {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php
index 7aa22fe..7688c84 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\field\PrerenderList;
@@ -17,7 +17,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("user_permissions")
+ * @Plugin(
+ *   id = "user_permissions",
+ *   module = "user"
+ * )
  */
 class Permissions extends PrerenderList {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/Roles.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/Roles.php
index 64480b5..6b15775 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/Roles.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/Roles.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\field\PrerenderList;
@@ -17,7 +17,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("user_roles")
+ * @Plugin(
+ *   id = "user_roles",
+ *   module = "user"
+ * )
  */
 class Roles extends PrerenderList {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/User.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/User.php
index 614d201..1bd79ef 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/User.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/User.php
@@ -9,7 +9,7 @@
 
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\ViewExecutable;
 
 /**
@@ -17,7 +17,10 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("user")
+ * @Plugin(
+ *   id = "user",
+ *   module = "user"
+ * )
  */
 class User extends FieldPluginBase {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/UserData.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/UserData.php
index 06b352f..057b4da 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/UserData.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/UserData.php
@@ -11,7 +11,7 @@
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 use Drupal\views\ViewExecutable;
 use Drupal\user\UserDataInterface;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Provides access to the user data service.
@@ -20,7 +20,10 @@
  *
  * @see \Drupal\user\UserDataInterface
  *
- * @PluginID("user_data")
+ * @Plugin(
+ *   id = "user_data",
+ *   module = "user"
+ * )
  */
 class UserData extends FieldPluginBase {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/filter/Current.php b/core/modules/user/lib/Drupal/user/Plugin/views/filter/Current.php
index 26dfd9a..322308f 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/filter/Current.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/filter/Current.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\filter\BooleanOperator;
@@ -17,7 +17,10 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("user_current")
+ * @Plugin(
+ *   id = "user_current",
+ *   module = "user"
+ * )
  */
 class Current extends BooleanOperator {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/filter/Name.php b/core/modules/user/lib/Drupal/user/Plugin/views/filter/Name.php
index 8c5104c..9d95b65 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/filter/Name.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/filter/Name.php
@@ -8,14 +8,17 @@
 namespace Drupal\user\Plugin\views\filter;
 
 use Drupal\views\Plugin\views\filter\InOperator;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter handler for usernames.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("user_name")
+ * @Plugin(
+ *   id = "user_name",
+ *   module = "user"
+ * )
  */
 class Name extends InOperator {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/filter/Permissions.php b/core/modules/user/lib/Drupal/user/Plugin/views/filter/Permissions.php
index 54f24f8..cf71ac2 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/filter/Permissions.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/filter/Permissions.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\filter\ManyToOne;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("user_permissions")
+ * @Plugin(
+ *   id = "user_permissions",
+ *   module = "user"
+ * )
  */
 class Permissions extends ManyToOne {
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/filter/Roles.php b/core/modules/user/lib/Drupal/user/Plugin/views/filter/Roles.php
index 4aa9d53..a4c2dda 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/filter/Roles.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/filter/Roles.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\filter\ManyToOne;
 
 /**
@@ -15,7 +15,10 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("user_roles")
+ * @Plugin(
+ *   id = "user_roles",
+ *   module = "user"
+ * )
  */
 class Roles extends ManyToOne {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/Discovery/ViewsHandlerDiscovery.php b/core/modules/views/lib/Drupal/views/Plugin/Discovery/ViewsHandlerDiscovery.php
deleted file mode 100644
index 291ad44..0000000
--- a/core/modules/views/lib/Drupal/views/Plugin/Discovery/ViewsHandlerDiscovery.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\views\Plugin\Discovery\ViewsHandlerDiscovery.
- */
-
-namespace Drupal\views\Plugin\Discovery;
-
-use Drupal\Component\Plugin\Discovery\AnnotatedClassDiscovery;
-
-/**
- * Defines a discovery mechanism to find Views handlers in PSR-0 namespaces.
- */
-class ViewsHandlerDiscovery extends AnnotatedClassDiscovery {
-
-  /**
-   * The type of handler being discovered.
-   *
-   * @var string
-   */
-  protected $type;
-
-  /**
-   * Constructs a ViewsHandlerDiscovery object.
-   *
-   * @param string $type
-   *   The plugin type, for example filter.
-   * @param array $root_namespaces
-   *   (optional) Array of root paths keyed by the corresponding namespace to
-   *   look for plugin implementations, \Plugin\views\$type will be appended to
-   *   each namespace. Defaults to an empty array.
-   */
-  function __construct($type, array $root_namespaces = array()) {
-    $this->type = $type;
-    $annotation_namespaces = array(
-      'Drupal\Component\Annotation' => DRUPAL_ROOT . '/core/lib',
-    );
-    $plugin_namespaces = array();
-    foreach ($root_namespaces as $namespace => $dir) {
-      $plugin_namespaces["$namespace\\Plugin\\views\\{$type}"] = array($dir);
-    }
-    parent::__construct($plugin_namespaces, $annotation_namespaces, 'Drupal\Component\Annotation\PluginID');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getDefinitions() {
-    // Add the plugin_type to the definition.
-    $definitions = parent::getDefinitions();
-    foreach ($definitions as $key => $definition) {
-      $definitions[$key]['plugin_type'] = $this->type;
-    }
-    return $definitions;
-  }
-
-}
diff --git a/core/modules/views/lib/Drupal/views/Plugin/ViewsHandlerManager.php b/core/modules/views/lib/Drupal/views/Plugin/ViewsHandlerManager.php
deleted file mode 100644
index b515452..0000000
--- a/core/modules/views/lib/Drupal/views/Plugin/ViewsHandlerManager.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\views\Plugin\ViewsHandlerManager.
- */
-
-namespace Drupal\views\Plugin;
-
-use Drupal\Component\Plugin\PluginManagerBase;
-use Drupal\Component\Plugin\Factory\DefaultFactory;
-use Drupal\Core\Plugin\Discovery\CacheDecorator;
-use Drupal\views\Plugin\Discovery\ViewsHandlerDiscovery;
-
-/**
- * Plugin type manager for all views handlers.
- */
-class ViewsHandlerManager extends PluginManagerBase {
-
-  /**
-   * Constructs a ViewsHandlerManager object.
-   *
-   * @param string $type
-   *   The plugin type, for example filter.
-   * @param array $namespaces
-   *   (optional) An array of paths keyed by it's corresponding namespaces.
-   */
-  public function __construct($type, array $namespaces = array()) {
-    $this->discovery = new ViewsHandlerDiscovery($type, $namespaces);
-    $this->discovery = new CacheDecorator($this->discovery, "views:$type", 'views_info');
-
-    $this->factory = new DefaultFactory($this->discovery);
-  }
-
-}
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/area/Broken.php b/core/modules/views/lib/Drupal/views/Plugin/views/area/Broken.php
index 64a63a0..39fc9d0 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/area/Broken.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/area/Broken.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\area;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A special handler to take the place of missing or broken handlers.
  *
  * @ingroup views_area_handlers
  *
- * @PluginID("broken")
+ * @Plugin(
+ *   id = "broken"
+ * )
  */
 class Broken extends AreaPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/area/Entity.php b/core/modules/views/lib/Drupal/views/Plugin/views/area/Entity.php
index 4a41d0a..200cecb 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/area/Entity.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/area/Entity.php
@@ -9,7 +9,7 @@
 
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\area\AreaPluginBase;
 
 /**
@@ -17,7 +17,10 @@
  *
  * @ingroup views_area_handlers
  *
- * @PluginID("entity")
+ * @Plugin(
+ *   id = "entity",
+ *   module = "views"
+ * )
  */
 class Entity extends AreaPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/area/Result.php b/core/modules/views/lib/Drupal/views/Plugin/views/area/Result.php
index 81f6e85..d619650 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/area/Result.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/area/Result.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\area;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Views area handler to display some configurable result summary.
  *
  * @ingroup views_area_handlers
  *
- * @PluginID("result")
+ * @Plugin(
+ *   id = "result"
+ * )
  */
 class Result extends AreaPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/area/Text.php b/core/modules/views/lib/Drupal/views/Plugin/views/area/Text.php
index 4c926ad..7495933 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/area/Text.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/area/Text.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\area;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Views area text handler.
  *
  * @ingroup views_area_handlers
  *
- * @PluginID("text")
+ * @Plugin(
+ *   id = "text"
+ * )
  */
 class Text extends AreaPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/area/TextCustom.php b/core/modules/views/lib/Drupal/views/Plugin/views/area/TextCustom.php
index 002537a..754dd4f 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/area/TextCustom.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/area/TextCustom.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\area;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Views area text handler.
  *
  * @ingroup views_area_handlers
  *
- * @PluginID("text_custom")
+ * @Plugin(
+ *   id = "text_custom"
+ * )
  */
 class TextCustom extends AreaPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/area/Title.php b/core/modules/views/lib/Drupal/views/Plugin/views/area/Title.php
index 7ee0197..56950a6 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/area/Title.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/area/Title.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\area;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Views area title override handler.
  *
  * @ingroup views_area_handlers
  *
- * @PluginID("title")
+ * @Plugin(
+ *   id = "title"
+ * )
  */
 class Title extends AreaPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/area/View.php b/core/modules/views/lib/Drupal/views/Plugin/views/area/View.php
index 26cce16..7d5e994 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/area/View.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/area/View.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\area;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Views area handlers. Insert a view inside of an area.
  *
  * @ingroup views_area_handlers
  *
- * @PluginID("view")
+ * @Plugin(
+ *   id = "view"
+ * )
  */
 class View extends AreaPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Broken.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Broken.php
index d74ab95..02cbcf7 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Broken.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Broken.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A special handler to take the place of missing or broken handlers.
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("broken")
+ * @Plugin(
+ *   id = "broken"
+ * )
  */
 class Broken extends ArgumentPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Date.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Date.php
index 6294ee3..73d2899 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Date.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Date.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Database\Database;
 
 /**
@@ -24,7 +24,9 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("date")
+ * @Plugin(
+ *   id = "date"
+ * )
  */
 class Date extends Formula {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/DayDate.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/DayDate.php
index 003f50b..4fefcd5 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/DayDate.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/DayDate.php
@@ -7,12 +7,15 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for a day (DD)
  *
- * @PluginID("date_day")
+ * @Plugin(
+ *   id = "date_day",
+ *   module = "views"
+ * )
  */
 class DayDate extends Date {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Formula.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Formula.php
index d04982f..3ed559a 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Formula.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Formula.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 
@@ -21,7 +21,9 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("formula")
+ * @Plugin(
+ *   id = "formula"
+ * )
  */
 class Formula extends ArgumentPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/FullDate.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/FullDate.php
index 0626504..b1f5c43 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/FullDate.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/FullDate.php
@@ -7,12 +7,15 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for a full date (CCYYMMDD)
  *
- * @PluginID("date_fulldate")
+ * @Plugin(
+ *   id = "date_fulldate",
+ *   module = "views"
+ * )
  */
 class FullDate extends Date {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/GroupByNumeric.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/GroupByNumeric.php
index 7e8ef76..72fbfed 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/GroupByNumeric.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/GroupByNumeric.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Simple handler for arguments using group by.
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("groupby_numeric")
+ * @Plugin(
+ *   id = "groupby_numeric"
+ * )
  */
 class GroupByNumeric extends ArgumentPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/ManyToOne.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/ManyToOne.php
index 803d31a..3ee47fe 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/ManyToOne.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/ManyToOne.php
@@ -9,7 +9,7 @@
 
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\ManyToOneHelper;
 
 /**
@@ -25,7 +25,9 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("many_to_one")
+ * @Plugin(
+ *   id = "many_to_one"
+ * )
  */
 class ManyToOne extends ArgumentPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/MonthDate.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/MonthDate.php
index 2618836..2a7a11b 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/MonthDate.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/MonthDate.php
@@ -7,12 +7,15 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for a month (MM)
  *
- * @PluginID("date_month")
+ * @Plugin(
+ *   id = "date_month",
+ *   module = "views"
+ * )
  */
 class MonthDate extends Date {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Null.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Null.php
index 31e04b0..33a47bd 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Null.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Null.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler that ignores the argument.
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("null")
+ * @Plugin(
+ *   id = "null"
+ * )
  */
 class Null extends ArgumentPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Numeric.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Numeric.php
index 3038694..c694400 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Numeric.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Numeric.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Basic argument handler for arguments that are numeric. Incorporates
@@ -15,7 +15,9 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("numeric")
+ * @Plugin(
+ *   id = "numeric"
+ * )
  */
 class Numeric extends ArgumentPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Standard.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Standard.php
index b9b4195..16a4448 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/Standard.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/Standard.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Default implementation of the base argument plugin.
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("standard")
+ * @Plugin(
+ *   id = "standard"
+ * )
  */
 class Standard extends ArgumentPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/String.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/String.php
index 139bdd2..742784e 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/String.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/String.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ManyToOneHelper;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Basic argument handler to implement string arguments that may have length
@@ -18,7 +18,9 @@
  *
  * @ingroup views_argument_handlers
  *
- * @PluginID("string")
+ * @Plugin(
+ *   id = "string"
+ * )
  */
 class String extends ArgumentPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/WeekDate.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/WeekDate.php
index 086ff63..1f28593 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/WeekDate.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/WeekDate.php
@@ -7,12 +7,15 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for a week.
  *
- * @PluginID("date_week")
+ * @Plugin(
+ *   id = "date_week",
+ *   module = "views"
+ * )
  */
 class WeekDate extends Date {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/YearDate.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/YearDate.php
index 884b390..90b65bd 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/YearDate.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/YearDate.php
@@ -7,12 +7,15 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for a year (CCYY)
  *
- * @PluginID("date_year")
+ * @Plugin(
+ *   id = "date_year",
+ *   module = "views"
+ * )
  */
 class YearDate extends Date {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument/YearMonthDate.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument/YearMonthDate.php
index a0588b5..e1ec3ff 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument/YearMonthDate.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument/YearMonthDate.php
@@ -7,12 +7,15 @@
 
 namespace Drupal\views\Plugin\views\argument;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Argument handler for a year plus month (CCYYMM)
  *
- * @PluginID("date_year_month")
+ * @Plugin(
+ *   id = "date_year_month",
+ *   module = "views"
+ * )
  */
 class YearMonthDate extends Date {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Boolean.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Boolean.php
index a2b8dc2..4fe8013 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Boolean.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Boolean.php
@@ -9,7 +9,7 @@
 
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A handler to provide proper displays for booleans.
@@ -27,7 +27,9 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("boolean")
+ * @Plugin(
+ *   id = "boolean"
+ * )
  */
 class Boolean extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Broken.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Broken.php
index 6310248..251abd7 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Broken.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Broken.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A special handler to take the place of missing or broken handlers.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("broken")
+ * @Plugin(
+ *   id = "broken"
+ * )
  */
 class Broken extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Counter.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Counter.php
index b362bb3..a30a469 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Counter.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Counter.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to show a counter of the current row.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("counter")
+ * @Plugin(
+ *   id = "counter"
+ * )
  */
 class Counter extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Custom.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Custom.php
index f580733..4f0050d 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Custom.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Custom.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A handler to provide a field that is completely custom by the administrator.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("custom")
+ * @Plugin(
+ *   id = "custom"
+ * )
  */
 class Custom extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Date.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Date.php
index 9fa6d62..73b50f7 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Date.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Date.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A handler to provide proper displays for dates.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("date")
+ * @Plugin(
+ *   id = "date"
+ * )
  */
 class Date extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Dropbutton.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Dropbutton.php
index 491463d..c7cea41 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Dropbutton.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Dropbutton.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Provides a handler that renders links as dropbutton.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("dropbutton")
+ * @Plugin(
+ *   id = "dropbutton"
+ * )
  */
 class Dropbutton extends Links {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php
index c5e3e34..4b10d1d 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php
@@ -10,6 +10,7 @@
 use Drupal\views\Plugin\views\HandlerBase;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * @defgroup views_field_handlers Views field handlers
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/FileSize.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/FileSize.php
index 1bfa5ea..9c35a18 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/FileSize.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/FileSize.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Render a numeric value as a size.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("file_size")
+ * @Plugin(
+ *   id = "file_size"
+ * )
  */
 class FileSize extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/MachineName.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/MachineName.php
index 29b2658..6e7e7ba 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/MachineName.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/MachineName.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler whichs allows to show machine name content as human name.
@@ -17,7 +17,9 @@
  * - options callback: The function to call in order to generate the value options. If omitted, the options 'Yes' and 'No' will be used.
  * - options arguments: An array of arguments to pass to the options callback.
  *
- * @PluginID("machine_name")
+ * @Plugin(
+ *   id = "machine_name"
+ * )
  */
 class MachineName extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Markup.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Markup.php
index a93a62a..4129f98 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Markup.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Markup.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 
@@ -22,7 +22,9 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("markup")
+ * @Plugin(
+ *   id = "markup"
+ * )
  */
 class Markup extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Numeric.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Numeric.php
index 42a36e7..12e61a2 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Numeric.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Numeric.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Render a field as a numeric value
@@ -18,7 +18,9 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("numeric")
+ * @Plugin(
+ *   id = "numeric"
+ * )
  */
 class Numeric extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/PrerenderList.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/PrerenderList.php
index 1dfa85b..306fe89 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/PrerenderList.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/PrerenderList.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to provide a list of items.
@@ -19,7 +19,9 @@
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("prerender_list")
+ * @Plugin(
+ *   id = "prerender_list"
+ * )
  */
 class PrerenderList extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Serialized.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Serialized.php
index d1a9060..a1ffcf1 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Serialized.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Serialized.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to show data of serialized fields.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("serialized")
+ * @Plugin(
+ *   id = "serialized"
+ * )
  */
 class Serialized extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Standard.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Standard.php
index 0e98313..9b4c862 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Standard.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Standard.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Default implementation of the base field plugin.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("standard")
+ * @Plugin(
+ *   id = "standard"
+ * )
  */
 class Standard extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/TimeInterval.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/TimeInterval.php
index e8c514c..796efac 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/TimeInterval.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/TimeInterval.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A handler to provide proper displays for time intervals.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("time_interval")
+ * @Plugin(
+ *   id = "time_interval"
+ * )
  */
 class TimeInterval extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Url.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Url.php
index 3539d6f..b30e3ec 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Url.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Url.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Field handler to provide simple renderer that turns a URL into a clickable link.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("url")
+ * @Plugin(
+ *   id = "url"
+ * )
  */
 class Url extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/field/Xss.php b/core/modules/views/lib/Drupal/views/Plugin/views/field/Xss.php
index 4bf8a43..5fa8c31 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/field/Xss.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/field/Xss.php
@@ -8,14 +8,16 @@
 namespace Drupal\views\Plugin\views\field;
 
 use Drupal\views\Plugin\views\field\FieldPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A handler to run a field through simple XSS filtering.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("xss")
+ * @Plugin(
+ *   id = "xss"
+ * )
  */
 class Xss extends FieldPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/BooleanOperator.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/BooleanOperator.php
index e5327f1..20ee145 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/BooleanOperator.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/BooleanOperator.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 
@@ -27,7 +27,9 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("boolean")
+ * @Plugin(
+ *   id = "boolean"
+ * )
  */
 class BooleanOperator extends FilterPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/BooleanOperatorString.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/BooleanOperatorString.php
index d19fc6a..2e6f467 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/BooleanOperatorString.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/BooleanOperatorString.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Simple filter to handle matching of boolean values.
@@ -20,7 +20,9 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("boolean_string")
+ * @Plugin(
+ *   id = "boolean_string"
+ * )
  */
 class BooleanOperatorString extends BooleanOperator {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Broken.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Broken.php
index 701cabb..2ece6ca 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Broken.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Broken.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 
@@ -16,7 +16,9 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("broken")
+ * @Plugin(
+ *   id = "broken"
+ * )
  */
 class Broken extends FilterPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Bundle.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Bundle.php
index 1ce3e95..0fbe8d2 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Bundle.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Bundle.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 
@@ -16,7 +16,9 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("bundle")
+ * @Plugin(
+ *   id = "bundle"
+ * )
  */
 class Bundle extends InOperator {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Combine.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Combine.php
index a8d8de8..4a8b18e 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Combine.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Combine.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter handler which allows to search on multiple fields.
  *
  * @ingroup views_field_handlers
  *
- * @PluginID("combine")
+ * @Plugin(
+ *   id = "combine"
+ * )
  */
 class Combine extends String {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Date.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Date.php
index ea46efc..ae01e3b 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Date.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Date.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Filter to handle dates stored as a timestamp.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("date")
+ * @Plugin(
+ *   id = "date"
+ * )
  */
 class Date extends Numeric {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Equality.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Equality.php
index f6af850..541fca4 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Equality.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Equality.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Simple filter to handle equal to / not equal to filters
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("equality")
+ * @Plugin(
+ *   id = "equality"
+ * )
  */
 class Equality extends FilterPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/GroupByNumeric.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/GroupByNumeric.php
index 02aad33..559b183 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/GroupByNumeric.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/GroupByNumeric.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Simple filter to handle greater than/less than filters
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("groupby_numeric")
+ * @Plugin(
+ *   id = "groupby_numeric"
+ * )
  */
 class GroupByNumeric extends Numeric {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/InOperator.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/InOperator.php
index dfe89ea..5508f66 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/InOperator.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/InOperator.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 
@@ -20,7 +20,9 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("in_operator")
+ * @Plugin(
+ *   id = "in_operator"
+ * )
  */
 class InOperator extends FilterPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/ManyToOne.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/ManyToOne.php
index 1f3a672..c8b0111 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/ManyToOne.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/ManyToOne.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ManyToOneHelper;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Complex filter to handle filtering for many to one relationships,
@@ -22,7 +22,9 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("many_to_one")
+ * @Plugin(
+ *   id = "many_to_one"
+ * )
  */
 class ManyToOne extends InOperator {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Numeric.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Numeric.php
index 3c2f753..e6b27cf 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Numeric.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Numeric.php
@@ -8,14 +8,16 @@
 namespace Drupal\views\Plugin\views\filter;
 
 use Drupal\Core\Database\Database;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Simple filter to handle greater than/less than filters
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("numeric")
+ * @Plugin(
+ *   id = "numeric"
+ * )
  */
 class Numeric extends FilterPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Standard.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Standard.php
index a2328f3..4baee72 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/Standard.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/Standard.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Default implementation of the base filter plugin.
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("standard")
+ * @Plugin(
+ *   id = "standard"
+ * )
  */
 class Standard extends FilterPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/filter/String.php b/core/modules/views/lib/Drupal/views/Plugin/views/filter/String.php
index c80e39d..be3e132 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/filter/String.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/filter/String.php
@@ -8,7 +8,7 @@
 namespace Drupal\views\Plugin\views\filter;
 
 use Drupal\Core\Database\Database;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Basic textfield filter to handle string filtering commands
@@ -16,7 +16,9 @@
  *
  * @ingroup views_filter_handlers
  *
- * @PluginID("string")
+ * @Plugin(
+ *   id = "string"
+ * )
  */
 class String extends FilterPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/join/Standard.php b/core/modules/views/lib/Drupal/views/Plugin/views/join/Standard.php
index e4977d7..323d339 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/join/Standard.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/join/Standard.php
@@ -7,12 +7,14 @@
 
 namespace Drupal\views\Plugin\views\join;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Default implementation of the join plugin.
  *
- * @PluginID("standard")
+ * @Plugin(
+ *   id = "standard"
+ * )
  */
 class Standard extends JoinPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/join/Subquery.php b/core/modules/views/lib/Drupal/views/Plugin/views/join/Subquery.php
index 1249f94..0cb03c9 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/join/Subquery.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/join/Subquery.php
@@ -6,7 +6,7 @@
  */
 
 namespace Drupal\views\Plugin\views\join;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Join handler for relationships that join with a subquery as the left field.
@@ -17,7 +17,9 @@
  *   same as Join class above, except:
  *   - left_query: The subquery to use in the left side of the join clause.
  *
- * @PluginID("subquery")
+ * @Plugin(
+ *   id = "subquery"
+ * )
  */
 class Subquery extends JoinPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/relationship/Broken.php b/core/modules/views/lib/Drupal/views/Plugin/views/relationship/Broken.php
index c891f00..afddb4a 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/relationship/Broken.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/relationship/Broken.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\relationship;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A special handler to take the place of missing or broken handlers.
  *
  * @ingroup views_relationship_handlers
  *
- * @PluginID("broken")
+ * @Plugin(
+ *   id = "broken"
+ * )
  */
 class Broken extends RelationshipPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php b/core/modules/views/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php
index b5c236d..87376ee 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php
@@ -9,7 +9,7 @@
 
 use Drupal\Core\Database\Query\AlterableInterface;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Views;
 
 /**
@@ -60,7 +60,9 @@
  *
  * @ingroup views_relationship_handlers
  *
- * @PluginID("groupwise_max")
+ * @Plugin(
+ *   id = "groupwise_max"
+ * )
  */
 class GroupwiseMax extends RelationshipPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/relationship/Standard.php b/core/modules/views/lib/Drupal/views/Plugin/views/relationship/Standard.php
index c5fa8aa..9cd47e5 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/relationship/Standard.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/relationship/Standard.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\relationship;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Default implementation of the base relationship plugin.
  *
  * @ingroup views_relationship_handlers
  *
- * @PluginID("standard")
+ * @Plugin(
+ *   id = "standard"
+ * )
  */
 class Standard extends RelationshipPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/sort/Broken.php b/core/modules/views/lib/Drupal/views/Plugin/views/sort/Broken.php
index 341bc8b..25ab695 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/sort/Broken.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/sort/Broken.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\sort;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * A special handler to take the place of missing or broken handlers.
  *
  * @ingroup views_sort_handlers
  *
- * @PluginID("broken")
+ * @Plugin(
+ *   id = "broken"
+ * )
  */
 class Broken extends SortPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/sort/Date.php b/core/modules/views/lib/Drupal/views/Plugin/views/sort/Date.php
index c65768e..6ccd5fe 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/sort/Date.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/sort/Date.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\sort;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Basic sort handler for dates.
@@ -15,7 +15,9 @@
  * This handler enables granularity, which is the ability to make dates
  * equivalent based upon nearness.
  *
- * @PluginID("date")
+ * @Plugin(
+ *   id = "date"
+ * )
  */
 class Date extends SortPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/sort/GroupByNumeric.php b/core/modules/views/lib/Drupal/views/Plugin/views/sort/GroupByNumeric.php
index ad270f1..f0989f5 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/sort/GroupByNumeric.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/sort/GroupByNumeric.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\sort;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 
 /**
  * Handler for GROUP BY on simple numeric fields.
  *
- * @PluginID("groupby_numeric")
+ * @Plugin(
+ *   id = "groupby_numeric"
+ * )
  */
 class GroupByNumeric extends SortPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/sort/MenuHierarchy.php b/core/modules/views/lib/Drupal/views/Plugin/views/sort/MenuHierarchy.php
index d1cdb69..756b960 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/sort/MenuHierarchy.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/sort/MenuHierarchy.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\sort;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Views;
 
 
@@ -20,7 +20,9 @@
  *
  * This is only really useful for the {menu_links} table.
  *
- * @PluginID("menu_hierarchy")
+ * @Plugin(
+ *   id = "menu_hierarchy"
+ * )
  */
 class MenuHierarchy extends SortPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/sort/Random.php b/core/modules/views/lib/Drupal/views/Plugin/views/sort/Random.php
index fdc7db9..66792b5 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/sort/Random.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/sort/Random.php
@@ -7,12 +7,14 @@
 
 namespace Drupal\views\Plugin\views\sort;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Handle a random sort.
  *
- * @PluginID("random")
+ * @Plugin(
+ *   id = "random"
+ * )
  */
 class Random extends SortPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/sort/Standard.php b/core/modules/views/lib/Drupal/views/Plugin/views/sort/Standard.php
index 1a6cf69..038d47c 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/sort/Standard.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/sort/Standard.php
@@ -7,14 +7,16 @@
 
 namespace Drupal\views\Plugin\views\sort;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Default implementation of the base sort plugin.
  *
  * @ingroup views_sort_handlers
  *
- * @PluginID("standard")
+ * @Plugin(
+ *   id = "standard"
+ * )
  */
 class Standard extends SortPluginBase {
 
diff --git a/core/modules/views/lib/Drupal/views/Tests/Handler/HandlerAllTest.php b/core/modules/views/lib/Drupal/views/Tests/Handler/HandlerAllTest.php
index 4e77b35..7c6dec7 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Handler/HandlerAllTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Handler/HandlerAllTest.php
@@ -31,7 +31,6 @@ class HandlerAllTest extends HandlerTestBase {
     'field',
     'filter',
     'file',
-    'forum',
     'history',
     'language',
     'locale',
diff --git a/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php b/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php
index 9fbabe2..00c480e 100644
--- a/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/ViewExecutableTest.php
@@ -315,31 +315,23 @@ public function testDestroy() {
    * @param \Drupal\views\ViewExecutable $view
    */
   protected function assertViewDestroy($view) {
-    $reflection = new \ReflectionClass($view);
-    $defaults = $reflection->getDefaultProperties();
-    // The storage should remain.
-    unset($defaults['storage']);
-
-    foreach ($defaults as $property => $default) {
-      $this->assertIdentical($this->getProtectedProperty($view, $property), $default);
+    $this->assertFalse(isset($view->displayHandlers), 'Make sure all displays are destroyed');
+    $this->assertFalse(isset($view->filter), 'Make sure all filter handlers are destroyed');
+    $this->assertFalse(isset($view->field), 'Make sure all field handlers are destroyed');
+    $this->assertFalse(isset($view->argument), 'Make sure all argument handlers are destroyed');
+    $this->assertFalse(isset($view->relationship), 'Make sure all relationship handlers are destroyed');
+    $this->assertFalse(isset($view->sort), 'Make sure all sort handlers are destroyed');
+    $this->assertFalse(isset($view->area), 'Make sure all area handlers are destroyed');
+
+    $keys = array('current_display', 'display_handler', 'field', 'argument', 'filter', 'sort', 'relationship', 'header', 'footer', 'empty', 'query', 'result', 'inited', 'style_plugin', 'plugin_name', 'exposed_data', 'exposed_input', 'many_to_one_tables');
+    foreach ($keys as $key) {
+      $this->assertFalse(isset($view->{$key}), $key);
     }
-  }
-
-  /**
-   * Returns a protected property from a class instance.
-   *
-   * @param object $instance
-   *   The class instance to return the property from.
-   * @param string $property
-   *   The name of the property to return.
-   *
-   * @return mixed
-   *   The instance property value.
-   */
-  protected function getProtectedProperty($instance, $property) {
-    $reflection = new \ReflectionProperty($instance, $property);
-    $reflection->setAccessible(TRUE);
-    return $reflection->getValue($instance);
+    $this->assertEqual($view->built, FALSE);
+    $this->assertEqual($view->executed, FALSE);
+    $this->assertEqual($view->build_info, array());
+    $this->assertEqual($view->attachment_before, '');
+    $this->assertEqual($view->attachment_after, '');
   }
 
   /**
diff --git a/core/modules/views/lib/Drupal/views/ViewExecutable.php b/core/modules/views/lib/Drupal/views/ViewExecutable.php
index a7130bd..9a4ba48 100644
--- a/core/modules/views/lib/Drupal/views/ViewExecutable.php
+++ b/core/modules/views/lib/Drupal/views/ViewExecutable.php
@@ -1709,11 +1709,15 @@ public function createDuplicate() {
    * collected.
    */
   public function destroy() {
+    unset($this->displayHandlers);
+
     foreach ($this::viewsHandlerTypes() as $type => $info) {
       if (isset($this->$type)) {
-        foreach ($this->{$type} as $handler) {
-          $handler->destroy();
+        $handlers = &$this->$type;
+        foreach ($handlers as $id => $item) {
+          $handlers[$id]->destroy();
         }
+        unset($handlers);
       }
     }
 
@@ -1721,14 +1725,24 @@ public function destroy() {
       $this->style_plugin->destroy();
     }
 
-    $reflection = new \ReflectionClass($this);
-    $defaults = $reflection->getDefaultProperties();
-    // The storage should not be reset. This is not generated by the execution
-    // of a view.
-    unset($defaults['storage']);
-    foreach ($defaults as $property => $default) {
-      $this->{$property} = $default;
+    $keys = array('current_display', 'display_handler', 'displayHandlers', 'field', 'argument', 'filter', 'sort', 'relationship', 'header', 'footer', 'empty', 'query', 'result', 'inited', 'style_plugin', 'rowPlugin', 'plugin_name', 'exposed_data', 'exposed_input', 'many_to_one_tables');
+    foreach ($keys as $key) {
+      unset($this->$key);
     }
+
+    // These keys are checked by the next init, so instead of unsetting them,
+    // just set the default values.
+    $keys = array('items_per_page', 'offset', 'current_page');
+    foreach ($keys as $key) {
+      if (isset($this->$key)) {
+        $this->$key = NULL;
+      }
+    }
+
+    $this->built = $this->executed = FALSE;
+    $this->build_info = array();
+    $this->attachment_before = '';
+    $this->attachment_after = '';
   }
 
   /**
diff --git a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/area/TestExample.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/area/TestExample.php
index 8c7a7c0..38ec004 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/area/TestExample.php
+++ b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/area/TestExample.php
@@ -8,14 +8,16 @@
 namespace Drupal\views_test_data\Plugin\views\area;
 
 use Drupal\views\Plugin\views\area\AreaPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 
 /**
  * Test area plugin.
  *
  * @see Drupal\views\Tests\Handler\AreaTest
  *
- * @PluginID("test_example")
+ * @Plugin(
+ *   id = "test_example"
+ * )
  */
 class TestExample extends AreaPluginBase {
 
diff --git a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/field/FieldTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/field/FieldTest.php
index 14f856e..73c4779 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/field/FieldTest.php
+++ b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/field/FieldTest.php
@@ -7,11 +7,16 @@
 
 namespace Drupal\views_test_data\Plugin\views\field;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 
 /**
- * @PluginID("test_field")
+ * @Plugin(
+ *   id = "test_field",
+ *   title = @Translation("Test field plugin"),
+ *   help = @Translation("Provides a generic field test plugin.")
+ * )
  */
 class FieldTest extends FieldPluginBase {
 
diff --git a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/filter/FilterTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/filter/FilterTest.php
index 86f8214..6868262 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/filter/FilterTest.php
+++ b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/filter/FilterTest.php
@@ -7,11 +7,18 @@
 
 namespace Drupal\views_test_data\Plugin\views\filter;
 
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\filter\FilterPluginBase;
 
 /**
- * @PluginID("test_filter")
+ * @Plugin(
+ *   id = "test_filter",
+ *   title = @Translation("Test filter plugin"),
+ *   help = @Translation("Provides a generic filter test plugin."),
+ *   base = "node",
+ *   type = "type"
+ * )
  */
 class FilterTest extends FilterPluginBase {
 
diff --git a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/join/JoinTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/join/JoinTest.php
index e1c525c..728d861 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/join/JoinTest.php
+++ b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/join/JoinTest.php
@@ -8,13 +8,16 @@
 namespace Drupal\views_test_data\Plugin\views\join;
 
 use Drupal\views\Plugin\views\join\JoinPluginBase;
-use Drupal\Component\Annotation\PluginID;
+use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines a join test plugin.
  *
- * @PluginID("join_test")
+ * @Plugin(
+ *   id = "join_test",
+ *   title = @Translation("Join test")
+ * )
  */
 class JoinTest extends JoinPluginBase {
   /**
diff --git a/core/modules/views/views.services.yml b/core/modules/views/views.services.yml
index 7263f67..9865a85 100644
--- a/core/modules/views/views.services.yml
+++ b/core/modules/views/views.services.yml
@@ -3,10 +3,10 @@ services:
     class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [access, '%container.namespaces%']
   plugin.manager.views.area:
-    class: Drupal\views\Plugin\ViewsHandlerManager
+    class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [area, '%container.namespaces%']
   plugin.manager.views.argument:
-    class: Drupal\views\Plugin\ViewsHandlerManager
+    class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [argument, '%container.namespaces%']
   plugin.manager.views.argument_default:
     class: Drupal\views\Plugin\ViewsPluginManager
@@ -27,13 +27,13 @@ services:
     class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [exposed_form, '%container.namespaces%']
   plugin.manager.views.field:
-    class: Drupal\views\Plugin\ViewsHandlerManager
+    class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [field, '%container.namespaces%']
   plugin.manager.views.filter:
-    class: Drupal\views\Plugin\ViewsHandlerManager
+    class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [filter, '%container.namespaces%']
   plugin.manager.views.join:
-    class: Drupal\views\Plugin\ViewsHandlerManager
+    class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [join, '%container.namespaces%']
   plugin.manager.views.pager:
     class: Drupal\views\Plugin\ViewsPluginManager
@@ -42,13 +42,13 @@ services:
     class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [query, '%container.namespaces%']
   plugin.manager.views.relationship:
-    class: Drupal\views\Plugin\ViewsHandlerManager
+    class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [relationship, '%container.namespaces%']
   plugin.manager.views.row:
     class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [row, '%container.namespaces%']
   plugin.manager.views.sort:
-    class: Drupal\views\Plugin\ViewsHandlerManager
+    class: Drupal\views\Plugin\ViewsPluginManager
     arguments: [sort, '%container.namespaces%']
   plugin.manager.views.style:
     class: Drupal\views\Plugin\ViewsPluginManager
diff --git a/core/modules/xmlrpc/xmlrpc.inc b/core/modules/xmlrpc/xmlrpc.inc
index d529fba..b1c6f39 100644
--- a/core/modules/xmlrpc/xmlrpc.inc
+++ b/core/modules/xmlrpc/xmlrpc.inc
@@ -11,9 +11,6 @@
  * This version is made available under the GNU GPL License
  */
 
-use Guzzle\Http\Exception\BadResponseException;
-use Guzzle\Http\Exception\RequestException;
-
 /**
  * Turns a data structure into objects with 'data' and 'type' attributes.
  *
@@ -529,15 +526,15 @@ function xmlrpc_base64_get_xml($xmlrpc_base64) {
 /**
  * Performs one or more XML-RPC requests.
  *
- * @param string $url
+ * @param $url
  *   An absolute URL of the XML-RPC endpoint, e.g.,
  *   http://example.com/xmlrpc.php
- * @param array $args
+ * @param $args
  *   An associative array whose keys are the methods to call and whose values
  *   are the arguments to pass to the respective method. If multiple methods
  *   are specified, a system.multicall is performed.
- * @param array $headers
- *   (optional) An array of HTTP headers to pass along.
+ * @param $options
+ *   (optional) An array of options to pass along to drupal_http_request().
  *
  * @return
  *   A single response (single request) or an array of responses (multicall
@@ -546,7 +543,7 @@ function xmlrpc_base64_get_xml($xmlrpc_base64) {
  *   is returned, see xmlrpc_errno() and xmlrpc_error_msg() to get more
  *   information.
  */
-function _xmlrpc($url, array $args, array $headers = array()) {
+function _xmlrpc($url, $args, $options = array()) {
   xmlrpc_clear_error();
   if (count($args) > 1) {
     $multicall_args = array();
@@ -561,21 +558,16 @@ function _xmlrpc($url, array $args, array $headers = array()) {
     $args = $args[$method];
   }
   $xmlrpc_request = xmlrpc_request($method, $args);
-  $request = Drupal::httpClient()->post($url, $headers, $xmlrpc_request->xml);
-  $request->setHeader('Content-Type', 'text/xml');
-  try {
-    $response = $request->send();
-  }
-  catch (BadResponseException $exception) {
-    $response = $exception->getResponse();
-    xmlrpc_error($response->getStatusCode(), $response->getReasonPhrase());
-    return FALSE;
-  }
-  catch (RequestException $exception) {
-    xmlrpc_error(NULL, $exception->getMethod());
+  // Required options which will replace any that are passed in.
+  $options['method'] = 'POST';
+  $options['headers']['Content-Type'] = 'text/xml';
+  $options['data'] = $xmlrpc_request->xml;
+  $result = drupal_http_request($url, $options);
+  if ($result->code != 200) {
+    xmlrpc_error($result->code, $result->error);
     return FALSE;
   }
-  $message = xmlrpc_message($response->getBody(TRUE));
+  $message = xmlrpc_message($result->data);
   // Now parse what we've got back
   if (!xmlrpc_message_parse($message)) {
     // XML error
diff --git a/core/modules/xmlrpc/xmlrpc.module b/core/modules/xmlrpc/xmlrpc.module
index fe1fcbc..f21b487 100644
--- a/core/modules/xmlrpc/xmlrpc.module
+++ b/core/modules/xmlrpc/xmlrpc.module
@@ -44,14 +44,14 @@ function xmlrpc_menu() {
  * ));
  * @endcode
  *
- * @param string $url
+ * @param $url
  *   An absolute URL of the XML-RPC endpoint.
- * @param array $args
+ * @param $args
  *   An associative array whose keys are the methods to call and whose values
  *   are the arguments to pass to the respective method. If multiple methods
  *   are specified, a system.multicall is performed.
- * @param array $headers
- *   (optional) An array of headers to pass along.
+ * @param $options
+ *   (optional) An array of options to pass along to drupal_http_request().
  *
  * @return
  *   For one request:
@@ -62,7 +62,7 @@ function xmlrpc_menu() {
  *     returned by the method called, or an xmlrpc_error object if the call
  *     failed. See xmlrpc_error().
  */
-function xmlrpc($url, array $args, array $headers = array()) {
+function xmlrpc($url, $args, $options = array()) {
   module_load_include('inc', 'xmlrpc');
-  return _xmlrpc($url, $args, $headers);
+  return _xmlrpc($url, $args, $options);
 }
