diff --git a/core/lib/Drupal/Component/Plugin/Discovery/DerivativeDiscoveryDecorator.php b/core/lib/Drupal/Component/Plugin/Discovery/DerivativeDiscoveryDecorator.php
index 027c59a..3437773 100644
--- a/core/lib/Drupal/Component/Plugin/Discovery/DerivativeDiscoveryDecorator.php
+++ b/core/lib/Drupal/Component/Plugin/Discovery/DerivativeDiscoveryDecorator.php
@@ -81,24 +81,31 @@ public function getDefinitions() {
    */
   protected function getDerivatives(array $base_plugin_definitions) {
     $plugin_definitions = array();
+    $derivative_plugin_definitions = array();
     foreach ($base_plugin_definitions as $base_plugin_id => $plugin_definition) {
       $derivative_fetcher = $this->getDerivativeFetcher($base_plugin_id, $plugin_definition);
       if ($derivative_fetcher) {
         $derivative_definitions = $derivative_fetcher->getDerivativeDefinitions($plugin_definition);
         foreach ($derivative_definitions as $derivative_id => $derivative_definition) {
           $plugin_id = $this->encodePluginId($base_plugin_id, $derivative_id);
-          // Use this definition as defaults if a plugin already defined
-          // itself as this derivative.
-          if ($derivative_id && isset($base_plugin_definitions[$plugin_id])) {
-            $derivative_definition = $base_plugin_definitions[$plugin_id] + ($derivative_definition ?: array());
-          }
           $plugin_definitions[$plugin_id] = $derivative_definition;
         }
       }
-      // If a plugin already defined itself as a derivative it might already
-      // be merged into the definitions.
-      elseif (!isset($plugin_definitions[$base_plugin_id])) {
-        $plugin_definitions[$base_plugin_id] = $plugin_definition;
+      else {
+        list(, $derivative_id) = $this->decodePluginId($base_plugin_id);
+        if ($derivative_id) {
+          $derivative_plugin_definitions[$base_plugin_id] = $plugin_definition;
+        }
+        else {
+          $plugin_definitions[$base_plugin_id] = $plugin_definition;
+        }
+      }
+    }
+    foreach ($derivative_plugin_definitions as $plugin_id => $plugin_definition) {
+      if (isset($plugin_definitions[$plugin_id])) {
+        // Use this definition as defaults if a plugin already defined
+        // itself as this derivative.
+        $plugin_definitions[$plugin_id] = $plugin_definition + $plugin_definitions[$plugin_id];
       }
     }
 
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsAccess.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsAccess.php
index 6917904..e94dcdb 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsAccess.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsAccess.php
@@ -32,7 +32,7 @@ class ViewsAccess extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsAccess extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * A short help string; this is displayed in the views UI.
@@ -50,7 +50,7 @@ class ViewsAccess extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $help = '';
+  public $help;
 
   /**
    * The types of the display this plugin can be used with.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentDefault.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentDefault.php
index 2910a58..d1f15da 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentDefault.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentDefault.php
@@ -32,7 +32,7 @@ class ViewsArgumentDefault extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsArgumentDefault extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * Whether the plugin should be not selectable in the UI.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentValidator.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentValidator.php
index ae2d3f2..f19e6fa 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentValidator.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsArgumentValidator.php
@@ -32,7 +32,7 @@ class ViewsArgumentValidator extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsArgumentValidator extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * Whether the plugin should be not selectable in the UI.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsCache.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsCache.php
index d092942..c1893ad 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsCache.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsCache.php
@@ -32,7 +32,7 @@ class ViewsCache extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsCache extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * A short help string; this is displayed in the views UI.
@@ -50,7 +50,7 @@ class ViewsCache extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $help = '';
+  public $help;
 
   /**
    * The types of the display this plugin can be used with.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php
index fc6652e..cdc1f1e 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php
@@ -32,7 +32,7 @@ class ViewsDisplay extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsDisplay extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * The administrative name of the display.
@@ -53,7 +53,7 @@ class ViewsDisplay extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $admin = '';
+  public $admin;
 
   /**
    * A short help string; this is displayed in the views UI.
@@ -62,7 +62,7 @@ class ViewsDisplay extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $help = '';
+  public $help;
 
   /**
    * Whether or not to use hook_menu() to register a route.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplayExtender.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplayExtender.php
index 5eceb64..f12e75f 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplayExtender.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplayExtender.php
@@ -30,7 +30,7 @@ class ViewsDisplayExtender extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -39,7 +39,7 @@ class ViewsDisplayExtender extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * A short help string; this is displayed in the views UI.
@@ -48,7 +48,7 @@ class ViewsDisplayExtender extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $help = '';
+  public $help;
 
   /**
    * Whether or not the plugin is selectable in the UI.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsExposedForm.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsExposedForm.php
index fd9376b..8537d42 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsExposedForm.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsExposedForm.php
@@ -32,7 +32,7 @@ class ViewsExposedForm extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsExposedForm extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * A short help string; this is displayed in the views UI.
@@ -50,7 +50,7 @@ class ViewsExposedForm extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $help = '';
+  public $help;
 
   /**
    * The types of the display this plugin can be used with.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsPager.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsPager.php
index 2466a57..6c04d95 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsPager.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsPager.php
@@ -32,7 +32,7 @@ class ViewsPager extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsPager extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * A short help string; this is displayed in the views UI.
@@ -50,7 +50,7 @@ class ViewsPager extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $help = '';
+  public $help;
 
   /**
    * The theme function used to render the pager's output.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsPluginAnnotationBase.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsPluginAnnotationBase.php
index baa2a76..794519e 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsPluginAnnotationBase.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsPluginAnnotationBase.php
@@ -29,6 +29,6 @@
    *
    * @var bool (optional)
    */
-  public $register_theme = TRUE;
+  public $register_theme;
 
 }
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsQuery.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsQuery.php
index 5be9806..a486a11 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsQuery.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsQuery.php
@@ -32,7 +32,7 @@ class ViewsQuery extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsQuery extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * A short help string; this is displayed in the views UI.
@@ -50,7 +50,7 @@ class ViewsQuery extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $help = '';
+  public $help;
 
   /**
    * Whether the plugin should be not selectable in the UI.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsRow.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsRow.php
index 43d8eeb..1abd583 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsRow.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsRow.php
@@ -32,7 +32,7 @@ class ViewsRow extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsRow extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * A short help string; this is displayed in the views UI.
@@ -50,7 +50,7 @@ class ViewsRow extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $help = '';
+  public $help;
 
   /**
    * The theme function used to render the row output.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsStyle.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsStyle.php
index 386f36e..f0f7a3c 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsStyle.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsStyle.php
@@ -32,7 +32,7 @@ class ViewsStyle extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsStyle extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * A short help string; this is displayed in the views UI.
@@ -50,7 +50,7 @@ class ViewsStyle extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $help = '';
+  public $help;
 
   /**
    * The theme function used to render the style output.
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsWizard.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsWizard.php
index 9486804..7e1f40d 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsWizard.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsWizard.php
@@ -32,7 +32,7 @@ class ViewsWizard extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $title = '';
+  public $title;
 
   /**
    * (optional) The short title used in the views UI.
@@ -41,7 +41,7 @@ class ViewsWizard extends ViewsPluginAnnotationBase {
    *
    * @ingroup plugin_translatable
    */
-  public $short_title = '';
+  public $short_title;
 
   /**
    * The base tables on which this wizard is used.
