diff --git a/core/lib/Drupal/Core/TypedData/DataDefinition.php b/core/lib/Drupal/Core/TypedData/DataDefinition.php
index 6f06cf3..35adfbc 100644
--- a/core/lib/Drupal/Core/TypedData/DataDefinition.php
+++ b/core/lib/Drupal/Core/TypedData/DataDefinition.php
@@ -10,7 +10,7 @@
 /**
  * A typed data definition class for defining data based on defined data types.
  */
-class DataDefinition implements DataDefinitionInterface, \ArrayAccess {
+class DataDefinition implements DataDefinitionMutableSettingsInterface, \ArrayAccess {
 
   /**
    * The array holding values for all definition keys.
@@ -222,13 +222,7 @@ public function getSettings() {
   }
 
   /**
-   * Sets the array of settings, as required by the used class.
-   *
-   * @param array $settings
-   *   The array of settings.
-   *
-   * @return static
-   *   The object itself for chaining.
+   * {@inheritdoc}
    */
   public function setSettings(array $settings) {
     $this->definition['settings'] = $settings;
@@ -243,15 +237,7 @@ public function getSetting($setting_name) {
   }
 
   /**
-   * Sets a definition setting.
-   *
-   * @param string $setting_name
-   *   The definition setting to set.
-   * @param mixed $value
-   *   The value to set.
-   *
-   * @return static
-   *   The object itself for chaining.
+   * {@inheritdoc}
    */
   public function setSetting($setting_name, $value) {
     $this->definition['settings'][$setting_name] = $value;
diff --git a/core/lib/Drupal/Core/TypedData/DataDefinitionMutableSettingsInterface.php b/core/lib/Drupal/Core/TypedData/DataDefinitionMutableSettingsInterface.php
new file mode 100644
index 0000000..6a3d237
--- /dev/null
+++ b/core/lib/Drupal/Core/TypedData/DataDefinitionMutableSettingsInterface.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\TypedData\DataDefinitionMutableSettingsInterface.
+ */
+
+namespace Drupal\Core\TypedData;
+
+/**
+ * Allows implementations to set their settings.
+ *
+ * @ingroup typed_data
+ */
+interface DataDefinitionMutableSettingsInterface extends DataDefinitionInterface {
+
+  /**
+   * Sets the array of settings, as required by the used class.
+   *
+   * @param array $settings
+   *   The array of settings.
+   *
+   * @return self
+   *   The object itself for chaining.
+   */
+  public function setSettings(array $settings);
+
+  /**
+   * Sets a definition setting.
+   *
+   * @param string $setting_name
+   *   The definition setting to set.
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return static
+   *   The object itself for chaining.
+   */
+  public function setSetting($setting_name, $value);
+
+}
