diff --git a/core/lib/Drupal/Component/Annotation/Plugin.php b/core/lib/Drupal/Component/Annotation/Plugin.php
index 115e94b..e966485 100644
--- a/core/lib/Drupal/Component/Annotation/Plugin.php
+++ b/core/lib/Drupal/Component/Annotation/Plugin.php
@@ -36,13 +36,17 @@ class Plugin implements AnnotationInterface {
    * classed annotations that were used.
    */
   public function __construct($values) {
-    $reflection = new \ReflectionClass($this);
-    // Only keep actual default values by ignoring NULL values.
-    $defaults = array_filter($reflection->getDefaultProperties(), function ($value) {
-      return $value !== NULL;
-    });
-    $parsed_values = $this->parse($values);
-    $this->definition = NestedArray::mergeDeep($defaults, $parsed_values);
+    if (isset($values['id']) && strpos($values['id'], ':')) {
+      $this->definition = $this->parse($values);
+    }
+    else {
+      $reflection = new \ReflectionClass($this);
+      // Only keep actual default values by ignoring NULL values.
+      $defaults = array_filter($reflection->getDefaultProperties(), function ($value) {
+        return $value !== NULL;
+      });
+      $this->definition = NestedArray::mergeDeep($defaults, $this->parse($values));
+    }
   }
 
   /**
