diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
index 1922e6d..d584bc1 100644
--- a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
+++ b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
@@ -127,6 +127,9 @@ public function serialize() {
     return parent::serialize();
   }
 
+  /**
+   * {@inheritdoc}
+   */
   public function __destruct() {
     if ($this->needsCleanup) {
       $this->nextIdDelete();
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/views/row/Rss.php b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/views/row/Rss.php
index 98709ea..a4c5dfc 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/views/row/Rss.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/views/row/Rss.php
@@ -8,13 +8,13 @@
 namespace Drupal\aggregator\Plugin\views\row;
 
 use Drupal\views\Plugin\views\row\RowPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines a row plugin which loads an aggregator item and renders as RSS.
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "aggregator_rss",
  *   module = "aggregator",
  *   theme = "views_view_row_rss",
diff --git a/core/modules/block/lib/Drupal/block/Plugin/views/display/Block.php b/core/modules/block/lib/Drupal/block/Plugin/views/display/Block.php
index 4319878..39d1b8f 100644
--- a/core/modules/block/lib/Drupal/block/Plugin/views/display/Block.php
+++ b/core/modules/block/lib/Drupal/block/Plugin/views/display/Block.php
@@ -8,7 +8,7 @@
 
 namespace Drupal\block\Plugin\views\display;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplay;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\Block\ViewsBlock;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
@@ -18,13 +18,13 @@
  *
  * @ingroup views_display_plugins
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "block",
  *   module = "block",
  *   title = @Translation("Block"),
+ *   uses_hook_block = TRUE,
  *   help = @Translation("Display the view as a block."),
  *   theme = "views_view",
- *   uses_hook_block = TRUE,
  *   contextual_links_locations = {"block"},
  *   admin = @Translation("Block")
  * )
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/row/Rss.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/row/Rss.php
index eeaec0b..90872b4 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/row/Rss.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/row/Rss.php
@@ -8,13 +8,13 @@
 namespace Drupal\comment\Plugin\views\row;
 
 use Drupal\views\Plugin\views\row\RowPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Plugin which formats the comments as RSS items.
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "comment_rss",
  *   module = "comment",
  *   title = @Translation("Comment"),
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/wizard/Comment.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/wizard/Comment.php
index 6194d29..410025b 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/views/wizard/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/wizard/Comment.php
@@ -8,7 +8,7 @@
 namespace Drupal\comment\Plugin\views\wizard;
 
 use Drupal\views\Plugin\views\wizard\WizardPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsWizard;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -18,7 +18,7 @@
 /**
  * Tests creating comment views with the wizard.
  *
- * @Plugin(
+ * @ViewsWizard(
  *   id = "comment",
  *   module = "comment",
  *   base_table = "comment",
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/display/EntityReference.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/display/EntityReference.php
index fc46aa6..81e3c4e 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/display/EntityReference.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/display/EntityReference.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\entity_reference\Plugin\views\display;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplay;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 
@@ -20,7 +20,7 @@
  *
  * @ingroup views_display_plugins
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "entity_reference",
  *   title = @Translation("Entity Reference"),
  *   admin = @Translation("Entity Reference Source"),
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/row/EntityReference.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/row/EntityReference.php
index 0696896..f7c639a 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/row/EntityReference.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/row/EntityReference.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\entity_reference\Plugin\views\row;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\row\Fields;
 
@@ -16,7 +16,7 @@
  *
  * @ingroup views_row_plugins
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "entity_reference",
  *   title = @Translation("Entity Reference inline fields"),
  *   help = @Translation("Displays the fields with an optional template."),
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/style/EntityReference.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/style/EntityReference.php
index c606856..2db25bc 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/style/EntityReference.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/views/style/EntityReference.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\entity_reference\Plugin\views\style;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\style\StylePluginBase;
 
@@ -16,7 +16,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "entity_reference",
  *   title = @Translation("Entity Reference list"),
  *   help = @Translation("Returns results as a PHP array of labels and rendered rows."),
diff --git a/core/modules/file/lib/Drupal/file/Plugin/views/wizard/File.php b/core/modules/file/lib/Drupal/file/Plugin/views/wizard/File.php
index da9809c..7d8c4cd 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/views/wizard/File.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/views/wizard/File.php
@@ -8,13 +8,13 @@
 namespace Drupal\file\Plugin\views\wizard;
 
 use Drupal\views\Plugin\views\wizard\WizardPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsWizard;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Tests creating managed files views with the wizard.
  *
- * @Plugin(
+ * @ViewsWizard(
  *   id = "file_managed",
  *   module = "file",
  *   base_table = "file_managed",
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/argument_default/Node.php b/core/modules/node/lib/Drupal/node/Plugin/views/argument_default/Node.php
index 6886332..b981800 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/argument_default/Node.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/argument_default/Node.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\node\Plugin\views\argument_default;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentDefault;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase;
 
@@ -16,7 +16,7 @@
  *
  * This plugin actually has no options so it odes not need to do a great deal.
  *
- * @Plugin(
+ * @ViewsArgumentDefault(
  *   id = "node",
  *   module = "node",
  *   title = @Translation("Content ID from URL")
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/argument_validator/Node.php b/core/modules/node/lib/Drupal/node/Plugin/views/argument_validator/Node.php
index 36f3ab0..4f02896 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/argument_validator/Node.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/argument_validator/Node.php
@@ -7,14 +7,14 @@
 
 namespace Drupal\node\Plugin\views\argument_validator;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentValidator;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase;
 
 /**
  * Validate whether an argument is an acceptable node.
  *
- * @Plugin(
+ * @ViewsArgumentValidator(
  *   id = "node",
  *   module = "node",
  *   title = @Translation("Content")
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/row/Rss.php b/core/modules/node/lib/Drupal/node/Plugin/views/row/Rss.php
index 4d824bd..03d0882 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/row/Rss.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/row/Rss.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\node\Plugin\views\row;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\row\RowPluginBase;
 
@@ -15,7 +15,7 @@
  * Plugin which performs a node_view on the resulting object
  * and formats it as an RSS item.
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "node_rss",
  *   title = @Translation("Content"),
  *   help = @Translation("Display the content with standard node view."),
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/wizard/Node.php b/core/modules/node/lib/Drupal/node/Plugin/views/wizard/Node.php
index acba6b6..5cf83e4 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/wizard/Node.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/wizard/Node.php
@@ -8,7 +8,7 @@
 namespace Drupal\node\Plugin\views\wizard;
 
 use Drupal\views\Plugin\views\wizard\WizardPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsWizard;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -18,14 +18,13 @@
 /**
  * Tests creating node views with the wizard.
  *
- * @Plugin(
+ * @ViewsWizard(
  *   id = "node",
  *   module = "node",
  *   base_table = "node",
  *   title = @Translation("Content")
  * )
  */
-
 class Node extends WizardPluginBase {
 
   /**
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/wizard/NodeRevision.php b/core/modules/node/lib/Drupal/node/Plugin/views/wizard/NodeRevision.php
index 757748d..1d73184 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/wizard/NodeRevision.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/wizard/NodeRevision.php
@@ -8,7 +8,7 @@
 namespace Drupal\node\Plugin\views\wizard;
 
 use Drupal\views\Plugin\views\wizard\WizardPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsWizard;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -18,7 +18,7 @@
 /**
  * Tests creating node revision views with the wizard.
  *
- * @Plugin(
+ * @ViewsWizard(
  *   id = "node_revision",
  *   module = "node",
  *   base_table = "node_field_revision",
diff --git a/core/modules/php/lib/Drupal/php/Plugin/views/argument_default/Php.php b/core/modules/php/lib/Drupal/php/Plugin/views/argument_default/Php.php
index 1377dec..491d001 100644
--- a/core/modules/php/lib/Drupal/php/Plugin/views/argument_default/Php.php
+++ b/core/modules/php/lib/Drupal/php/Plugin/views/argument_default/Php.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\php\Plugin\views\argument_default;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentDefault;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase;
 
@@ -15,7 +15,7 @@
 /**
  * Default argument plugin to provide a PHP code block.
  *
- * @Plugin(
+ * @ViewsArgumentDefault(
  *   id = "php",
  *   module = "php",
  *   title = @Translation("PHP Code")
diff --git a/core/modules/php/lib/Drupal/php/Plugin/views/argument_validator/Php.php b/core/modules/php/lib/Drupal/php/Plugin/views/argument_validator/Php.php
index 057ea4b..c352cdc 100644
--- a/core/modules/php/lib/Drupal/php/Plugin/views/argument_validator/Php.php
+++ b/core/modules/php/lib/Drupal/php/Plugin/views/argument_validator/Php.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\php\Plugin\views\argument_validator;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentValidator;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase;
 
@@ -15,7 +15,7 @@
 /**
  * Provide PHP code to validate whether or not an argument is ok.
  *
- * @Plugin(
+ * @ViewsArgumentValidator(
  *   id = "php",
  *   module = "php",
  *   title = @Translation("PHP Code")
diff --git a/core/modules/rest/lib/Drupal/rest/Plugin/views/display/RestExport.php b/core/modules/rest/lib/Drupal/rest/Plugin/views/display/RestExport.php
index 33a7e6b..59dc5416 100644
--- a/core/modules/rest/lib/Drupal/rest/Plugin/views/display/RestExport.php
+++ b/core/modules/rest/lib/Drupal/rest/Plugin/views/display/RestExport.php
@@ -7,7 +7,8 @@
 
 namespace Drupal\rest\Plugin\views\display;
 
-use Drupal\Component\Annotation\Plugin;
+
+use Drupal\views\Annotation\ViewsDisplay;
 use Drupal\Core\Annotation\Translation;
 use Drupal\Core\ContentNegotiation;
 use Drupal\views\ViewExecutable;
@@ -22,7 +23,7 @@
  *
  * @ingroup views_display_plugins
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "rest_export",
  *   module = "rest",
  *   title = @Translation("REST export"),
diff --git a/core/modules/rest/lib/Drupal/rest/Plugin/views/row/DataEntityRow.php b/core/modules/rest/lib/Drupal/rest/Plugin/views/row/DataEntityRow.php
index d806395..2935e66 100644
--- a/core/modules/rest/lib/Drupal/rest/Plugin/views/row/DataEntityRow.php
+++ b/core/modules/rest/lib/Drupal/rest/Plugin/views/row/DataEntityRow.php
@@ -9,7 +9,7 @@
 
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\row\RowPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -17,7 +17,7 @@
  *
  * @ingroup views_row_plugins
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "data_entity",
  *   module = "rest",
  *   title = @Translation("Entity"),
diff --git a/core/modules/rest/lib/Drupal/rest/Plugin/views/row/DataFieldRow.php b/core/modules/rest/lib/Drupal/rest/Plugin/views/row/DataFieldRow.php
index 2020486..00b900a 100644
--- a/core/modules/rest/lib/Drupal/rest/Plugin/views/row/DataFieldRow.php
+++ b/core/modules/rest/lib/Drupal/rest/Plugin/views/row/DataFieldRow.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\row\RowPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -18,7 +18,7 @@
  *
  * @ingroup views_row_plugins
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "data_field",
  *   module = "rest",
  *   title = @Translation("Fields"),
diff --git a/core/modules/rest/lib/Drupal/rest/Plugin/views/style/Serializer.php b/core/modules/rest/lib/Drupal/rest/Plugin/views/style/Serializer.php
index c3e0b5d..d63951f 100644
--- a/core/modules/rest/lib/Drupal/rest/Plugin/views/style/Serializer.php
+++ b/core/modules/rest/lib/Drupal/rest/Plugin/views/style/Serializer.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\style\StylePluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\Serializer\SerializerInterface;
@@ -20,7 +20,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "serializer",
  *   module = "rest",
  *   title = @Translation("Serializer"),
diff --git a/core/modules/search/lib/Drupal/search/Plugin/views/row/SearchRow.php b/core/modules/search/lib/Drupal/search/Plugin/views/row/SearchRow.php
index f12e2c6..4ba8673 100644
--- a/core/modules/search/lib/Drupal/search/Plugin/views/row/SearchRow.php
+++ b/core/modules/search/lib/Drupal/search/Plugin/views/row/SearchRow.php
@@ -8,17 +8,17 @@
 namespace Drupal\search\Plugin\views\row;
 
 use Drupal\views\Plugin\views\row\RowPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Plugin which performs a node_view on the resulting object.
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "search_view",
  *   module = "search",
  *   title = @Translation("Search"),
- *   no_uid = TRUE
+ *   help = @Translation("Provides a row plugin to display search results.")
  * )
  */
 class SearchRow extends RowPluginBase {
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_default/Tid.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_default/Tid.php
index 0257435..f7b4be1 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_default/Tid.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_default/Tid.php
@@ -9,14 +9,14 @@
 
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentDefault;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase;
 
 /**
  * Taxonomy tid default argument.
  *
- * @Plugin(
+ * @ViewsArgumentDefault(
  *   id = "taxonomy_tid",
  *   module = "taxonomy",
  *   title = @Translation("Taxonomy term ID from URL")
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_validator/Term.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_validator/Term.php
index 7491199..93e6c8e 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_validator/Term.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_validator/Term.php
@@ -9,14 +9,14 @@
 
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentValidator;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase;
 
 /**
  * Validate whether an argument is an acceptable node.
  *
- * @Plugin(
+ * @ViewsArgumentValidator(
  *   id = "taxonomy_term",
  *   module = "taxonomy",
  *   title = @Translation("Taxonomy term")
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/wizard/TaxonomyTerm.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/wizard/TaxonomyTerm.php
index 770fee1..d9409ae 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/wizard/TaxonomyTerm.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/wizard/TaxonomyTerm.php
@@ -8,13 +8,13 @@
 namespace Drupal\taxonomy\Plugin\views\wizard;
 
 use Drupal\views\Plugin\views\wizard\WizardPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsWizard;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Tests creating taxonomy views with the wizard.
  *
- * @Plugin(
+ * @ViewsWizard(
  *   id = "taxonomy_term",
  *   module = "taxonomy",
  *   base_table = "taxonomy_term_data",
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/access/Permission.php b/core/modules/user/lib/Drupal/user/Plugin/views/access/Permission.php
index d4e2933..3c75fed 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/access/Permission.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/access/Permission.php
@@ -7,7 +7,8 @@
 
 namespace Drupal\user\Plugin\views\access;
 
-use Drupal\Component\Annotation\Plugin;
+
+use Drupal\views\Annotation\ViewsAccess;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\views\Plugin\views\access\AccessPluginBase;
 use Drupal\Core\Annotation\Translation;
@@ -18,7 +19,7 @@
  *
  * @ingroup views_access_plugins
  *
- * @Plugin(
+ * @ViewsAccess(
  *   id = "perm",
  *   title = @Translation("Permission"),
  *   help = @Translation("Access will be granted to users with the specified permission string.")
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/access/Role.php b/core/modules/user/lib/Drupal/user/Plugin/views/access/Role.php
index 2ba244a..1bac7f1 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/access/Role.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/access/Role.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\user\Plugin\views\access;
 
-use Drupal\Component\Annotation\Plugin;
 use Drupal\views\Plugin\views\access\AccessPluginBase;
+use Drupal\views\Annotation\ViewsAccess;
 use Drupal\Core\Annotation\Translation;
 use Symfony\Component\Routing\Route;
 use Drupal\Core\Session\AccountInterface;
@@ -18,7 +18,7 @@
  *
  * @ingroup views_access_plugins
  *
- * @Plugin(
+ * @ViewsAccess(
  *   id = "role",
  *   title = @Translation("Role"),
  *   help = @Translation("Access will be granted to users with any of the specified roles.")
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/argument_default/CurrentUser.php b/core/modules/user/lib/Drupal/user/Plugin/views/argument_default/CurrentUser.php
index 8ffac71..bc9372f 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/argument_default/CurrentUser.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/argument_default/CurrentUser.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Plugin\views\argument_default;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentDefault;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase;
 
@@ -16,7 +16,7 @@
  *
  * This plugin actually has no options so it odes not need to do a great deal.
  *
- * @Plugin(
+ * @ViewsArgumentDefault(
  *   id = "current_user",
  *   module = "user",
  *   title = @Translation("User ID from logged in user")
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/argument_default/User.php b/core/modules/user/lib/Drupal/user/Plugin/views/argument_default/User.php
index f58c641..dd4be23 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/argument_default/User.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/argument_default/User.php
@@ -8,13 +8,14 @@
 namespace Drupal\user\Plugin\views\argument_default;
 
 use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentDefault;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase;
 
 /**
  * Default argument plugin to extract a user via menu_get_object.
  *
- * @Plugin(
+ * @ViewsArgumentDefault(
  *   id = "user",
  *   module = "user",
  *   title = @Translation("User ID from URL")
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/argument_validator/User.php b/core/modules/user/lib/Drupal/user/Plugin/views/argument_validator/User.php
index d014602..8268aa8 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/argument_validator/User.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/argument_validator/User.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Plugin\views\argument_validator;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentValidator;
 use Drupal\Core\Annotation\Translation;
 use Drupal\Core\Database\Connection;
 use Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase;
@@ -20,7 +20,7 @@
  * converts either one into the user's UID.  This validator also sets the
  * argument's title to the username.
  *
- * @Plugin(
+ * @ViewsArgumentValidator(
  *   id = "user",
  *   module = "user",
  *   title = @Translation("User")
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/wizard/Users.php b/core/modules/user/lib/Drupal/user/Plugin/views/wizard/Users.php
index b524259..f0121c9 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/wizard/Users.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/wizard/Users.php
@@ -8,7 +8,7 @@
 namespace Drupal\user\Plugin\views\wizard;
 
 use Drupal\views\Plugin\views\wizard\WizardPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsWizard;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -18,7 +18,7 @@
 /**
  * Tests creating user views with the wizard.
  *
- * @Plugin(
+ * @ViewsWizard(
  *   id = "users",
  *   module = "user",
  *   base_table = "users",
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsAccess.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsAccess.php
new file mode 100644
index 0000000..6917904
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsAccess.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsAccess.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views access plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\access\AccessPluginBase
+ */
+class ViewsAccess extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help = '';
+
+  /**
+   * The types of the display this plugin can be used with.
+   *
+   * For example the Feed display defines the type 'feed', so only rss style
+   * and row plugins can be used in the views UI.
+   *
+   * @var array
+   */
+  public $display_types;
+
+  /**
+   * The base tables on which this access plugin can be used.
+   *
+   * If no base table is specified the plugin can be used with all tables.
+   *
+   * @var array
+   */
+  public $base;
+
+  /**
+   * Whether the plugin should be not selectable in the UI.
+   *
+   * If set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentDefault.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentDefault.php
new file mode 100644
index 0000000..2910a58
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentDefault.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsArgumentDefault.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views argument default plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase
+ */
+class ViewsArgumentDefault extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * Whether the plugin should be not selectable in the UI.
+   *
+   * If it's set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentValidator.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentValidator.php
new file mode 100644
index 0000000..ae2d3f2
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentValidator.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsArgumentValidator.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views argument default plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase
+ */
+class ViewsArgumentValidator extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * Whether the plugin should be not selectable in the UI.
+   *
+   * If it's set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsCache.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsCache.php
new file mode 100644
index 0000000..d092942
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsCache.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsCache.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views cache plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\cache\CachePluginBase
+ */
+class ViewsCache extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help = '';
+
+  /**
+   * The types of the display this plugin can be used with.
+   *
+   * For example the Feed display defines the type 'feed', so only rss style
+   * and row plugins can be used in the views UI.
+   *
+   * @var array
+   */
+  public $display_types;
+
+  /**
+   * The base tables on which this cache plugin can be used.
+   *
+   * If no base table is specified the plugin can be used with all tables.
+   *
+   * @var array
+   */
+  public $base;
+
+  /**
+   * Whether the plugin should be not selectable in the UI.
+   *
+   * If it's set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php
new file mode 100644
index 0000000..fc6652e
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php
@@ -0,0 +1,132 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsDisplay.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views display plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\display\DisplayPluginBase
+ */
+class ViewsDisplay extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * The administrative name of the display.
+   *
+   * The name is displayed on the Views overview and also used as default name
+   * for new displays.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $admin = '';
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help = '';
+
+  /**
+   * Whether or not to use hook_menu() to register a route.
+   *
+   * @var bool
+   */
+  public $uses_hook_menu;
+
+  /**
+   * Does the display plugin registers routes to the route.
+   *
+   * @var bool
+   */
+  public $uses_route;
+
+  /**
+   * Does the display plugin provide blocks.
+   *
+   * @var bool
+   */
+  public $uses_hook_block;
+
+  /**
+   * A list of places where contextual links should be added.
+   * For example:
+   * @code
+   * array(
+   *   'page',
+   *   'block',
+   * )
+   * @endcode
+   *
+   * If you don't specify it there will be contextual links rendered for all
+   * displays of a view. If this is not set or regions have been specified,
+   * views will display an option to 'hide contextual links'. Use an empty
+   * array to disable.
+   *
+   * @var array
+   */
+  public $contextual_links_locations;
+
+  /**
+   * The base tables on which this display plugin can be used.
+   *
+   * If no base table is specified the plugin can be used with all tables.
+   *
+   * @var array
+   */
+  public $base;
+
+  /**
+   * The theme function used to render the display's output.
+   *
+   * @return string
+   */
+  public $theme;
+
+  /**
+   * Whether the plugin should be not selectable in the UI.
+   *
+   * If it's set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplayExtender.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplayExtender.php
new file mode 100644
index 0000000..5eceb64
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplayExtender.php
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsDisplayExtender.
+ */
+
+namespace Drupal\views\Annotation;
+
+/**
+ * Defines a Plugin annotation object for views display extender plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\display_extender\DisplayExtenderPluginBase
+ */
+class ViewsDisplayExtender extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help = '';
+
+  /**
+   * Whether or not the plugin is selectable in the UI.
+   *
+   * If it's set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsExposedForm.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsExposedForm.php
new file mode 100644
index 0000000..fd9376b
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsExposedForm.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsExposedForm.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views exposed form plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase
+ */
+class ViewsExposedForm extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help = '';
+
+  /**
+   * The types of the display this plugin can be used with.
+   *
+   * For example the Feed display defines the type 'feed', so only rss style
+   * and row plugins can be used in the views UI.
+   *
+   * @var array
+   */
+  public $display_types;
+
+  /**
+   * The base tables on which this exposed form plugin can be used.
+   *
+   * If no base table is specified the plugin can be used with all tables.
+   *
+   * @var array
+   */
+  public $base;
+
+  /**
+   * Whether the plugin should be not selectable in the UI.
+   *
+   * If it's set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsPager.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsPager.php
new file mode 100644
index 0000000..2466a57
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsPager.php
@@ -0,0 +1,90 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsPager.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views pager plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\pager\PagerPluginBase
+ */
+class ViewsPager extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help = '';
+
+  /**
+   * The theme function used to render the pager's output.
+   *
+   * @return string
+   */
+  public $theme;
+
+  /**
+   * The types of the display this plugin can be used with.
+   *
+   * For example the Feed display defines the type 'feed', so only rss style
+   * and row plugins can be used in the views UI.
+   *
+   * @var array
+   */
+  public $display_types;
+
+  /**
+   * The base tables on which this pager plugin can be used.
+   *
+   * If no base table is specified the plugin can be used with all tables.
+   *
+   * @var array
+   */
+  public $base;
+
+  /**
+   * Whether the plugin should be not selectable in the UI.
+   *
+   * If it's set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsPluginAnnotationBase.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsPluginAnnotationBase.php
new file mode 100644
index 0000000..9f265f4
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsPluginAnnotationBase.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsPluginAnnotationBase.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\Component\Annotation\AnnotationInterface;
+use Drupal\Component\Annotation\Plugin;
+
+/**
+ * Defines an abstract base class for all views plugin annotations.
+ */
+abstract class ViewsPluginAnnotationBase extends Plugin implements AnnotationInterface {
+
+  /**
+   * The module the plugin is defined by.
+   *
+   * @var string
+   */
+  public $module = 'views';
+
+  /**
+   * A class to make the plugin derivative aware.
+   *
+   * @var string
+   *
+   * @see \Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator
+   */
+  public $derivative;
+
+  /**
+   * Whether or not to register a theme function automatically.
+   *
+   * @var bool (optional)
+   */
+  public $register_theme = TRUE;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsQuery.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsQuery.php
new file mode 100644
index 0000000..5be9806
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsQuery.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsQuery.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views query plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\query\QueryPluginBase
+ */
+class ViewsQuery extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help = '';
+
+  /**
+   * Whether the plugin should be not selectable in the UI.
+   *
+   * If it's set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsRow.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsRow.php
new file mode 100644
index 0000000..43d8eeb
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsRow.php
@@ -0,0 +1,88 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsRow.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views row plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\row\RowPluginBase
+ */
+class ViewsRow extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help = '';
+
+  /**
+   * The theme function used to render the row output.
+   *
+   * @return string
+   */
+  public $theme;
+
+  /**
+   * The base tables on which this row plugin can be used.
+   *
+   * @var array
+   */
+  public $base;
+
+  /**
+   * The types of the display this plugin can be used with.
+   *
+   * For example the Feed display defines the type 'feed', so only rss style
+   * and row plugins can be used in the views UI.
+   *
+   * @var array
+   */
+  public $display_types;
+
+  /**
+   * Whether the plugin should be not selectable in the UI.
+   *
+   * If it's set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsStyle.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsStyle.php
new file mode 100644
index 0000000..386f36e
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsStyle.php
@@ -0,0 +1,90 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsStyle.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views style plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\style\StylePluginBase
+ */
+class ViewsStyle extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help = '';
+
+  /**
+   * The theme function used to render the style output.
+   *
+   * @var string
+   */
+  public $theme;
+
+  /**
+   * The types of the display this plugin can be used with.
+   *
+   * For example the Feed display defines the type 'feed', so only rss style
+   * and row plugins can be used in the views UI.
+   *
+   * @var array
+   */
+  public $display_types;
+
+  /**
+   * The base tables on which this style plugin can be used.
+   *
+   * If no base table is specified the plugin can be used with all tables.
+   *
+   * @var array
+   */
+  public $base;
+
+  /**
+   * Whether the plugin should be not selectable in the UI.
+   *
+   * If it's set to TRUE, you can still use it via the API in config files.
+   *
+   * @var bool
+   */
+  public $no_ui;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsWizard.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsWizard.php
new file mode 100644
index 0000000..9486804
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsWizard.php
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsWizard.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\views\Annotation\ViewsPluginAnnotationBase;
+
+/**
+ * Defines a Plugin annotation object for views wizard plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\wizard\WizardPluginBase
+ */
+class ViewsWizard extends ViewsPluginAnnotationBase {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The plugin title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $title = '';
+
+  /**
+   * (optional) The short title used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $short_title = '';
+
+  /**
+   * The base tables on which this wizard is used.
+   *
+   * @var array
+   */
+  public $base_table;
+
+}
diff --git a/core/modules/views/lib/Drupal/views/Plugin/ViewsPluginManager.php b/core/modules/views/lib/Drupal/views/Plugin/ViewsPluginManager.php
index e53e1ad..2aa1ab0 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/ViewsPluginManager.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/ViewsPluginManager.php
@@ -7,18 +7,16 @@
 
 namespace Drupal\views\Plugin;
 
-use Drupal\Component\Plugin\PluginManagerBase;
-use Drupal\Core\Plugin\Discovery\ContainerDerivativeDiscoveryDecorator;
-use Drupal\Component\Plugin\Discovery\ProcessDecorator;
-use Drupal\Core\Plugin\Discovery\AlterDecorator;
-use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery;
-use Drupal\Core\Plugin\Discovery\CacheDecorator;
-use Drupal\Core\Plugin\Factory\ContainerFactory;
+use Drupal\Core\Cache\CacheBackendInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Language\LanguageManager;
+use Drupal\Core\Plugin\DefaultPluginManager;
+use Symfony\Component\DependencyInjection\Container;
 
 /**
  * Plugin type manager for all views plugins.
  */
-class ViewsPluginManager extends PluginManagerBase {
+class ViewsPluginManager extends DefaultPluginManager {
 
   /**
    * Constructs a ViewsPluginManager object.
@@ -28,22 +26,25 @@ class ViewsPluginManager extends PluginManagerBase {
    * @param \Traversable $namespaces
    *   An object that implements \Traversable which contains the root paths
    *   keyed by the corresponding namespace to look for plugin implementations,
+   * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend
+   *   Cache backend instance to use.
+   * @param \Drupal\Core\Language\LanguageManager $language_manager
+   *   The language manager.
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   *   The module handler to invoke the alter hook with.
    */
-  public function __construct($type, \Traversable $namespaces) {
-    $this->discovery = new AnnotatedClassDiscovery("Plugin/views/$type", $namespaces);
-    $this->discovery = new ContainerDerivativeDiscoveryDecorator($this->discovery);
-    $this->discovery = new ProcessDecorator($this->discovery, array($this, 'processDefinition'));
-    $this->discovery = new AlterDecorator($this->discovery, 'views_plugins_' . $type);
-    $this->discovery = new CacheDecorator($this->discovery, 'views:' . $type, 'views_info');
-
-    $this->factory = new ContainerFactory($this);
+  public function __construct($type, \Traversable $namespaces, CacheBackendInterface $cache_backend, LanguageManager $language_manager, ModuleHandlerInterface $module_handler) {
+    $annotation_namespaces = array('Drupal\views\Annotation' => $namespaces['Drupal\views']);
+    $plugin_definition_annotation_name = 'Drupal\views\Annotation\Views' . Container::camelize($type);
+    parent::__construct("Plugin/views/$type", $namespaces, $annotation_namespaces, $plugin_definition_annotation_name);
 
     $this->defaults += array(
       'parent' => 'parent',
       'plugin_type' => $type,
-      'module' => 'views',
-      'register_theme' => TRUE,
     );
+
+    $this->alterInfo($module_handler, 'views_plugins_' . $type);
+    $this->setCacheBackend($cache_backend, $language_manager, 'views:' . $type);
   }
 
 }
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/PluginBase.php b/core/modules/views/lib/Drupal/views/Plugin/views/PluginBase.php
index 285f53a..2d9a0e4 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/PluginBase.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/PluginBase.php
@@ -241,7 +241,8 @@ public function summaryTitle() {
    * This appears on the ui beside each plugin and beside the settings link.
    */
   public function pluginTitle() {
-    if (isset($this->definition['short_title'])) {
+    // Short_title is optional so its defaults to an empty string.
+    if (!empty($this->definition['short_title'])) {
       return check_plain($this->definition['short_title']);
     }
     return check_plain($this->definition['title']);
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/access/None.php b/core/modules/views/lib/Drupal/views/Plugin/views/access/None.php
index 6df34c7..f74e470 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/access/None.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/access/None.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\views\Plugin\views\access;
 
+use Drupal\views\Annotation\ViewsAccess;
 use Drupal\Core\Annotation\Translation;
-use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Session\AccountInterface;
 
 use Symfony\Component\Routing\Route;
@@ -18,7 +18,7 @@
  *
  * @ingroup views_access_plugins
  *
- * @Plugin(
+ * @ViewsAccess(
  *   id = "none",
  *   title = @Translation("None"),
  *   help = @Translation("Will be available to all users.")
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Fixed.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Fixed.php
index d825dc7..ed2b20b 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Fixed.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Fixed.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\argument_default;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentDefault;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_argument_default_plugins
  *
- * @Plugin(
+ * @ViewsArgumentDefault(
  *   id = "fixed",
  *   title = @Translation("Fixed")
  * )
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Raw.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Raw.php
index a3d6650..0b2f60d 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Raw.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Raw.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\argument_default;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentDefault;
 use Drupal\Core\Annotation\Translation;
 use Drupal\Core\Path\AliasManagerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -18,7 +18,7 @@
  *
  * @ingroup views_argument_default_plugins
  *
- * @Plugin(
+ * @ViewsArgumentDefault(
  *   id = "raw",
  *   title = @Translation("Raw value from URL")
  * )
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/None.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/None.php
index c8aa8eb..2acea7f 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/None.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/None.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\argument_validator;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentValidator;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_argument_validate_plugins
  *
- * @Plugin(
+ * @ViewsArgumentValidator(
  *   id = "none",
  *   title = @Translation(" - Basic validation - ")
  * )
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/Numeric.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/Numeric.php
index 05b7845..a1f2a46 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/Numeric.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/Numeric.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\argument_validator;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentValidator;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_argument_validate_plugins
  *
- * @Plugin(
+ * @ViewsArgumentValidator(
  *   id = "numeric",
  *   title = @Translation("Numeric")
  * )
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/cache/None.php b/core/modules/views/lib/Drupal/views/Plugin/views/cache/None.php
index a3132d0..f4c8285 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/cache/None.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/cache/None.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\cache;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsCache;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_cache_plugins
  *
- * @Plugin(
+ * @ViewsCache(
  *   id = "none",
  *   title = @Translation("None"),
  *   help = @Translation("No caching of Views data.")
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/cache/Time.php b/core/modules/views/lib/Drupal/views/Plugin/views/cache/Time.php
index bf697f0..18b25c8 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/cache/Time.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/cache/Time.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\cache;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsCache;
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Annotation\Translation;
 
@@ -16,7 +16,7 @@
  *
  * @ingroup views_cache_plugins
  *
- * @Plugin(
+ * @ViewsCache(
  *   id = "time",
  *   title = @Translation("Time-based"),
  *   help = @Translation("Simple time-based caching of data.")
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/display/Attachment.php b/core/modules/views/lib/Drupal/views/Plugin/views/display/Attachment.php
index a36f441..17df434 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/display/Attachment.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/display/Attachment.php
@@ -8,7 +8,7 @@
 namespace Drupal\views\Plugin\views\display;
 
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplay;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -20,7 +20,7 @@
  *
  * @ingroup views_display_plugins
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "attachment",
  *   title = @Translation("Attachment"),
  *   help = @Translation("Attachments added to other displays to achieve multiple views in the same view."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/display/DefaultDisplay.php b/core/modules/views/lib/Drupal/views/Plugin/views/display/DefaultDisplay.php
index c35ffa4..6a3e5bd 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/display/DefaultDisplay.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/display/DefaultDisplay.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\display;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplay;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_display_plugins
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "default",
  *   title = @Translation("Master"),
  *   help = @Translation("Default settings for this view."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/display/Embed.php b/core/modules/views/lib/Drupal/views/Plugin/views/display/Embed.php
index b004963..ca7b618 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/display/Embed.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/display/Embed.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\display;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplay;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -18,7 +18,7 @@
  * @todo: Wait until annotations/plugins support access mehtods.
  * no_ui => !config('views.settings')->get('ui.show.display_embed'),
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "embed",
  *   title = @Translation("Embed"),
  *   help = @Translation("Provide a display which can be embedded using the views api."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/display/Feed.php b/core/modules/views/lib/Drupal/views/Plugin/views/display/Feed.php
index 02af7ce..8d61458 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/display/Feed.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/display/Feed.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplay;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -18,7 +18,7 @@
  *
  * @ingroup views_display_plugins
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "feed",
  *   title = @Translation("Feed"),
  *   help = @Translation("Display the view as a feed, such as an RSS feed."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/display/Page.php b/core/modules/views/lib/Drupal/views/Plugin/views/display/Page.php
index 2bbdb0f..75758e7 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/display/Page.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/display/Page.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\display;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplay;
 use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Drupal\Core\Annotation\Translation;
@@ -17,7 +17,7 @@
  *
  * @ingroup views_display_plugins
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "page",
  *   title = @Translation("Page"),
  *   help = @Translation("Display the view as a page, with a URL and menu links."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/display_extender/DefaultDisplayExtender.php b/core/modules/views/lib/Drupal/views/Plugin/views/display_extender/DefaultDisplayExtender.php
index 69cfb2f..7c61ad9 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/display_extender/DefaultDisplayExtender.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/display_extender/DefaultDisplayExtender.php
@@ -7,17 +7,16 @@
 
 namespace Drupal\views\Plugin\views\display_extender;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplayExtender;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * @todo
  *
- * @Plugin(
+ * @ViewsDisplayExtender(
  *   id = "default",
  *   title = @Translation("Empty display extender"),
  *   help = @Translation("Default settings for this view."),
- *   enabled = FALSE,
  *   no_ui = TRUE
  * )
  */
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/exposed_form/Basic.php b/core/modules/views/lib/Drupal/views/Plugin/views/exposed_form/Basic.php
index d422867..f636c51 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/exposed_form/Basic.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/exposed_form/Basic.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\exposed_form;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsExposedForm;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_exposed_form_plugins
  *
- * @Plugin(
+ * @ViewsExposedForm(
  *   id = "basic",
  *   title = @Translation("Basic"),
  *   help = @Translation("Basic exposed form")
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/exposed_form/InputRequired.php b/core/modules/views/lib/Drupal/views/Plugin/views/exposed_form/InputRequired.php
index 5a94674..baf8516 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/exposed_form/InputRequired.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/exposed_form/InputRequired.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\exposed_form;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsExposedForm;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Views;
 
@@ -16,7 +16,7 @@
  *
  * @ingroup views_exposed_form_plugins
  *
- * @Plugin(
+ * @ViewsExposedForm(
  *   id = "input_required",
  *   title = @Translation("Input required"),
  *   help = @Translation("An exposed form that only renders a view if the form contains user input.")
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/pager/Full.php b/core/modules/views/lib/Drupal/views/Plugin/views/pager/Full.php
index 7229f21..e68b509 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/pager/Full.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/pager/Full.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\pager;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsPager;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_pager_plugins
  *
- * @Plugin(
+ * @ViewsPager(
  *   id = "full",
  *   title = @Translation("Paged output, full pager"),
  *   short_title = @Translation("Full"),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/pager/Mini.php b/core/modules/views/lib/Drupal/views/Plugin/views/pager/Mini.php
index 053a6a9..7cd0c65 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/pager/Mini.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/pager/Mini.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\pager;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsPager;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_pager_plugins
  *
- * @Plugin(
+ * @ViewsPager(
  *   id = "mini",
  *   title = @Translation("Paged output, mini pager"),
  *   short_title = @Translation("Mini"),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/pager/None.php b/core/modules/views/lib/Drupal/views/Plugin/views/pager/None.php
index 3c32623..8594770 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/pager/None.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/pager/None.php
@@ -9,7 +9,7 @@
 
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsPager;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -17,7 +17,7 @@
  *
  * @ingroup views_pager_plugins
  *
- * @Plugin(
+ * @ViewsPager(
  *   id = "none",
  *   title = @Translation("Display all items"),
  *   help = @Translation("Display all items that this view might find."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/pager/Some.php b/core/modules/views/lib/Drupal/views/Plugin/views/pager/Some.php
index d50cf48..ccf005d 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/pager/Some.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/pager/Some.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\pager;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsPager;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_pager_plugins
  *
- * @Plugin(
+ * @ViewsPager(
  *   id = "some",
  *   title = @Translation("Display a specified number of items"),
  *   help = @Translation("Display a limited number items that this view might find."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/query/Sql.php b/core/modules/views/lib/Drupal/views/Plugin/views/query/Sql.php
index 4a6dcf3..c70c466 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/query/Sql.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/query/Sql.php
@@ -13,7 +13,7 @@
 use Drupal\Core\Database\DatabaseExceptionWrapper;
 use Drupal\views\Plugin\views\join\JoinPluginBase;
 use Drupal\views\Plugin\views\HandlerBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsQuery;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Views;
@@ -21,7 +21,7 @@
 /**
  * @todo.
  *
- * @Plugin(
+ * @ViewsQuery(
  *   id = "views_query",
  *   title = @Translation("SQL Query"),
  *   help = @Translation("Query will be generated and run using the Drupal database API.")
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/row/EntityRow.php b/core/modules/views/lib/Drupal/views/Plugin/views/row/EntityRow.php
index 88654d0..2c4eae2 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/row/EntityRow.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/row/EntityRow.php
@@ -10,13 +10,13 @@
 use Drupal\Core\Entity\EntityManager;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Generic entity row plugin to provide a common base for all entity types.
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "entity",
  *   derivative = "Drupal\views\Plugin\Derivative\ViewsEntityRow"
  * )
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/row/Fields.php b/core/modules/views/lib/Drupal/views/Plugin/views/row/Fields.php
index 1018aad..85d8b7e 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/row/Fields.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/row/Fields.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\row;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -18,7 +18,7 @@
  *
  * @ingroup views_row_plugins
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "fields",
  *   title = @Translation("Fields"),
  *   help = @Translation("Displays the fields with an optional template."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/row/RssFields.php b/core/modules/views/lib/Drupal/views/Plugin/views/row/RssFields.php
index d051c54..a9571d1 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/row/RssFields.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/row/RssFields.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\views\Plugin\views\row;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Renders an RSS item based on fields.
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "rss_fields",
  *   title = @Translation("Fields"),
  *   help = @Translation("Display fields as RSS items."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/style/DefaultStyle.php b/core/modules/views/lib/Drupal/views/Plugin/views/style/DefaultStyle.php
index 27affcc..d379cde 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/style/DefaultStyle.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/style/DefaultStyle.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\style;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -16,7 +16,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "default",
  *   title = @Translation("Unformatted list"),
  *   help = @Translation("Displays rows one after another."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/style/DefaultSummary.php b/core/modules/views/lib/Drupal/views/Plugin/views/style/DefaultSummary.php
index 05d5c2a..4b0841f 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/style/DefaultSummary.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/style/DefaultSummary.php
@@ -8,7 +8,7 @@
 namespace Drupal\views\Plugin\views\style;
 
 use Drupal\views\Plugin\views\style\StylePluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -16,7 +16,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "default_summary",
  *   title = @Translation("List"),
  *   help = @Translation("Displays the default summary as a list."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/style/Grid.php b/core/modules/views/lib/Drupal/views/Plugin/views/style/Grid.php
index 3d00549..cbae11b 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/style/Grid.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/style/Grid.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\style;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "grid",
  *   title = @Translation("Grid"),
  *   help = @Translation("Displays rows in a grid."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/style/HtmlList.php b/core/modules/views/lib/Drupal/views/Plugin/views/style/HtmlList.php
index 1e8889d..5566664 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/style/HtmlList.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/style/HtmlList.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\style;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "html_list",
  *   title = @Translation("HTML List"),
  *   help = @Translation("Displays rows as HTML list."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/style/Rss.php b/core/modules/views/lib/Drupal/views/Plugin/views/style/Rss.php
index 3bea5bb..90a5390 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/style/Rss.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/style/Rss.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\style;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "rss",
  *   title = @Translation("RSS Feed"),
  *   help = @Translation("Generates an RSS feed from a view."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/style/Table.php b/core/modules/views/lib/Drupal/views/Plugin/views/style/Table.php
index 178af9f..de5eef1 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/style/Table.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/style/Table.php
@@ -9,7 +9,7 @@
 
 use Drupal\Component\Plugin\Discovery\DiscoveryInterface;
 use Drupal\views\Plugin\views\wizard\WizardInterface;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\Request;
@@ -19,7 +19,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "table",
  *   title = @Translation("Table"),
  *   help = @Translation("Displays rows in a table."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/style/UnformattedSummary.php b/core/modules/views/lib/Drupal/views/Plugin/views/style/UnformattedSummary.php
index af005f6..6eec04d 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/style/UnformattedSummary.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/style/UnformattedSummary.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\style;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 
 /**
@@ -15,7 +15,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "unformatted_summary",
  *   title = @Translation("Unformatted"),
  *   help = @Translation("Displays the summary unformatted, with option for one after another or inline."),
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/wizard/Standard.php b/core/modules/views/lib/Drupal/views/Plugin/views/wizard/Standard.php
index 4af96065..c2e034e 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/wizard/Standard.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/wizard/Standard.php
@@ -7,12 +7,14 @@
 
 namespace Drupal\views\Plugin\views\wizard;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsWizard;
+use Drupal\Core\Annotation\Translation;
 
 /**
- * @Plugin(
+ * @ViewsWizard(
  *   id = "standard",
- *   derivative = "Drupal\views\Plugin\Derivative\DefaultWizardDeriver"
+ *   derivative = "Drupal\views\Plugin\Derivative\DefaultWizardDeriver",
+ *   title = @Translation("Default wizard")
  * )
  */
 class Standard extends WizardPluginBase {
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/access/StaticTest.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/access/StaticTest.php
index 6328add..6d7dec4 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/access/StaticTest.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/access/StaticTest.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\views_test_data\Plugin\views\access;
 
-use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\views\Annotation\ViewsAccess;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\views\Plugin\views\access\AccessPluginBase;
 use Symfony\Component\Routing\Route;
@@ -16,7 +16,7 @@
 /**
  * Tests a static access plugin.
  *
- * @Plugin(
+ * @ViewsAccess(
  *   id = "test_static",
  *   title = @Translation("Static test access plugin"),
  *   help = @Translation("Provides a static test access plugin.")
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php
index c21da95..ee9dd3a 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php
@@ -8,13 +8,13 @@
 namespace Drupal\views_test_data\Plugin\views\argument_default;
 
 use Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsArgumentDefault;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines a argument default test plugin.
  *
- * @Plugin(
+ * @ViewsArgumentDefault(
  *   id = "argument_default_test",
  *   title = @Translation("Argument default test")
  * )
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayNoAreaTest.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayNoAreaTest.php
index bc20849..3f29e71 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayNoAreaTest.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayNoAreaTest.php
@@ -7,15 +7,16 @@
 
 namespace Drupal\views_test_data\Plugin\views\display;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplay;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines a Display test plugin with areas disabled.
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "display_no_area_test",
  *   title = @Translation("Display test no area"),
+ *   help = @Translation("Defines a display test with areas disabled."),
  *   theme = "views_view",
  *   contextual_links_locations = {"view"}
  * )
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayTest.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayTest.php
index 83a4336..1b6ebd2 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayTest.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayTest.php
@@ -8,15 +8,16 @@
 namespace Drupal\views_test_data\Plugin\views\display;
 
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplay;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines a Display test plugin.
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "display_test",
  *   title = @Translation("Display test"),
+ *   help = @Translation("Defines a display test plugin."),
  *   theme = "views_view",
  *   contextual_links_locations = {"view"}
  * )
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest.php
index 248526b..50e10da 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest.php
@@ -7,14 +7,15 @@
 
 namespace Drupal\views_test_data\Plugin\views\display_extender;
 
-use Drupal\views\Plugin\views\display_extender\DisplayExtenderPluginBase;
+use Drupal\views\Annotation\ViewsDisplayExtender;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\views\Plugin\views\display_extender\DisplayExtenderPluginBase;
 
 /**
  * Defines a display extender test plugin.
  *
- * @Plugin(
+ * @ViewsDisplayExtender(
  *   id = "display_extender_test",
  *   title = @Translation("Display extender test")
  * )
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest2.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest2.php
index 0439c25..e1f9506 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest2.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest2.php
@@ -7,13 +7,13 @@
 
 namespace Drupal\views_test_data\Plugin\views\display_extender;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplayExtender;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines another display extender test plugin.
  *
- * @Plugin(
+ * @ViewsDisplayExtender(
  *   id = "display_extender_test_2",
  *   title = @Translation("Display extender test number two")
  * )
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/query/QueryTest.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/query/QueryTest.php
index ee0274a..df8c2e3 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/query/QueryTest.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/query/QueryTest.php
@@ -10,15 +10,16 @@
 use Drupal\views\Plugin\views\query\QueryPluginBase;
 use Drupal\views\Plugin\views\join\JoinPluginBase;
 use Drupal\views\ViewExecutable;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsQuery;
 use Drupal\Core\Annotation\Translation;
 
 /**
  * Defines a query test plugin.
  *
- * @Plugin(
+ * @ViewsQuery(
  *   id = "query_test",
- *   title = @Translation("Query test")
+ *   title = @Translation("Query test"),
+ *   help = @Translation("Defines a query test plugin.")
  * )
  */
 class QueryTest extends QueryPluginBase {
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/row/RowTest.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/row/RowTest.php
index d6dedf9..706fd65 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/row/RowTest.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/row/RowTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views_test_data\Plugin\views\row;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsRow;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\row\RowPluginBase;
 
@@ -16,7 +16,7 @@
  *
  * @ingroup views_row_plugins
  *
- * @Plugin(
+ * @ViewsRow(
  *   id = "test_row",
  *   title = @Translation("Test row plugin"),
  *   help = @Translation("Provides a generic row test plugin."),
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/MappingTest.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/MappingTest.php
index 3a4e486..f7f67f0 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/MappingTest.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/MappingTest.php
@@ -8,7 +8,7 @@
 namespace Drupal\views_test_data\Plugin\views\style;
 
 use Drupal\views\Plugin\views\style\Mapping;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\field\Numeric;
 
@@ -17,7 +17,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "mapping_test",
  *   title = @Translation("Field mapping"),
  *   help = @Translation("Maps specific fields to specific purposes."),
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/StyleTest.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/StyleTest.php
index 26a3112..6bf638f 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/StyleTest.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/StyleTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views_test_data\Plugin\views\style;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsStyle;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\Plugin\views\style\StylePluginBase;
 
@@ -16,7 +16,7 @@
  *
  * @ingroup views_style_plugins
  *
- * @Plugin(
+ * @ViewsStyle(
  *   id = "test_style",
  *   title = @Translation("Test style plugin"),
  *   help = @Translation("Provides a generic style test plugin."),
diff --git a/core/modules/views/views.services.yml b/core/modules/views/views.services.yml
index d5ab9d9..c77a27d 100644
--- a/core/modules/views/views.services.yml
+++ b/core/modules/views/views.services.yml
@@ -1,7 +1,7 @@
 services:
   plugin.manager.views.access:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [access, '@container.namespaces']
+    arguments: [access, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.area:
     class: Drupal\views\Plugin\ViewsHandlerManager
     arguments: [area, '@container.namespaces', '@views.views_data']
@@ -10,22 +10,22 @@ services:
     arguments: [argument, '@container.namespaces', '@views.views_data']
   plugin.manager.views.argument_default:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [argument_default, '@container.namespaces']
+    arguments: [argument_default, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.argument_validator:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [argument_validator, '@container.namespaces']
+    arguments: [argument_validator, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.cache:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [cache, '@container.namespaces']
+    arguments: [cache, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.display_extender:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [display_extender, '@container.namespaces']
+    arguments: [display_extender, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.display:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [display, '@container.namespaces']
+    arguments: [display, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.exposed_form:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [exposed_form, '@container.namespaces']
+    arguments: [exposed_form, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.field:
     class: Drupal\views\Plugin\ViewsHandlerManager
     arguments: [field, '@container.namespaces', '@views.views_data']
@@ -37,25 +37,25 @@ services:
     arguments: [join, '@container.namespaces', '@views.views_data']
   plugin.manager.views.pager:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [pager, '@container.namespaces']
+    arguments: [pager, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.query:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [query, '@container.namespaces']
+    arguments: [query, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.relationship:
     class: Drupal\views\Plugin\ViewsHandlerManager
     arguments: [relationship, '@container.namespaces', '@views.views_data']
   plugin.manager.views.row:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [row, '@container.namespaces']
+    arguments: [row, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.sort:
     class: Drupal\views\Plugin\ViewsHandlerManager
     arguments: [sort, '@container.namespaces', '@views.views_data']
   plugin.manager.views.style:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [style, '@container.namespaces']
+    arguments: [style, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   plugin.manager.views.wizard:
     class: Drupal\views\Plugin\ViewsPluginManager
-    arguments: [wizard, '@container.namespaces']
+    arguments: [wizard, '@container.namespaces', '@cache.views_info', '@language_manager', '@module_handler']
   views.views_data:
     class: Drupal\views\ViewsData
     arguments: ['@cache.views_info', '@config.factory', '@module_handler', '@language_manager']
