diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index bc46901..baa78b6 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -408,8 +408,16 @@ protected function buildContainer() {
 
     // Get a list of namespaces and put it onto the container.
     $namespaces = $this->getModuleNamespaces($this->getModuleFileNames());
-    $namespaces['Drupal\Core'] = DRUPAL_ROOT . '/core/lib';
-    $namespaces['Drupal\Component'] = DRUPAL_ROOT . '/core/lib';
+    // Add all components in \Drupal\Core and \Drupal\Component that have a
+    // Plugin directory.
+    foreach (array('Core', 'Component') as $parent_directory) {
+      $path = DRUPAL_ROOT . '/core/lib/Drupal/' . $parent_directory;
+      foreach (new \DirectoryIterator($path) as $component) {
+        if (!$component->isDot() && is_dir($component->getPathname() . '/Plugin')) {
+          $namespaces['Drupal\Core\\' . $component->getFilename()] = DRUPAL_ROOT . '/core/lib';
+        }
+      }
+    }
     $container->setParameter('container.namespaces', $namespaces);
 
     // Register synthetic services.
diff --git a/core/lib/Drupal/Core/Plugin/Validation/Constraint/BundleConstraint.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/BundleConstraint.php
similarity index 95%
rename from core/lib/Drupal/Core/Plugin/Validation/Constraint/BundleConstraint.php
rename to core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/BundleConstraint.php
index 3884a1b..f6ea289 100644
--- a/core/lib/Drupal/Core/Plugin/Validation/Constraint/BundleConstraint.php
+++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/BundleConstraint.php
@@ -5,7 +5,7 @@
  * Contains \Drupal\Core\Validation\Constraint\BundleConstraint.
  */
 
-namespace Drupal\Core\Plugin\Validation\Constraint;
+namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
 
 use Symfony\Component\Validator\Constraint;
 use Drupal\Component\Annotation\Plugin;
diff --git a/core/lib/Drupal/Core/Plugin/Validation/Constraint/BundleConstraintValidator.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/BundleConstraintValidator.php
similarity index 83%
rename from core/lib/Drupal/Core/Plugin/Validation/Constraint/BundleConstraintValidator.php
rename to core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/BundleConstraintValidator.php
index 0eb0edb..a84251e 100644
--- a/core/lib/Drupal/Core/Plugin/Validation/Constraint/BundleConstraintValidator.php
+++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/BundleConstraintValidator.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Plugin\Validation\Constraint\BundleConstraintValidator.
+ * Contains \Drupal\Core\Validation\Plugin\Validation\Constraint\BundleConstraintValidator.
  */
 
-namespace Drupal\Core\Plugin\Validation\Constraint;
+namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
 
 use Symfony\Component\Validator\Constraint;
 use Symfony\Component\Validator\ConstraintValidator;
diff --git a/core/lib/Drupal/Core/Plugin/Validation/Constraint/EntityTypeConstraint.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityTypeConstraint.php
similarity index 93%
rename from core/lib/Drupal/Core/Plugin/Validation/Constraint/EntityTypeConstraint.php
rename to core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityTypeConstraint.php
index 9d46649..1d38ae5 100644
--- a/core/lib/Drupal/Core/Plugin/Validation/Constraint/EntityTypeConstraint.php
+++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityTypeConstraint.php
@@ -5,7 +5,7 @@
  * Contains \Drupal\Core\Validation\Constraint\EntityTypeConstraint.
  */
 
-namespace Drupal\Core\Plugin\Validation\Constraint;
+namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
 
 use Symfony\Component\Validator\Constraint;
 use Drupal\Component\Annotation\Plugin;
diff --git a/core/lib/Drupal/Core/Plugin/Validation/Constraint/EntityTypeConstraintValidator.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityTypeConstraintValidator.php
similarity index 83%
rename from core/lib/Drupal/Core/Plugin/Validation/Constraint/EntityTypeConstraintValidator.php
rename to core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityTypeConstraintValidator.php
index 3020078..31c7cb2 100644
--- a/core/lib/Drupal/Core/Plugin/Validation/Constraint/EntityTypeConstraintValidator.php
+++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityTypeConstraintValidator.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Plugin\Validation\Constraint\EntityTypeConstraintValidator.
+ * Contains \Drupal\Core\Validation\Plugin\Validation\Constraint\EntityTypeConstraintValidator.
  */
 
-namespace Drupal\Core\Plugin\Validation\Constraint;
+namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
 
 use Drupal\Core\Entity\EntityInterface;
 use Symfony\Component\Validator\Constraint;
diff --git a/core/lib/Drupal/Core/Plugin/Validation/Constraint/LengthConstraint.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/LengthConstraint.php
similarity index 88%
rename from core/lib/Drupal/Core/Plugin/Validation/Constraint/LengthConstraint.php
rename to core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/LengthConstraint.php
index 08c33d0..f9bbfa9 100644
--- a/core/lib/Drupal/Core/Plugin/Validation/Constraint/LengthConstraint.php
+++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/LengthConstraint.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Plugin\Validation\Constraint\LengthConstraint.
+ * Contains \Drupal\Core\Validation\Plugin\Validation\Constraint\LengthConstraint.
  */
 
-namespace Drupal\Core\Plugin\Validation\Constraint;
+namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
 
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
diff --git a/core/lib/Drupal/Core/Plugin/Validation/Constraint/PrimitiveTypeConstraint.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraint.php
similarity index 77%
rename from core/lib/Drupal/Core/Plugin/Validation/Constraint/PrimitiveTypeConstraint.php
rename to core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraint.php
index 18cc7bf..1a85f67 100644
--- a/core/lib/Drupal/Core/Plugin/Validation/Constraint/PrimitiveTypeConstraint.php
+++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraint.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Plugin\Validation\Constraint\PrimitiveTypeConstraint.
+ * Contains \Drupal\Core\Validation\Plugin\Validation\Constraint\PrimitiveTypeConstraint.
  */
 
-namespace Drupal\Core\Plugin\Validation\Constraint;
+namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
 
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
diff --git a/core/lib/Drupal/Core/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php
similarity index 92%
rename from core/lib/Drupal/Core/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php
rename to core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php
index b81cf46..df74b1c 100644
--- a/core/lib/Drupal/Core/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php
+++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Plugin\Validation\Constraint\PrimitiveTypeConstraintValidator.
+ * Contains \Drupal\Core\Validation\Plugin\Validation\Constraint\PrimitiveTypeConstraintValidator.
  */
 
-namespace Drupal\Core\Plugin\Validation\Constraint;
+namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
 
 use DateInterval;
 use Drupal\Core\TypedData\Primitive;
diff --git a/core/lib/Drupal/Core/Plugin/Validation/Constraint/RangeConstraint.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/RangeConstraint.php
similarity index 84%
rename from core/lib/Drupal/Core/Plugin/Validation/Constraint/RangeConstraint.php
rename to core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/RangeConstraint.php
index 16deb52..debdc39 100644
--- a/core/lib/Drupal/Core/Plugin/Validation/Constraint/RangeConstraint.php
+++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/RangeConstraint.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Plugin\Validation\Constraint\RangeConstraint.
+ * Contains \Drupal\Core\Validation\Plugin\Validation\Constraint\RangeConstraint.
  */
 
-namespace Drupal\Core\Plugin\Validation\Constraint;
+namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
 
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
