diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index 729ff78..9f6da98 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -371,8 +371,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 a9618ae..64fd158 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\Core\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 81%
rename from core/lib/Drupal/Core/Plugin/Validation/Constraint/BundleConstraintValidator.php
rename to core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/BundleConstraintValidator.php
index d649ccf..309c23f 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 3914190..7c1afca 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\Core\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 80%
rename from core/lib/Drupal/Core/Plugin/Validation/Constraint/EntityTypeConstraintValidator.php
rename to core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityTypeConstraintValidator.php
index 1e1aba4..ed8f7cf 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 Symfony\Component\Validator\Constraint;
 use Symfony\Component\Validator\ConstraintValidator;
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 5d02f22..2fbf96f 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\Core\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 8207365..c19e638 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\Core\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 0d27d29..4d9174d 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\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
