diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
index 330f39c..0ed0b71 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
@@ -110,4 +110,20 @@ public static function sort($a, $b) {
     }
     return ($a_weight < $b_weight) ? -1 : 1;
   }
+
+  /**
+   * Returns this object as an array suitable for permanent storage.
+   *
+   * @return array
+   */
+  public function export() {
+    // A sane default is to simply export all public properties on this object.
+    $class_info = new \ReflectionClass($entity);
+    $properties = array();
+    foreach ($class_info->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
+      $name = $property->getName();
+      $properties[$name] = $entity->$name;
+    }
+    return $properties;
+  }
 }
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
index 6d0a3f4..ec82f23 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
@@ -347,15 +347,9 @@ public function save(EntityInterface $entity) {
    * @see \Drupal\Core\Config\Entity\ConfigStorageController::save()
    */
   protected function getProperties(EntityInterface $entity) {
-    // Configuration objects do not have a schema. Extract all key names from
-    // class properties.
-    $class_info = new \ReflectionClass($entity);
-    $properties = array();
-    foreach ($class_info->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
-      $name = $property->getName();
-      $properties[$name] = $entity->$name;
-    }
-    return $properties;
+    // Configuration objects do not have a schema. Let the object determine
+    // which of its properties to export by calling its export() method.
+    return $entity->export();
   }
 
   /**
diff --git a/core/modules/layout/lib/Drupal/layout/Config/DisplayBase.php b/core/modules/layout/lib/Drupal/layout/Config/DisplayBase.php
index afe3229..e9fe599 100644
--- a/core/modules/layout/lib/Drupal/layout/Config/DisplayBase.php
+++ b/core/modules/layout/lib/Drupal/layout/Config/DisplayBase.php
@@ -135,4 +135,19 @@ public function getAllRegionTypes() {
     }
     return array_unique($types);
   }
+
+  /**
+   * Overrides ConfigEntityBase::export().
+   *
+   * @return array
+   */
+  public function export() {
+    // Start by exporting the public properties.
+    $properties = parent::export();
+
+    // Now, add protected data; the blockInfo array.
+    $properties['blockInfo'] = $this->blockInfo;
+
+    return $properties;
+  }
 }
