diff --git a/core/lib/Drupal/Core/Form/ConfigFormBaseTrait.php b/core/lib/Drupal/Core/Form/ConfigFormBaseTrait.php
index 1cbac3c..be047d7 100644
--- a/core/lib/Drupal/Core/Form/ConfigFormBaseTrait.php
+++ b/core/lib/Drupal/Core/Form/ConfigFormBaseTrait.php
@@ -45,6 +45,42 @@
    *   A configuration object.
    */
   protected function config($name) {
+    $config_factory = $this->getConfigFactory();
+    if (in_array($name, $this->getEditableConfigNames())) {
+      // Get a mutable object from the factory.
+      $config = $config_factory->getEditable($name);
+    }
+    else {
+      $config = $config_factory->get($name);
+    }
+    return $config;
+  }
+
+  /**
+   * Retrieves a configuration object in editable form.
+   *
+   * The editable form of a configuration object is the raw version from the
+   * system, without any overrides applied.
+   *
+   * @param string $name
+   *   The name of the configuration object to retrieve. The name corresponds to
+   *   a configuration file. For @code \Drupal::config('book.admin') @endcode,
+   *   the config object returned will contain the contents of book.admin
+   *   configuration file.
+   *
+   * @return \Drupal\Core\Config\Config
+   *   A configuration object.
+   */
+  protected function editableConfig($name) {
+    return $this->getConfigFactory()->getEditable($name);
+  }
+
+  /**
+   * Returns the configuration factory this trait should use.
+   *
+   * @return \Drupal\Core\Config\ConfigFactoryInterface
+   */
+  protected function getConfigFactory() {
     /** @var \Drupal\Core\Config\ConfigFactoryInterface $config_factory */
     if (method_exists($this, 'configFactory')) {
       $config_factory = $this->configFactory();
@@ -55,14 +91,7 @@ protected function config($name) {
     if (!isset($config_factory) || !($config_factory instanceof ConfigFactoryInterface)) {
       throw new \LogicException('No config factory available for ConfigFormBaseTrait');
     }
-    if (in_array($name, $this->getEditableConfigNames())) {
-      // Get a mutable object from the factory.
-      $config = $config_factory->getEditable($name);
-    }
-    else {
-      $config = $config_factory->get($name);
-    }
-    return $config;
+    return $config_factory;
   }
 
   /**
@@ -72,6 +101,8 @@ protected function config($name) {
    *   An array of configuration object names that are editable if called in
    *   conjunction with the trait's config() method.
    */
-  abstract protected function getEditableConfigNames();
+  protected function getEditableConfigNames() {
+    return [];
+  }
 
 }
