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 4a3bf10..7528d58 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\views\display\DisplayPluginBase;
 
@@ -17,13 +17,12 @@
  *
  * @ingroup views_display_plugins
  *
- * @Plugin(
+ * @ViewsDisplay(
  *   id = "block",
  *   module = "block",
  *   title = @Translation("Block"),
  *   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 2e18fa9..a1adaf6 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 d3c7759..0389d4a 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 ea3ec89..e3c6416 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 3091519..52cd522 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 3b19b56..df65b4a 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 f35eb9e..6e20cf8 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 a2b8b63..12d9db7 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 6c34a4d..36a9658 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 568f757..d1fd87b 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 179a0ec..f15c33f 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/rest/lib/Drupal/rest/Plugin/views/display/RestExport.php b/core/modules/rest/lib/Drupal/rest/Plugin/views/display/RestExport.php
index b263f71..a2dc269 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
@@ -8,7 +8,7 @@
 namespace Drupal\rest\Plugin\views\display;
 
 use Symfony\Component\HttpFoundation\Response;
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsDisplay;
 use Drupal\Core\Annotation\Translation;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\PathPluginBase;
@@ -18,7 +18,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 1a00e4f..1074baa 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;
 
 /**
@@ -18,7 +18,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 1e42b80..5d1eeaa 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,13 +8,13 @@
 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"),
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 4771782..5c5c27e 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 fafe15d..561ba79 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 e33c11d..acf3154 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 3ce4592..13c7094 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,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;
 
@@ -17,7 +17,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 23ece46..17b69fc 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;
 
@@ -17,7 +17,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 8ed758e..ba599f0 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 45c4c2a..a142b51 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 929ed42..2fc7ae8 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\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase;
 
@@ -18,7 +18,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 10fc837..90d804a 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..38f5ca2
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsAccess.php
@@ -0,0 +1,86 @@
+<?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 "full" title for your access type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $title;
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help;
+
+  /**
+   * Defines the type 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.
+   */
+  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;
+
+  /**
+   * Should the plugin 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;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'help' => $this->help->get(),
+      'display_types' => $this->display_types,
+      'base' => $this->base,
+      'no_ui' => $this->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..dc97892
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentDefault.php
@@ -0,0 +1,57 @@
+<?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 "full" title for your default argument type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $title;
+
+  /**
+   * Should the plugin 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;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'no_ui' => $this->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..091b97a
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentValidator.php
@@ -0,0 +1,57 @@
+<?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 "full" title for your argument validator type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $title;
+
+  /**
+   * Should the plugin 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;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'no_ui' => $this->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..214a570
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsCache.php
@@ -0,0 +1,86 @@
+<?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 "full" title for your cache type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $title;
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help;
+
+  /**
+   * Defines the type 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.
+   */
+  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;
+
+  /**
+   * Should the plugin 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;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'help' => $this->help->get(),
+      'display_types' => $this->display_types,
+      'base' => $this->base,
+      'no_ui' => $this->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..7795604
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php
@@ -0,0 +1,116 @@
+<?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 "full" title for your display type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $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;
+
+  /**
+   * Does the display plugin uses hook_menu() to register a route to the router.
+   *
+   * @var bool
+   */
+  public $uses_hook_menu;
+
+  /**
+   * An array with places where contextual links should be added. Can for
+   * example be 'page' or 'block'. If you don't specify it there will be
+   * contextual links around the rendered view. If this is not set or regions
+   * have been specified, views will display an option to 'hide contextual
+   * links'. Use an empty array if you do not want this.
+   *
+   * @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.
+   */
+  public $theme;
+
+  /**
+   * Should the plugin 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;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'admin' => isset($this->admin) ? $this->admin->get() : '',
+      'help' => $this->help->get(),
+      'uses_hook_menu' => $this->uses_hook_menu,
+      'contextual_links_locations' => $this->contextual_links_locations,
+      'base' => $this->base,
+      'theme' => $this->theme,
+      'no_ui' => $this->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..f69205d
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplayExtender.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsDisplayExtender.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\Component\Annotation\AnnotationInterface;
+
+/**
+ * Defines a Plugin annotation object for views display extender plugins.
+ *
+ * @Annotation
+ *
+ * @see \Drupal\views\Plugin\views\display_extender\DisplayExtenderPluginBase
+ */
+class ViewsDisplayExtender implements AnnotationInterface {
+
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The "full" title for your display extender type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $title;
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help;
+
+  /**
+   * Should the plugin 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;
+
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'help' => $this->help->get(),
+      'no_ui' => $this->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..e16b501
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsExposedForm.php
@@ -0,0 +1,87 @@
+<?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 "full" title for your exposed form type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $title;
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help;
+
+  /**
+   * Defines the type 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.
+   */
+  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;
+
+  /**
+   * Should the plugin 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;
+
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'help' => $this->help->get(),
+      'display_types' => $this->display_types,
+      'base' => $this->base,
+      'no_ui' => $this->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..133c876
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsPager.php
@@ -0,0 +1,92 @@
+<?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 "full" title for your pager type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $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.
+   */
+  public $theme;
+
+  /**
+   * Defines the type 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.
+   */
+  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;
+
+  /**
+   * Should the plugin 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;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'help' => $this->help->get(),
+      'theme' => $this->theme,
+      'display_types' => $this->display_types,
+      'base' => $this->base,
+      'no_ui' => $this->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..ac5e096
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsPluginAnnotationBase.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Plugin\Annotation\ViewsPluginAnnotationBase.
+ */
+
+namespace Drupal\views\Annotation;
+
+use Drupal\Component\Annotation\AnnotationInterface;
+
+/**
+ * Defines an abstract base class for all views plugin annotations.
+ */
+abstract class ViewsPluginAnnotationBase implements AnnotationInterface {
+
+  /**
+   * The module the plugin is defined by.
+   *
+   * @var string
+   */
+  public $module;
+
+  /**
+   * Defines a class which allows to provide derivatived plugins.
+   *
+   * @var string
+   *
+   * @see \Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator
+   */
+  public $derivative;
+
+}
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..150f533
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsQuery.php
@@ -0,0 +1,68 @@
+<?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 "full" title for your query type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $title;
+
+  /**
+   * A short help string; this is displayed in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+  public $help;
+
+  /**
+   * Should the plugin 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;
+
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'help' => $this->help->get(),
+      'no_ui' => $this->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..992843b
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsRow.php
@@ -0,0 +1,90 @@
+<?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 "full" title for your row type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $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.
+   */
+  public $theme;
+
+  /**
+   * The base tables on which this row plugin can be used.
+   *
+   * @var array
+   */
+  public $base;
+
+  /**
+   * Defines the type 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.
+   */
+  public $display_types;
+
+  /**
+   * Should the plugin 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;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'help' => $this->help->get(),
+      'theme' => $this->theme,
+      'display_types' => $this->display_types,
+      'base' => $this->base,
+      'no_ui' => $this->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..233788b
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsStyle.php
@@ -0,0 +1,92 @@
+<?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 "full" title for your style type; used in the views UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $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.
+   */
+  public $theme;
+
+  /**
+   * Defines the type 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.
+   */
+  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;
+
+  /**
+   * Should the plugin 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;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'help' => $this->help->get(),
+      'theme' => $this->theme,
+      'display_types' => $this->display_types,
+      'base' => $this->base,
+      'no_ui' => $this->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..bdc03b6
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsWizard.php
@@ -0,0 +1,55 @@
+<?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 "full" title for your wizard type; used in the views creation UI.
+   *
+   * @var \Drupal\Core\Annotation\Translation
+   *
+   * @ingroup plugin_translatable
+   */
+   public $title;
+
+  /**
+   * The base tables on which this wizard is used.
+   *
+   * @var array
+   */
+  public $base_table;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get() {
+    return array(
+      'id' => $this->id,
+      'title' => $this->title->get(),
+      'base_table' => $this->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 2b8c6a6..9a9d8fb 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/ViewsPluginManager.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/ViewsPluginManager.php
@@ -16,6 +16,8 @@
 use Drupal\Core\Plugin\Discovery\CacheDecorator;
 use Drupal\Core\Plugin\Factory\ContainerFactory;
 
+use Symfony\Component\DependencyInjection\Container;
+
 /**
  * Plugin type manager for all views plugins.
  */
@@ -31,7 +33,13 @@ class ViewsPluginManager extends PluginManagerBase {
    *   keyed by the corresponding namespace to look for plugin implementations,
    */
   public function __construct($type, \Traversable $namespaces) {
-    $this->discovery = new AnnotatedClassDiscovery("views/$type", $namespaces);
+    $annotation_namespaces = array(
+      'Drupal\views\Plugin\Annotation' => $namespaces['views'],
+    );
+
+    $plugin_definition_annotation_name = 'Drupal\views\Plugin\Annotation\\Views' . Container::camelize($type);
+    $this->discovery = new AnnotatedClassDiscovery("views\$type", $namespaces, $annotation_namespaces, $plugin_definition_annotation_name);
+
     $this->discovery = new DerivativeDiscoveryDecorator($this->discovery);
     $this->discovery = new ProcessDecorator($this->discovery, array($this, 'processDefinition'));
     $this->discovery = new AlterDecorator($this->discovery, 'views_plugins_' . $type);
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 522c472..1177933 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 Symfony\Component\Routing\Route;
 
@@ -17,7 +17,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/Php.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Php.php
index 2fc8c38..a6cc4dd 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Php.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Php.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 = "php",
  *   title = @Translation("PHP Code")
  * )
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 25daa42..f31d67c 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;
 
 /**
@@ -15,7 +15,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 7a63069..58f19dc 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 6db339e..b09e27b 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/argument_validator/Php.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/Php.php
index dc16a1c..6ebed8a 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/Php.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument_validator/Php.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 = "php",
  *   title = @Translation("PHP Code")
  * )
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 b6c7170..5219ea7 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 9991384..f4d426b 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 2376f56..e307bb1 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;
 
 /**
@@ -15,7 +15,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 08a5978..21fb76d 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 561a2ff..9f6b269 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 b3d8b6c..24e1367 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 b057271..1444cca 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/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 67b1004..0280e0f 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 3d28046..ce23aed 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 0631661..44e512a 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 7901c48..2917786 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 f6fe7e5..cfac977 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..82df0b8 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,10 +7,10 @@
 
 namespace Drupal\views\Plugin\views\wizard;
 
-use Drupal\Component\Annotation\Plugin;
+use Drupal\views\Annotation\ViewsWizard;
 
 /**
- * @Plugin(
+ * @ViewsWizard(
  *   id = "standard",
  *   derivative = "Drupal\views\Plugin\Derivative\DefaultWizardDeriver"
  * )
diff --git a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/access/StaticTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/access/StaticTest.php
index fe62097..2175ca2 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/access/StaticTest.php
+++ b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/access/StaticTest.php
@@ -7,15 +7,15 @@
 
 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\views\Plugin\views\access\AccessPluginBase;
 use Symfony\Component\Routing\Route;
 
 /**
  * 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/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php
index c21da95..ee9dd3a 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php
+++ b/core/modules/views/tests/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/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayNoAreaTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayNoAreaTest.php
index bc20849..1aaa1d3 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayNoAreaTest.php
+++ b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayNoAreaTest.php
@@ -7,13 +7,13 @@
 
 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"),
  *   theme = "views_view",
diff --git a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayTest.php
index 83a4336..e845944 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayTest.php
+++ b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display/DisplayTest.php
@@ -8,13 +8,13 @@
 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"),
  *   theme = "views_view",
diff --git a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest.php
index 248526b..e6fec27 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest.php
+++ b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest.php
@@ -7,14 +7,14 @@
 
 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;
 
 /**
  * Defines a display extender test plugin.
  *
- * @Plugin(
+ * @ViewsDisplayExtender(
  *   id = "display_extender_test",
  *   title = @Translation("Display extender test")
  * )
diff --git a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest2.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest2.php
index 0439c25..e1f9506 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/display_extender/DisplayExtenderTest2.php
+++ b/core/modules/views/tests/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/views_test_data/lib/Drupal/views_test_data/Plugin/views/query/QueryTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/query/QueryTest.php
index e37ac8c..417700f 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/query/QueryTest.php
+++ b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/query/QueryTest.php
@@ -10,13 +10,13 @@
 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")
  * )
diff --git a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/row/RowTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/row/RowTest.php
index d6dedf9..706fd65 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/row/RowTest.php
+++ b/core/modules/views/tests/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/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/MappingTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/MappingTest.php
index 3a4e486..f7f67f0 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/MappingTest.php
+++ b/core/modules/views/tests/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/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/StyleTest.php b/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/StyleTest.php
index f7d2c7d..2fac267 100644
--- a/core/modules/views/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/style/StyleTest.php
+++ b/core/modules/views/tests/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."),
