diff --git a/core/core.services.yml b/core/core.services.yml
index 2d00da1..95177ff 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -382,7 +382,7 @@ services:
     parent: default_plugin_manager
   plugin.manager.field.field_type:
     class: Drupal\Core\Field\FieldTypePluginManager
-    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@typed_data_manager']
+    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
   plugin.manager.field.widget:
     class: Drupal\Core\Field\WidgetPluginManager
     arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
@@ -1227,7 +1227,7 @@ services:
     tags:
       - { name: twig.loader, priority: 0 }
   twig.loader.string:
-    class: Drupal\Core\Template\Loader\StringLoader
+    class: Twig_Loader_String
     tags:
       - { name: twig.loader, priority: -100 }
   element_info:
diff --git a/core/includes/common.inc b/core/includes/common.inc
index 6adee9a..40d2633 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -637,6 +637,27 @@ function drupal_html_id($id) {
 }
 
 /**
+ * Prepares a string for use as a valid HTML ID.
+ *
+ * Only use this function when you want to intentionally skip the uniqueness
+ * guarantee of drupal_html_id().
+ *
+ * @param string $id
+ *   The ID to clean.
+ *
+ * @return string
+ *   The cleaned ID.
+ *
+ * @see drupal_html_id()
+ *
+ * @deprecated in Drupal 8.x-dev, will be removed before Drupal 8.0.0.
+ *   Use \Drupal\Component\Utility\Html::getId()
+ */
+function drupal_clean_id_identifier($id) {
+  return Html::getId($id);
+}
+
+/**
  * Constructs an array of the defaults that are used for JavaScript assets.
  *
  * @param $data
diff --git a/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php b/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php
index 4a52c70..94d969b 100644
--- a/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php
+++ b/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php
@@ -39,20 +39,6 @@ class ZfExtensionManagerSfContainer implements ReaderManagerInterface, WriterMan
   protected $prefix = '';
 
   /**
-   * The service container.
-   *
-   * @var \Symfony\Component\DependencyInjection\ContainerInterface
-   */
-  protected $container;
-
-  /**
-   * A local cache of computed canonical names.
-   *
-   * @var string[]
-   */
-  protected $canonicalNames;
-
-  /**
    * Constructs a ZfExtensionManagerSfContainer object.
    *
    * @param string $prefix
diff --git a/core/lib/Drupal/Component/Datetime/DateTimePlus.php b/core/lib/Drupal/Component/Datetime/DateTimePlus.php
index fb52a80..68218f5 100644
--- a/core/lib/Drupal/Component/Datetime/DateTimePlus.php
+++ b/core/lib/Drupal/Component/Datetime/DateTimePlus.php
@@ -112,15 +112,9 @@ public static function createFromDateTime(\DateTime $datetime, $settings = array
    * @param array $date_parts
    *   An array of date parts, like ('year' => 2014, 'month => 4).
    * @param mixed $timezone
-   *   (optional) \DateTimeZone object, time zone string or NULL. NULL uses the
-   *   default system time zone. Defaults to NULL.
+   *   @see __construct()
    * @param array $settings
-   *   (optional) A keyed array for settings, suitable for passing on to
-   *   __construct().
-   *
-   * @return static
-   *   A new \Drupal\Component\DateTimePlus object based on the parameters
-   *   passed in.
+   *   @see __construct()
    */
   public static function createFromArray(array $date_parts, $timezone = NULL, $settings = array()) {
     $date_parts = static::prepareArray($date_parts, TRUE);
@@ -222,12 +216,11 @@ public static function createFromFormat($format, $time, $timezone = NULL, $setti
    * Constructs a date object set to a requested date and timezone.
    *
    * @param string $time
-   *   (optional) A date/time string. Defaults to 'now'.
+   *   A date/time string. Defaults to 'now'.
    * @param mixed $timezone
-   *   (optional) \DateTimeZone object, time zone string or NULL. NULL uses the
-   *   default system time zone. Defaults to NULL.
+   *   PHP DateTimeZone object, string or NULL allowed.
+   *   Defaults to NULL.
    * @param array $settings
-   *   (optional) Keyed array of settings. Defaults to empty array.
    *   - langcode: (optional) String two letter language code used to control
    *     the result of the format(). Defaults to NULL.
    *   - debug: (optional) Boolean choice to leave debug values in the
@@ -482,7 +475,7 @@ public static function checkArray($array) {
     foreach (array('hour', 'minute', 'second') as $key) {
       if (array_key_exists($key, $array)) {
         $value = $array[$key];
-        switch ($key) {
+        switch ($value) {
           case 'hour':
             if (!preg_match('/^([1-2][0-3]|[01]?[0-9])$/', $value)) {
               $valid_time = FALSE;
diff --git a/core/lib/Drupal/Component/Utility/String.php b/core/lib/Drupal/Component/Utility/String.php
index ebe1864..3a8a2b3 100644
--- a/core/lib/Drupal/Component/Utility/String.php
+++ b/core/lib/Drupal/Component/Utility/String.php
@@ -74,21 +74,19 @@ public static function decodeEntities($text) {
    *   any key in $args are replaced with the corresponding value, after
    *   optional sanitization and formatting. The type of sanitization and
    *   formatting depends on the first character of the key:
-   *   - @variable: Escaped to HTML using
-   *     \Drupal\Component\Utility\SafeMarkup::escape(). Use this as the
+   *   - @variable: Escaped to HTML using String::checkPlain(). Use this as the
    *     default choice for anything displayed on a page on the site.
    *   - %variable: Escaped to HTML and formatted using String::placeholder(),
    *     which makes the following HTML code:
    *     @code
    *       <em class="placeholder">text output here.</em>
    *     @endcode
-   *   - !variable: Inserted as is, with no sanitization or formatting. Only
-   *     use this when the resulting string is being generated for one of:
-   *     - Non-HTML usage, such as a plain-text email.
-   *     - Non-direct HTML output, such as a plain-text variable that will be
-   *       printed as an HTML attribute value and therefore formatted with
-   *       String::checkPlain() as part of that.
-   *     - Some other special reason for suppressing sanitization.
+   *   - !variable: Inserted as is, with no sanitization or formatting. Only use
+   *     this for text that has already been prepared for HTML display (for
+   *     example, user-supplied text that has already been run through
+   *     String::checkPlain() previously, or is expected to contain some limited
+   *     HTML tags and has already been run through
+   *     \Drupal\Component\Utility\Xss::filter() previously).
    *
    * @return mixed
    *   The formatted string, or FALSE if no args specified.
@@ -105,7 +103,7 @@ public static function format($string, array $args = array()) {
       switch ($key[0]) {
         case '@':
           // Escaped only.
-          $args[$key] = SafeMarkup::escape($value);
+          $args[$key] = static::checkPlain($value);
           break;
 
         case '%':
@@ -142,7 +140,7 @@ public static function format($string, array $args = array()) {
    *   The formatted text (html).
    */
   public static function placeholder($text) {
-    return SafeMarkup::set('<em class="placeholder">' . SafeMarkup::escape($text) . '</em>');
+    return SafeMarkup::set('<em class="placeholder">' . static::checkPlain($text) . '</em>');
   }
 
 
diff --git a/core/lib/Drupal/Core/Block/BlockBase.php b/core/lib/Drupal/Core/Block/BlockBase.php
index 7ae063a..796a4c7 100644
--- a/core/lib/Drupal/Core/Block/BlockBase.php
+++ b/core/lib/Drupal/Core/Block/BlockBase.php
@@ -170,7 +170,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
 
     $form['admin_label'] = array(
       '#type' => 'item',
-      '#title' => $this->t('Block description'),
+      '#title' => t('Block description'),
       '#markup' => $definition['admin_label'],
     );
     $form['label'] = array(
@@ -190,16 +190,16 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     // @see \Drupal\system\Form\PerformanceForm::buildForm()
     $period = array(0, 60, 180, 300, 600, 900, 1800, 2700, 3600, 10800, 21600, 32400, 43200, 86400);
     $period = array_map(array(\Drupal::service('date.formatter'), 'formatInterval'), array_combine($period, $period));
-    $period[0] = '<' . $this->t('no caching') . '>';
-    $period[\Drupal\Core\Cache\Cache::PERMANENT] = $this->t('Forever');
+    $period[0] = '<' . t('no caching') . '>';
+    $period[\Drupal\Core\Cache\Cache::PERMANENT] = t('Forever');
     $form['cache'] = array(
       '#type' => 'details',
-      '#title' => $this->t('Cache settings'),
+      '#title' => t('Cache settings'),
     );
     $form['cache']['max_age'] = array(
       '#type' => 'select',
-      '#title' => $this->t('Maximum age'),
-      '#description' => $this->t('The maximum time this block may be cached.'),
+      '#title' => t('Maximum age'),
+      '#description' => t('The maximum time this block may be cached.'),
       '#default_value' => $this->configuration['cache']['max_age'],
       '#options' => $period,
     );
@@ -210,8 +210,8 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     unset($contexts['theme']);
     $form['cache']['contexts'] = array(
       '#type' => 'checkboxes',
-      '#title' => $this->t('Vary by context'),
-      '#description' => $this->t('The contexts this cached block must be varied by. <em>All</em> blocks are varied by language and theme.'),
+      '#title' => t('Vary by context'),
+      '#description' => t('The contexts this cached block must be varied by. <em>All</em> blocks are varied by language and theme.'),
       '#default_value' => $this->configuration['cache']['contexts'],
       '#options' => $contexts,
       '#states' => array(
@@ -231,7 +231,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
         unset($form['cache']['contexts']['#options'][$context_id]);
       }
       $required_context_list = implode(', ', $context_labels);
-      $form['cache']['contexts']['#description'] .= ' ' . $this->t('This block is <em>always</em> varied by the following contexts: %required-context-list.', array('%required-context-list' => $required_context_list));
+      $form['cache']['contexts']['#description'] .= ' ' . t('This block is <em>always</em> varied by the following contexts: %required-context-list.', array('%required-context-list' => $required_context_list));
     }
 
     // Add plugin-specific settings for this block type.
diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Connection.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Connection.php
index b888f14..cacae24 100644
--- a/core/lib/Drupal/Core/Database/Driver/pgsql/Connection.php
+++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Connection.php
@@ -186,64 +186,6 @@ public function queryTemporary($query, array $args = array(), array $options = a
     return $tablename;
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function escapeField($field) {
-    $escaped = parent::escapeField($field);
-
-    // Remove any invalid start character.
-    $escaped = preg_replace('/^[^A-Za-z0-9_]/', '', $escaped);
-
-    // The pgsql database driver does not support field names that contain
-    // periods (supported by PostgreSQL server) because this method may be
-    // called by a field with a table alias as part of SQL conditions or
-    // order by statements. This will consider a period as a table alias
-    // identifier, and split the string at the first period.
-    if (preg_match('/^([A-Za-z0-9_]+)"?[.]"?([A-Za-z0-9_.]+)/', $escaped, $parts)) {
-      $table = $parts[1];
-      $column = $parts[2];
-
-      // Use escape alias because escapeField may contain multiple periods that
-      // need to be escaped.
-      $escaped = $this->escapeTable($table) . '.' . $this->escapeAlias($column);
-    }
-    elseif (preg_match('/[A-Z]/', $escaped)) {
-      // Quote the field name for case-sensitivity.
-      $escaped = '"' . $escaped . '"';
-    }
-
-    return $escaped;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function escapeAlias($field) {
-    $escaped = preg_replace('/[^A-Za-z0-9_]+/', '', $field);
-
-    // Escape the alias in quotes for case-sensitivity.
-    if (preg_match('/[A-Z]/', $escaped)) {
-      $escaped = '"' . $escaped . '"';
-    }
-
-    return $escaped;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function escapeTable($table) {
-    $escaped = parent::escapeTable($table);
-
-    // Quote identifier to make it case-sensitive.
-    if (preg_match('/[A-Z]/', $escaped)) {
-      $escaped = '"' . $escaped . '"';
-    }
-
-    return $escaped;
-  }
-
   public function driver() {
     return 'pgsql';
   }
diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php
index d4a96b3..8fe59d1 100644
--- a/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php
+++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php
@@ -262,8 +262,7 @@ protected function createTableSql($name, $table) {
    *    The field specification, as per the schema data structure format.
    */
   protected function createFieldSql($name, $spec) {
-    // The PostgreSQL server converts names into lowercase, unless quoted.
-    $sql = '"' . $name . '" ' . $spec['pgsql_type'];
+    $sql = $name . ' ' . $spec['pgsql_type'];
 
     if (isset($spec['type']) && $spec['type'] == 'serial') {
       unset($spec['not null']);
diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php
index 8c63044..de9409f 100644
--- a/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php
+++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php
@@ -82,7 +82,7 @@ public function orderBy($field, $direction = 'ASC') {
 
     // Also check expression aliases.
     foreach ($this->expressions as $expression) {
-      if ($expression['alias'] == $this->connection->escapeAlias($field)) {
+      if ($expression['alias'] == $field) {
         return $return;
       }
     }
@@ -112,31 +112,6 @@ public function orderBy($field, $direction = 'ASC') {
   /**
    * {@inheritdoc}
    */
-  public function addExpression($expression, $alias = NULL, $arguments = array()) {
-    if (empty($alias)) {
-      $alias = 'expression';
-    }
-
-    // This implements counting in the same manner as the parent method.
-    $alias_candidate = $alias;
-    $count = 2;
-    while (!empty($this->expressions[$alias_candidate])) {
-      $alias_candidate = $alias . '_' . $count++;
-    }
-    $alias = $alias_candidate;
-
-    $this->expressions[$alias] = array(
-      'expression' => $expression,
-      'alias' => $this->connection->escapeAlias($alias_candidate),
-      'arguments' => $arguments,
-    );
-
-    return $alias;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function execute() {
     $this->connection->addSavepoint();
     try {
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index a11d560..f6122cf 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -185,6 +185,15 @@ public function __construct(array $values, $entity_type, $bundle = FALSE, $trans
   }
 
   /**
+   * Returns the typed data manager.
+   *
+   * @return \Drupal\Core\TypedData\TypedDataManager
+   */
+  protected function typedDataManager() {
+    return \Drupal::typedDataManager();
+  }
+
+  /**
    * {@inheritdoc}
    */
   protected function getLanguages() {
@@ -369,7 +378,8 @@ protected function getTranslatedField($name, $langcode) {
         if (isset($this->values[$name][$langcode])) {
           $value = $this->values[$name][$langcode];
         }
-        $field = \Drupal::service('plugin.manager.field.field_type')->createFieldItemList($this, $name, $value);
+        $entity_adapter = $this->getTypedData();
+        $field = \Drupal::typedDataManager()->getPropertyInstance($entity_adapter, $name, $value);
         if ($default) {
           // $this->defaultLangcode might not be set if we are initializing the
           // default language code cache, in which case there is no valid
@@ -884,8 +894,7 @@ public function __clone() {
     // Avoid deep-cloning when we are initializing a translation object, since
     // it will represent the same entity, only with a different active language.
     if (!$this->translationInitialize) {
-      // The translation is a different object, and needs its own TypedData
-      // adapter object.
+      // The translation is a different object, and needs its own TypedData object.
       $this->typedData = NULL;
       $definitions = $this->getFieldDefinitions();
       foreach ($this->fields as $name => $values) {
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityForm.php b/core/lib/Drupal/Core/Entity/ContentEntityForm.php
index 35834ab..97f4c51 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityForm.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityForm.php
@@ -76,7 +76,6 @@ public function validate(array $form, FormStateInterface $form_state) {
     // Execute legacy global validation handlers.
     $form_state->setValidateHandlers([]);
     \Drupal::service('form_validator')->executeValidateHandlers($form, $form_state);
-    return $entity;
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php b/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
index d1beeeb..dee07c1 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
@@ -130,7 +130,7 @@ public function purgeFieldData(FieldDefinitionInterface $field_definition, $batc
    * Reads values to be purged for a single field.
    *
    * This method is called during field data purge, on fields for which
-   * onFieldDefinitionDelete() has previously run.
+   * onFieldDelete() or onFieldDelete() has previously run.
    *
    * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
    *   The field definition.
diff --git a/core/lib/Drupal/Core/Entity/EntityAccessControlHandler.php b/core/lib/Drupal/Core/Entity/EntityAccessControlHandler.php
index 8a25c2a..0994cba 100644
--- a/core/lib/Drupal/Core/Entity/EntityAccessControlHandler.php
+++ b/core/lib/Drupal/Core/Entity/EntityAccessControlHandler.php
@@ -121,9 +121,10 @@ protected function processAccessHookResults(array $access) {
    * do their own custom access checking.
    *
    * @param \Drupal\Core\Entity\EntityInterface $entity
-   *   The entity for which to check access.
+   *   The entity for which to check 'create' access.
    * @param string $operation
-   *   The entity operation. Usually one of 'view', 'update' or 'delete'.
+   *   The entity operation. Usually one of 'view', 'update', 'create' or
+   *   'delete'.
    * @param string $langcode
    *   The language code for which to check access.
    * @param \Drupal\Core\Session\AccountInterface $account
diff --git a/core/lib/Drupal/Core/Entity/EntityFormInterface.php b/core/lib/Drupal/Core/Entity/EntityFormInterface.php
index 29b248b..a8fe39e 100644
--- a/core/lib/Drupal/Core/Entity/EntityFormInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityFormInterface.php
@@ -101,9 +101,6 @@ public function buildEntity(array $form, FormStateInterface $form_state);
    *   A nested array form elements comprising the form.
    * @param \Drupal\Core\Form\FormStateInterface $form_state
    *   The current state of the form.
-   *
-   * @return \Drupal\Core\Entity\ContentEntityTypeInterface
-   *   The built entity.
    */
   public function validate(array $form, FormStateInterface $form_state);
 
diff --git a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php
index 244f25b..1d2bf6d 100644
--- a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php
+++ b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php
@@ -515,7 +515,7 @@ public function getOptionsProvider($property_name, FieldableEntityInterface $ent
     // without modifying the entity being worked on.
     if (is_subclass_of($this->getFieldItemClass(), '\Drupal\Core\TypedData\OptionsProviderInterface')) {
       $items = $entity->get($this->getName());
-      return \Drupal::service('plugin.manager.field.field_type')->createFieldItem($items, 0);
+      return \Drupal::typedDataManager()->getPropertyInstance($items, 0);
     }
     // @todo: Allow setting custom options provider, see
     // https://www.drupal.org/node/2002138.
diff --git a/core/lib/Drupal/Core/Field/FieldConfigBase.php b/core/lib/Drupal/Core/Field/FieldConfigBase.php
index 9a1acc0..60d8d24 100644
--- a/core/lib/Drupal/Core/Field/FieldConfigBase.php
+++ b/core/lib/Drupal/Core/Field/FieldConfigBase.php
@@ -31,7 +31,7 @@
   public $id;
 
   /**
-   * The field name.
+   * The name of the field attached to the bundle by this field.
    *
    * @var string
    */
diff --git a/core/lib/Drupal/Core/Field/FieldConfigStorageBase.php b/core/lib/Drupal/Core/Field/FieldConfigStorageBase.php
index 9fb25b4..4023599 100644
--- a/core/lib/Drupal/Core/Field/FieldConfigStorageBase.php
+++ b/core/lib/Drupal/Core/Field/FieldConfigStorageBase.php
@@ -39,7 +39,7 @@ protected function mapFromStorageRecords(array $records) {
   protected function mapToStorageRecord(EntityInterface $entity) {
     $record = parent::mapToStorageRecord($entity);
     $class = $this->fieldTypeManager->getPluginClass($record['field_type']);
-    $record['settings'] = $class::fieldSettingsToConfigData($record['settings']);
+    $record['settings'] = $class::fieldSettingsFromConfigData($record['settings']);
     return $record;
   }
 
diff --git a/core/lib/Drupal/Core/Field/FieldItemBase.php b/core/lib/Drupal/Core/Field/FieldItemBase.php
index 1bb5486..b2119e3 100644
--- a/core/lib/Drupal/Core/Field/FieldItemBase.php
+++ b/core/lib/Drupal/Core/Field/FieldItemBase.php
@@ -78,7 +78,7 @@ public function getLangcode() {
    * {@inheritdoc}
    */
   public function getFieldDefinition() {
-    return $this->definition->getFieldDefinition();
+    return $this->getParent()->getFieldDefinition();
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Field/FieldItemList.php b/core/lib/Drupal/Core/Field/FieldItemList.php
index 930b4e1..cfb5fdc 100644
--- a/core/lib/Drupal/Core/Field/FieldItemList.php
+++ b/core/lib/Drupal/Core/Field/FieldItemList.php
@@ -43,13 +43,6 @@ class FieldItemList extends ItemList implements FieldItemListInterface {
   /**
    * {@inheritdoc}
    */
-  protected function createItem($offset = 0, $value = NULL) {
-    return \Drupal::service('plugin.manager.field.field_type')->createFieldItem($this, $offset, $value);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function getEntity() {
     // The "parent" is the TypedData object for the entity, we need to unwrap
     // the actual entity.
diff --git a/core/lib/Drupal/Core/Field/FieldTypePluginManager.php b/core/lib/Drupal/Core/Field/FieldTypePluginManager.php
index 81fd394..e355985 100644
--- a/core/lib/Drupal/Core/Field/FieldTypePluginManager.php
+++ b/core/lib/Drupal/Core/Field/FieldTypePluginManager.php
@@ -9,10 +9,8 @@
 
 use Drupal\Component\Plugin\Factory\DefaultFactory;
 use Drupal\Core\Cache\CacheBackendInterface;
-use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Plugin\DefaultPluginManager;
-use Drupal\Core\TypedData\TypedDataManager;
 
 /**
  * Plugin manager for 'field type' plugins.
@@ -22,13 +20,6 @@
 class FieldTypePluginManager extends DefaultPluginManager implements FieldTypePluginManagerInterface {
 
   /**
-   * The typed data manager.
-   *
-   * @var \Drupal\Core\TypedData\TypedDataManager
-   */
-  protected $typedDataManager;
-
-  /**
    * Constructs the FieldTypePluginManager object
    *
    * @param \Traversable $namespaces
@@ -38,50 +29,11 @@ class FieldTypePluginManager extends DefaultPluginManager implements FieldTypePl
    *   Cache backend instance to use.
    * @param \Drupal\Core\Extension\ModuleHandlerInterface
    *   The module handler.
-   * @param \Drupal\Core\TypedData\TypedDataManager $typed_data_manager
-   *   The typed data manager.
    */
-  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, TypedDataManager $typed_data_manager) {
+  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) {
     parent::__construct('Plugin/Field/FieldType', $namespaces, $module_handler, 'Drupal\Core\Field\FieldItemInterface', 'Drupal\Core\Field\Annotation\FieldType');
     $this->alterInfo('field_info');
     $this->setCacheBackend($cache_backend, 'field_types_plugins');
-    $this->typedDataManager = $typed_data_manager;
-  }
-
-  /**
-   * {@inheritdoc}
-   *
-   * Creates a field item, which is not part of an entity or field item list.
-   *
-   * @param string $field_type
-   *   The field type, for which a field item should be created.
-   * @param array $configuration
-   *   The plugin configuration array, i.e. an array with the following keys:
-   *   - field_definition: The field definition object, i.e. an instance of
-   *     Drupal\Core\Field\FieldDefinitionInterface.
-   *
-   * @return \Drupal\Core\Field\FieldItemInterface
-   *   The instantiated object.
-   */
-  public function createInstance($field_type, array $configuration = array()) {
-    $configuration['data_definition'] = $configuration['field_definition']->getItemDefinition();
-    return $this->typedDataManager->createInstance("field_item:$field_type", $configuration);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function createFieldItemList(FieldableEntityInterface $entity, $field_name, $values = NULL) {
-    // Leverage prototyping of the Typed Data API for fast instantiation.
-    return $this->typedDataManager->getPropertyInstance($entity->getTypedData(), $field_name, $values);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function createFieldItem(FieldItemListInterface $items, $index, $values = NULL) {
-    // Leverage prototyping of the Typed Data API for fast instantiation.
-    return $this->typedDataManager->getPropertyInstance($items, $index, $values);
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php b/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php
index 0d48b59..c3e4bcc 100644
--- a/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php
+++ b/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php
@@ -8,7 +8,6 @@
 namespace Drupal\Core\Field;
 
 use Drupal\Component\Plugin\PluginManagerInterface;
-use Drupal\Core\Entity\FieldableEntityInterface;
 
 /**
  * Defines an interface for the field type plugin manager.
@@ -18,45 +17,6 @@
 interface FieldTypePluginManagerInterface extends PluginManagerInterface {
 
   /**
-   * Creates a new field item list.
-   *
-   * The provided entity is assigned as the parent of the created item list.
-   * However, it is the responsibility of the caller (usually the parent entity
-   * itself) to make the parent aware of the field as a new child.
-   *
-   * @param \Drupal\Core\Entity\FieldableEntityInterface $entity
-   *   The entity this field item list will be part of.
-   * @param string $field_name
-   *   The name of the field.
-   * @param mixed $values
-   *   (optional) The data value. If set, it has to match one of the supported
-   *   data type format as documented for the data type classes.
-   *
-   * @return \Drupal\Core\Field\FieldItemListInterface
-   *   The instantiated object.
-   */
-  public function createFieldItemList(FieldableEntityInterface $entity, $field_name, $values = NULL);
-
-  /**
-   * Creates a new field item as part of a field item list.
-   *
-   * The provided item list is assigned as the parent of the created item. It
-   * However, it is the responsibility of the caller (usually the parent list
-   * itself) to have the parent aware of the item as a new child.
-   *
-   * @param \Drupal\Core\Field\FieldItemListInterface $items
-   *   The field item list, for which to create a new item.
-   * @param int $index
-   *   The list index at which the item is created.
-   * @param array|null $values
-   *   (optional) The values to assign to the field item properties.
-   *
-   * @return \Drupal\Core\Field\FieldItemInterface
-   *   The instantiated object.
-   */
-  public function createFieldItem(FieldItemListInterface $items, $index, $values = NULL);
-
-  /**
    * Returns the default field-level settings for a field type.
    *
    * @param string $type
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/BooleanFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/BooleanFormatter.php
index b1d2d8b..11164b4 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/BooleanFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/BooleanFormatter.php
@@ -71,12 +71,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     $formats = [];
     foreach ($this->getOutputFormats() as $format_name => $format) {
       if (is_array($format)) {
-        if ($format_name == 'default') {
-          $formats[$format_name] = $this->t('Field settings (@on_label / @off_label)', array('@on_label' => $format[0], '@off_label' => $format[1]));
-        }
-        else {
-          $formats[$format_name] = $this->t('@on_label / @off_label', array('@on_label' => $format[0], '@off_label' => $format[1]));
-        }
+        $formats[$format_name] = implode(' / ', $format);
       }
       else {
         $formats[$format_name] = $format;
diff --git a/core/lib/Drupal/Core/Field/TypedData/FieldItemDataDefinition.php b/core/lib/Drupal/Core/Field/TypedData/FieldItemDataDefinition.php
index 510c027..7b85e8c 100644
--- a/core/lib/Drupal/Core/Field/TypedData/FieldItemDataDefinition.php
+++ b/core/lib/Drupal/Core/Field/TypedData/FieldItemDataDefinition.php
@@ -78,14 +78,4 @@ public function getMainPropertyName() {
     return $this->fieldDefinition->getFieldStorageDefinition()->getMainPropertyName();
   }
 
-  /**
-   * Gets the field item's field definition.
-   *
-   * @return \Drupal\Core\Field\FieldDefinitionInterface
-   *   The field definition for this field item.
-   */
-  public function getFieldDefinition() {
-    return $this->fieldDefinition;
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Routing/RouteBuilderStatic.php b/core/lib/Drupal/Core/Routing/RouteBuilderStatic.php
new file mode 100644
index 0000000..e85cbb6
--- /dev/null
+++ b/core/lib/Drupal/Core/Routing/RouteBuilderStatic.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Routing\RouteBuilderStatic.
+ */
+
+namespace Drupal\Core\Routing;
+
+/**
+ * This builds a static version of the router.
+ */
+class RouteBuilderStatic implements RouteBuilderInterface {
+
+  /**
+   * Marks a rebuild as being necessary.
+   *
+   * @var bool
+   */
+  protected $rebuildNeeded = FALSE;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function rebuild() {
+    // @todo Add the route for the batch pages when that conversion happens,
+    //   http://drupal.org/node/1987816.
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function rebuildIfNeeded(){
+    if ($this->rebuildNeeded && $this->rebuild()) {
+      $this->rebuildNeeded = FALSE;
+      return TRUE;
+    }
+    return FALSE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setRebuildNeeded() {
+    $this->rebuildNeeded = TRUE;
+  }
+
+  public function getCollectionDuringRebuild() {
+    return FALSE;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Template/Loader/StringLoader.php b/core/lib/Drupal/Core/Template/Loader/StringLoader.php
deleted file mode 100644
index d24b9bf..0000000
--- a/core/lib/Drupal/Core/Template/Loader/StringLoader.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Template\Loader\StringLoader.
- */
-
-namespace Drupal\Core\Template\Loader;
-
-/**
- * Loads string templates, also known as inline templates.
- *
- * This loader is intended to be used in a Twig loader chain and whitelists
- * string templates that begin with the following comment:
- * @code
- * {# inline_template_start #}
- * @endcode
- *
- * This class override ensures that the string loader behaves as expected in
- * the loader chain. If Twig's string loader is used as is, any string (even a
- * reference to a file-based Twig template) is treated as a valid template and
- * is rendered instead of a \Twig_Error_Loader exception being thrown.
- *
- * @see \Drupal\Core\Template\TwigEnvironment::renderInline()
- * @see \Drupal\Core\Render\Element\InlineTemplate
- * @see twig_render_template()
- */
-class StringLoader extends \Twig_Loader_String {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function exists($name) {
-    if (strpos($name, '{# inline_template_start #}') === 0) {
-      return TRUE;
-    }
-    else {
-      return FALSE;
-    }
-  }
-
-}
diff --git a/core/lib/Drupal/Core/Template/TwigEnvironment.php b/core/lib/Drupal/Core/Template/TwigEnvironment.php
index 8118105..e09d9f6 100644
--- a/core/lib/Drupal/Core/Template/TwigEnvironment.php
+++ b/core/lib/Drupal/Core/Template/TwigEnvironment.php
@@ -195,12 +195,8 @@ public function getTemplateClass($name, $index = NULL) {
    *
    * @return string
    *   The rendered inline template.
-   *
-   * @see \Drupal\Core\Template\Loader\StringLoader::exists()
    */
   public function renderInline($template_string, array $context = array()) {
-    // Prefix all inline templates with a special comment.
-    $template_string = '{# inline_template_start #}' . $template_string;
     return $this->loadTemplate($template_string, NULL)->render($context);
   }
 
diff --git a/core/lib/Drupal/Core/Url.php b/core/lib/Drupal/Core/Url.php
index 90d43c2..2fd8aca 100644
--- a/core/lib/Drupal/Core/Url.php
+++ b/core/lib/Drupal/Core/Url.php
@@ -740,6 +740,13 @@ public function toString() {
   }
 
   /**
+   * {@inheritdoc}
+   */
+  public function __toString() {
+    return $this->toString();
+  }
+
+  /**
    * Returns the route information for a render array.
    *
    * @return array
diff --git a/core/modules/aggregator/src/Plugin/Block/AggregatorFeedBlock.php b/core/modules/aggregator/src/Plugin/Block/AggregatorFeedBlock.php
index 539e349..b4b08b2 100644
--- a/core/modules/aggregator/src/Plugin/Block/AggregatorFeedBlock.php
+++ b/core/modules/aggregator/src/Plugin/Block/AggregatorFeedBlock.php
@@ -125,14 +125,14 @@ public function blockForm($form, FormStateInterface $form_state) {
     }
     $form['feed'] = array(
       '#type' => 'select',
-      '#title' => $this->t('Select the feed that should be displayed'),
+      '#title' => t('Select the feed that should be displayed'),
       '#default_value' => $this->configuration['feed'],
       '#options' => $options,
     );
     $range = range(2, 20);
     $form['block_count'] = array(
       '#type' => 'select',
-      '#title' => $this->t('Number of news items in block'),
+      '#title' => t('Number of news items in block'),
       '#default_value' => $this->configuration['block_count'],
       '#options' => array_combine($range, $range),
     );
diff --git a/core/modules/block/tests/modules/block_test/src/Plugin/Block/TestBlockInstantiation.php b/core/modules/block/tests/modules/block_test/src/Plugin/Block/TestBlockInstantiation.php
index e9b4144..7390bc5 100644
--- a/core/modules/block/tests/modules/block_test/src/Plugin/Block/TestBlockInstantiation.php
+++ b/core/modules/block/tests/modules/block_test/src/Plugin/Block/TestBlockInstantiation.php
@@ -43,7 +43,7 @@ protected function blockAccess(AccountInterface $account) {
   public function blockForm($form, FormStateInterface $form_state) {
     $form['display_message'] = array(
       '#type' => 'textfield',
-      '#title' => $this->t('Display message'),
+      '#title' => t('Display message'),
       '#default_value' => $this->configuration['display_message'],
     );
     return $form;
diff --git a/core/modules/block_content/src/Plugin/Block/BlockContentBlock.php b/core/modules/block_content/src/Plugin/Block/BlockContentBlock.php
index e59eefd..88988a1 100644
--- a/core/modules/block_content/src/Plugin/Block/BlockContentBlock.php
+++ b/core/modules/block_content/src/Plugin/Block/BlockContentBlock.php
@@ -117,12 +117,12 @@ public function blockForm($form, FormStateInterface $form_state) {
     $form['view_mode'] = array(
       '#type' => 'select',
       '#options' => $options,
-      '#title' => $this->t('View mode'),
-      '#description' => $this->t('Output the block in this view mode.'),
+      '#title' => t('View mode'),
+      '#description' => t('Output the block in this view mode.'),
       '#default_value' => $this->configuration['view_mode'],
       '#access' => (count($options) > 1),
     );
-    $form['title']['#description'] = $this->t('The title of the block as shown to the user.');
+    $form['title']['#description'] = t('The title of the block as shown to the user.');
     return $form;
   }
 
@@ -145,7 +145,7 @@ public function build() {
     }
     else {
       return array(
-        '#markup' => $this->t('Block with uuid %uuid does not exist. <a href="!url">Add custom block</a>.', array(
+        '#markup' => t('Block with uuid %uuid does not exist. <a href="!url">Add custom block</a>.', array(
           '%uuid' => $uuid,
           '!url' => $this->urlGenerator->generate('block_content.add_page')
         )),
diff --git a/core/modules/book/src/Plugin/Block/BookNavigationBlock.php b/core/modules/book/src/Plugin/Block/BookNavigationBlock.php
index 4ce4c3f..0512252 100644
--- a/core/modules/book/src/Plugin/Block/BookNavigationBlock.php
+++ b/core/modules/book/src/Plugin/Block/BookNavigationBlock.php
@@ -99,15 +99,15 @@ public function defaultConfiguration() {
    */
   function blockForm($form, FormStateInterface $form_state) {
     $options = array(
-      'all pages' => $this->t('Show block on all pages'),
-      'book pages' => $this->t('Show block only on book pages'),
+      'all pages' => t('Show block on all pages'),
+      'book pages' => t('Show block only on book pages'),
     );
     $form['book_block_mode'] = array(
       '#type' => 'radios',
-      '#title' => $this->t('Book navigation block display'),
+      '#title' => t('Book navigation block display'),
       '#options' => $options,
       '#default_value' => $this->configuration['block_mode'],
-      '#description' => $this->t("If <em>Show block on all pages</em> is selected, the block will contain the automatically generated menus for all of the site's books. If <em>Show block only on book pages</em> is selected, the block will contain only the one menu corresponding to the current page's book. In this case, if the current page is not in a book, no block will be displayed. The <em>Page specific visibility settings</em> or other visibility settings can be used in addition to selectively display this block."),
+      '#description' => t("If <em>Show block on all pages</em> is selected, the block will contain the automatically generated menus for all of the site's books. If <em>Show block only on book pages</em> is selected, the block will contain only the one menu corresponding to the current page's book. In this case, if the current page is not in a book, no block will be displayed. The <em>Page specific visibility settings</em> or other visibility settings can be used in addition to selectively display this block."),
       );
 
     return $form;
diff --git a/core/modules/ckeditor/src/Plugin/Editor/CKEditor.php b/core/modules/ckeditor/src/Plugin/Editor/CKEditor.php
index 949c8e5..beba1f5 100644
--- a/core/modules/ckeditor/src/Plugin/Editor/CKEditor.php
+++ b/core/modules/ckeditor/src/Plugin/Editor/CKEditor.php
@@ -26,10 +26,7 @@
  *   label = @Translation("CKEditor"),
  *   supports_content_filtering = TRUE,
  *   supports_inline_editing = TRUE,
- *   is_xss_safe = FALSE,
- *   supported_element_types = {
- *     "textarea"
- *   }
+ *   is_xss_safe = FALSE
  * )
  */
 class CKEditor extends EditorBase implements ContainerFactoryPluginInterface {
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index 446c856..d705b65 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -739,7 +739,7 @@ function template_preprocess_comment(&$variables) {
     $variables['permalink'] = \Drupal::l(t('Permalink'), $comment->permalink());
   }
 
-  $variables['submitted'] = t('Submitted by @username on @datetime', array('@username' => $variables['author'], '@datetime' => $variables['created']));
+  $variables['submitted'] = t('Submitted by !username on !datetime', array('!username' => $variables['author'], '!datetime' => $variables['created']));
 
   if ($comment->hasParentComment()) {
     // Fetch and store the parent comment information for use in templates.
diff --git a/core/modules/comment/src/CommentForm.php b/core/modules/comment/src/CommentForm.php
index 1a8dc4f..8766e27 100644
--- a/core/modules/comment/src/CommentForm.php
+++ b/core/modules/comment/src/CommentForm.php
@@ -287,7 +287,8 @@ public function buildEntity(array $form, FormStateInterface $form_state) {
    * {@inheritdoc}
    */
   public function validate(array $form, FormStateInterface $form_state) {
-    $comment = parent::validate($form, $form_state);
+    parent::validate($form, $form_state);
+    $comment = $this->buildEntity($form, $form_state);
 
     // Customly trigger validation of manually added fields and add in
     // violations.
@@ -299,8 +300,6 @@ public function validate(array $form, FormStateInterface $form_state) {
     foreach ($violations as $violation) {
       $form_state->setErrorByName('name', $violation->getMessage());
     }
-
-    return $comment;
   }
 
   /**
diff --git a/core/modules/contact/src/ContactMessageAccessControlHandler.php b/core/modules/contact/src/ContactMessageAccessControlHandler.php
deleted file mode 100644
index 89fe958..0000000
--- a/core/modules/contact/src/ContactMessageAccessControlHandler.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\contact\ContactMessageAccessControlHandler.
- */
-
-namespace Drupal\contact;
-
-use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Entity\EntityAccessControlHandler;
-use Drupal\Core\Session\AccountInterface;
-
-/**
- * Defines the access control handler for the message form entity type.
- *
- * @see \Drupal\contact\Entity\Message.
- */
-class ContactMessageAccessControlHandler extends EntityAccessControlHandler {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {
-    return AccessResult::allowedIfHasPermission($account, 'access site-wide contact form');
-  }
-}
diff --git a/core/modules/contact/src/Entity/Message.php b/core/modules/contact/src/Entity/Message.php
index c7df098..d9967e2 100644
--- a/core/modules/contact/src/Entity/Message.php
+++ b/core/modules/contact/src/Entity/Message.php
@@ -19,14 +19,12 @@
  *   id = "contact_message",
  *   label = @Translation("Contact message"),
  *   handlers = {
- *     "access" = "Drupal\contact\ContactMessageAccessControlHandler",
  *     "storage" = "Drupal\Core\Entity\ContentEntityNullStorage",
  *     "view_builder" = "Drupal\contact\MessageViewBuilder",
  *     "form" = {
  *       "default" = "Drupal\contact\MessageForm"
  *     }
  *   },
- *   admin_permission = "administer contact forms",
  *   entity_keys = {
  *     "bundle" = "contact_form",
  *     "uuid" = "uuid"
diff --git a/core/modules/contact/src/Tests/MessageEntityTest.php b/core/modules/contact/src/Tests/MessageEntityTest.php
index 52c78a2..f888345 100644
--- a/core/modules/contact/src/Tests/MessageEntityTest.php
+++ b/core/modules/contact/src/Tests/MessageEntityTest.php
@@ -7,7 +7,7 @@
 namespace Drupal\contact\Tests;
 
 use Drupal\contact\Entity\Message;
-use Drupal\system\Tests\Entity\EntityUnitTestBase;
+use Drupal\simpletest\KernelTestBase;
 
 /**
  * Tests the message entity class.
@@ -15,7 +15,7 @@
  * @group contact
  * @see \Drupal\contact\Entity\Message
  */
-class MessageEntityTest extends EntityUnitTestBase {
+class MessageEntityTest extends KernelTestBase {
 
   /**
    * Modules to enable.
@@ -62,15 +62,6 @@ public function testMessageMethods() {
     $this->assertEqual($message->getSenderName(), 'sender_name');
     $this->assertEqual($message->getSenderMail(), 'sender_mail');
     $this->assertTrue($message->copySender());
-
-    $no_access_user = $this->createUser(['uid' => 2]);
-    $access_user = $this->createUser(['uid' => 3], ['access site-wide contact form']);
-    $admin = $this->createUser(['uid' => 4], ['administer contact forms']);
-
-    $this->assertFalse(\Drupal::entityManager()->getAccessControlHandler('contact_message')->createAccess(NULL, $no_access_user));
-    $this->assertTrue(\Drupal::entityManager()->getAccessControlHandler('contact_message')->createAccess(NULL, $access_user));
-    $this->assertTrue($message->access('edit', $admin));
-    $this->assertFalse($message->access('edit', $access_user));
   }
 
 }
diff --git a/core/modules/editor/src/Annotation/Editor.php b/core/modules/editor/src/Annotation/Editor.php
index 82dc738..af0e6e3 100644
--- a/core/modules/editor/src/Annotation/Editor.php
+++ b/core/modules/editor/src/Annotation/Editor.php
@@ -62,11 +62,4 @@ class Editor extends Plugin {
    */
   public $is_xss_safe;
 
-  /**
-   * A list of element types this text editor supports.
-   *
-   * @var string[]
-   */
-  public $supported_element_types;
-
 }
diff --git a/core/modules/editor/src/EditorInterface.php b/core/modules/editor/src/EditorInterface.php
index 64466ba..1631ec9 100644
--- a/core/modules/editor/src/EditorInterface.php
+++ b/core/modules/editor/src/EditorInterface.php
@@ -44,14 +44,6 @@ public function getFilterFormat();
   public function getEditor();
 
   /**
-   * Set the text editor plugin ID.
-   *
-   * @param string $editor
-   *   The text editor plugin ID to set.
-   */
-  public function setEditor($editor);
-
-  /**
    * Returns the text editor plugin-specific settings.
    *
    * @return array
diff --git a/core/modules/editor/src/Element.php b/core/modules/editor/src/Element.php
index 934e5e4..f0b97bf 100644
--- a/core/modules/editor/src/Element.php
+++ b/core/modules/editor/src/Element.php
@@ -53,12 +53,6 @@ function preRenderTextFormat(array $element) {
 
     // Early-return if no text editor is associated with any of the text formats.
     $editors = Editor::loadMultiple($format_ids);
-    foreach ($editors as $key => $editor) {
-      $definition = $this->pluginManager->getDefinition($editor->getEditor());
-      if (!in_array($element['#base_type'], $definition['supported_element_types'])) {
-        unset($editors[$key]);
-      }
-    }
     if (count($editors) === 0) {
       return $element;
     }
diff --git a/core/modules/editor/src/Entity/Editor.php b/core/modules/editor/src/Entity/Editor.php
index 60cdf5a..71cfbef 100644
--- a/core/modules/editor/src/Entity/Editor.php
+++ b/core/modules/editor/src/Entity/Editor.php
@@ -144,14 +144,6 @@ public function getEditor() {
   /**
    * {@inheritdoc}
    */
-  public function setEditor($editor) {
-    $this->editor = $editor;
-    return $this;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function getSettings() {
     return $this->settings;
   }
diff --git a/core/modules/editor/src/Tests/EditorLoadingTest.php b/core/modules/editor/src/Tests/EditorLoadingTest.php
index 3a8a374..e693a0e 100644
--- a/core/modules/editor/src/Tests/EditorLoadingTest.php
+++ b/core/modules/editor/src/Tests/EditorLoadingTest.php
@@ -7,9 +7,6 @@
 
 namespace Drupal\editor\Tests;
 
-use Drupal\Core\Entity\Entity;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\simpletest\WebTestBase;
 
 /**
@@ -50,10 +47,6 @@ class EditorLoadingTest extends WebTestBase {
   protected function setUp() {
     parent::setUp();
 
-    // Let there be T-rex.
-    \Drupal::state()->set('editor_test_give_me_a_trex_thanks', TRUE);
-    \Drupal::service('plugin.manager.editor')->clearCachedDefinitions();
-
     // Add text formats.
     $filtered_html_format = entity_create('filter_format', array(
       'format' => 'filtered_html',
@@ -70,42 +63,16 @@ protected function setUp() {
     ));
     $full_html_format->save();
 
-    // Create article node type.
+    // Create node type.
     $this->drupalCreateContentType(array(
       'type' => 'article',
       'name' => 'Article',
     ));
 
-    // Create page node type, but remove the body.
-    $this->drupalCreateContentType(array(
-      'type' => 'page',
-      'name' => 'Page',
-    ));
-    $body = FieldConfig::loadByName('node', 'page', 'body');
-    $body->delete();
-
-    // Create a formatted text field, which uses an <input type="text">.
-    FieldStorageConfig::create(array(
-      'field_name' => 'field_text',
-      'entity_type' => 'node',
-      'type' => 'text',
-    ))->save();
-
-    FieldConfig::create(array(
-      'field_name' => 'field_text',
-      'entity_type' => 'node',
-      'label' => 'Textfield',
-      'bundle' => 'page',
-    ))->save();
-
-    entity_get_form_display('node', 'page', 'default')
-      ->setComponent('field_text')
-      ->save();
-
     // Create 3 users, each with access to different text formats.
     $this->untrustedUser = $this->drupalCreateUser(array('create article content', 'edit any article content'));
     $this->normalUser = $this->drupalCreateUser(array('create article content', 'edit any article content', 'use text format filtered_html'));
-    $this->privilegedUser = $this->drupalCreateUser(array('create article content', 'edit any article content', 'create page content', 'edit any page content', 'use text format filtered_html', 'use text format full_html'));
+    $this->privilegedUser = $this->drupalCreateUser(array('create article content', 'edit any article content', 'use text format filtered_html', 'use text format full_html'));
   }
 
   /**
@@ -131,7 +98,7 @@ public function testLoading() {
     // - doesn't have access to the full_html text format, so: no text editor.
     $this->drupalLogin($this->normalUser);
     $this->drupalGet('node/add/article');
-    list( , $editor_settings_present, $editor_js_present, $body, $format_selector) = $this->getThingsToCheck('body');
+    list( , $editor_settings_present, $editor_js_present, $body, $format_selector) = $this->getThingsToCheck();
     $this->assertFalse($editor_settings_present, 'No Text Editor module settings.');
     $this->assertFalse($editor_js_present, 'No Text Editor JavaScript.');
     $this->assertTrue(count($body) === 1, 'A body field exists.');
@@ -143,7 +110,7 @@ public function testLoading() {
     // - does have access to the full_html text format, so: Unicorn text editor.
     $this->drupalLogin($this->privilegedUser);
     $this->drupalGet('node/add/article');
-    list($settings, $editor_settings_present, $editor_js_present, $body, $format_selector) = $this->getThingsToCheck('body');
+    list($settings, $editor_settings_present, $editor_js_present, $body, $format_selector) = $this->getThingsToCheck();
     $expected = array('formats' => array('full_html' => array(
       'format' => 'full_html',
       'editor' => 'unicorn',
@@ -177,7 +144,7 @@ public function testLoading() {
     // - has access to the plain_text text format, so: Unicorn text editor.
     $this->drupalLogin($this->untrustedUser);
     $this->drupalGet('node/add/article');
-    list($settings, $editor_settings_present, $editor_js_present, $body, $format_selector) = $this->getThingsToCheck('body');
+    list($settings, $editor_settings_present, $editor_js_present, $body, $format_selector) = $this->getThingsToCheck();
     $expected = array('formats' => array('plain_text' => array(
       'format' => 'plain_text',
       'editor' => 'unicorn',
@@ -193,7 +160,7 @@ public function testLoading() {
     $hidden_input = $this->xpath('//input[@type="hidden" and @value="plain_text" and contains(@class, "editor") and @data-editor-for="edit-body-0-value"]');
     $this->assertTrue(count($hidden_input) === 1, 'A single text format hidden input exists on the page and has the "editor" class and a "data-editor-for" attribute with the correct value.');
 
-    // Create an "article" node that uses the full_html text format, then try
+    // Create an "article" node that users the full_html text format, then try
     // to let the untrusted user edit it.
     $this->drupalCreateNode(array(
       'type' => 'article',
@@ -206,7 +173,7 @@ public function testLoading() {
     // that (s)he is not allowed to use. The editor is still loaded. CKEditor,
     // for example, supports being loaded in a disabled state.
     $this->drupalGet('node/1/edit');
-    list( , $editor_settings_present, $editor_js_present, $body, $format_selector) = $this->getThingsToCheck('body');
+    list( , $editor_settings_present, $editor_js_present, $body, $format_selector) = $this->getThingsToCheck();
     $this->assertTrue($editor_settings_present, 'Text Editor module settings.');
     $this->assertTrue($editor_js_present, 'Text Editor JavaScript.');
     $this->assertTrue(count($body) === 1, 'A body field exists.');
@@ -216,61 +183,7 @@ public function testLoading() {
     $this->assertTrue(count($hidden_input) === 0, 'A single text format hidden input does not exist on the page.');
   }
 
-  /**
-   * Test supported element types.
-   */
-  public function testSupportedElementTypes() {
-    // Associate the unicorn text editor with the "Full HTML" text format.
-    $editor = entity_create('editor', array(
-      'format' => 'full_html',
-      'editor' => 'unicorn',
-      'image_upload' => array(
-        'status' => FALSE,
-        'scheme' => file_default_scheme(),
-        'directory' => 'inline-images',
-        'max_size' => '',
-        'max_dimensions' => array('width' => '', 'height' => ''),
-      )
-    ));
-    $editor->save();
-
-    // Create an "page" node that uses the full_html text format.
-    $this->drupalCreateNode(array(
-      'type' => 'page',
-      'field_text' => array(
-        array('value' => $this->randomMachineName(32), 'format' => 'full_html')
-      ),
-    ));
-
-    // Assert the unicorn editor works with textfields.
-    $this->drupalLogin($this->privilegedUser);
-    $this->drupalGet('node/1/edit');
-    list( , $editor_settings_present, $editor_js_present, $field, $format_selector) = $this->getThingsToCheck('field-text', 'input');
-    $this->assertTrue($editor_settings_present, "Text Editor module's JavaScript settings are on the page.");
-    $this->assertTrue($editor_js_present, 'Text Editor JavaScript is present.');
-    $this->assertTrue(count($field) === 1, 'A text field exists.');
-    $this->assertTrue(count($format_selector) === 1, 'A single text format selector exists on the page.');
-    $specific_format_selector = $this->xpath('//select[contains(@class, "filter-list") and contains(@class, "editor") and @data-editor-for="edit-field-text-0-value"]');
-    $this->assertTrue(count($specific_format_selector) === 1, 'A single text format selector exists on the page and has the "editor" class and a "data-editor-for" attribute with the correct value.');
-
-    // Associate the trex text editor with the "Full HTML" text format.
-    $editor->delete();
-    entity_create('editor', array(
-      'format' => 'full_html',
-      'editor' => 'trex',
-    ))->save();
-
-    $this->drupalGet('node/1/edit');
-    list( , $editor_settings_present, $editor_js_present, $field, $format_selector) = $this->getThingsToCheck('field-text', 'input');
-    $this->assertFalse($editor_settings_present, "Text Editor module's JavaScript settings are not on the page.");
-    $this->assertFalse($editor_js_present, 'Text Editor JavaScript is not present.');
-    $this->assertTrue(count($field) === 1, 'A text field exists.');
-    $this->assertTrue(count($format_selector) === 1, 'A single text format selector exists on the page.');
-    $specific_format_selector = $this->xpath('//select[contains(@class, "filter-list") and contains(@class, "editor") and @data-editor-for="edit-field-text-0-value"]');
-    $this->assertFalse(count($specific_format_selector) === 1, 'A single text format selector exists on the page and has the "editor" class and a "data-editor-for" attribute with the correct value.');
-  }
-
-  protected function getThingsToCheck($field_name, $type = 'textarea') {
+  protected function getThingsToCheck() {
     $settings = $this->getDrupalSettings();
     return array(
       // JavaScript settings.
@@ -280,7 +193,7 @@ protected function getThingsToCheck($field_name, $type = 'textarea') {
       // Editor.module's JS present.
       strpos($this->getRawContent(), drupal_get_path('module', 'editor') . '/js/editor.js') !== FALSE,
       // Body field.
-      $this->xpath('//' . $type . '[@id="edit-' . $field_name . '-0-value"]'),
+      $this->xpath('//textarea[@id="edit-body-0-value"]'),
       // Format selector.
       $this->xpath('//select[contains(@class, "filter-list")]'),
     );
diff --git a/core/modules/editor/tests/modules/config/schema/editor_test.schema.yml b/core/modules/editor/tests/modules/config/schema/editor_test.schema.yml
index 4e01316..64d94f8 100644
--- a/core/modules/editor/tests/modules/config/schema/editor_test.schema.yml
+++ b/core/modules/editor/tests/modules/config/schema/editor_test.schema.yml
@@ -7,11 +7,3 @@ editor.settings.unicorn:
     ponies_too:
       type: boolean
       label: 'Ponies too'
-
-editor.settings.trex:
-  type: mapping
-  label: 'T-Rex settings'
-  mapping:
-    stumpy_arms:
-      type: boolean
-      label: 'Stumpy arms'
diff --git a/core/modules/editor/tests/modules/editor_test.libraries.yml b/core/modules/editor/tests/modules/editor_test.libraries.yml
index 221a0be..b65d5f4 100644
--- a/core/modules/editor/tests/modules/editor_test.libraries.yml
+++ b/core/modules/editor/tests/modules/editor_test.libraries.yml
@@ -2,7 +2,3 @@ unicorn:
   version: VERSION
   js:
     unicorn.js: {}
-trex:
-  version: VERSION
-  js:
-    trex.js: {}
diff --git a/core/modules/editor/tests/modules/editor_test.module b/core/modules/editor/tests/modules/editor_test.module
index 9b30bc7..45d1f82 100644
--- a/core/modules/editor/tests/modules/editor_test.module
+++ b/core/modules/editor/tests/modules/editor_test.module
@@ -35,12 +35,3 @@ function editor_test_editor_xss_filter_alter(&$editor_xss_filter_class, FilterFo
     $editor_xss_filter_class = '\Drupal\editor_test\EditorXssFilter\Insecure';
   }
 }
-
-/**
- * Implements hook_editor_info_alter().
- */
-function editor_test_editor_info_alter(&$items) {
-  if (!\Drupal::state()->get('editor_test_give_me_a_trex_thanks', FALSE)) {
-    unset($items['trex']);
-  }
-}
diff --git a/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php b/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php
deleted file mode 100644
index 5539c16..0000000
--- a/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\editor_test\Plugin\Editor\TRexEditor.
- */
-
-namespace Drupal\editor_test\Plugin\Editor;
-
-use Drupal\Core\Form\FormStateInterface;
-use Drupal\editor\Plugin\EditorBase;
-use Drupal\editor\Entity\Editor as EditorEntity;
-
-/**
- * Defines a Tyrannosaurus-Rex powered text editor for testing purposes.
- *
- * @Editor(
- *   id = "trex",
- *   label = @Translation("TRex Editor"),
- *   supports_content_filtering = TRUE,
- *   supports_inline_editing = TRUE,
- *   is_xss_safe = FALSE,
- *   supported_element_types = {
- *     "textarea",
- *   }
- * )
- */
-class TRexEditor extends EditorBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getDefaultSettings() {
-    return array('stumpy_arms' => TRUE);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function settingsForm(array $form, FormStateInterface $form_state, EditorEntity $editor) {
-    $form['stumpy_arms'] = array(
-      '#title' => t('Stumpy arms'),
-      '#type' => 'checkbox',
-      '#default_value' => TRUE,
-    );
-    return $form;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getJSSettings(EditorEntity $editor) {
-    $js_settings = array();
-    $settings = $editor->getSettings();
-    if ($settings['stumpy_arms']) {
-      $js_settings['doMyArmsLookStumpy'] = TRUE;
-    }
-    return $js_settings;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getLibraries(EditorEntity $editor) {
-    return array(
-      'editor_test/trex',
-    );
-  }
-
-}
diff --git a/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php b/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php
index e859732..7539021 100644
--- a/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php
+++ b/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php
@@ -19,11 +19,7 @@
  *   label = @Translation("Unicorn Editor"),
  *   supports_content_filtering = TRUE,
  *   supports_inline_editing = TRUE,
- *   is_xss_safe = FALSE,
- *   supported_element_types = {
- *     "textarea",
- *     "textfield",
- *   }
+ *   is_xss_safe = FALSE
  * )
  */
 class UnicornEditor extends EditorBase {
diff --git a/core/modules/field/src/Entity/FieldStorageConfig.php b/core/modules/field/src/Entity/FieldStorageConfig.php
index fd3bd14..a1c2d58 100644
--- a/core/modules/field/src/Entity/FieldStorageConfig.php
+++ b/core/modules/field/src/Entity/FieldStorageConfig.php
@@ -630,7 +630,7 @@ public function getOptionsProvider($property_name, FieldableEntityInterface $ent
     // without modifying the entity being worked on.
     if (is_subclass_of($this->getFieldItemClass(), '\Drupal\Core\TypedData\OptionsProviderInterface')) {
       $items = $entity->get($this->getName());
-      return \Drupal::service('plugin.manager.field.field_type')->createFieldItem($items, 0);
+      return \Drupal::typedDataManager()->getPropertyInstance($items, 0);
     }
     // @todo: Allow setting custom options provider, see
     // https://www.drupal.org/node/2002138.
diff --git a/core/modules/field/src/Tests/Boolean/BooleanFormatterSettingsTest.php b/core/modules/field/src/Tests/Boolean/BooleanFormatterSettingsTest.php
deleted file mode 100644
index 2f0ca0e..0000000
--- a/core/modules/field/src/Tests/Boolean/BooleanFormatterSettingsTest.php
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\field\Tests\Boolean\BooleanFormatterSettingsTest.
- */
-
-namespace Drupal\field\Tests\Boolean;
-
-use Drupal\Component\Utility\Unicode;
-use Drupal\Component\Utility\String;
-use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
-use Drupal\Core\Entity\FieldableEntityInterface;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\simpletest\WebTestBase;
-
-/**
- * Tests the Boolean field formatter settings.
- *
- * @group field
- */
-class BooleanFormatterSettingsTest extends WebTestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = ['field', 'field_ui', 'text', 'node', 'user'];
-
-  /**
-   * The name of the entity bundle that is created in the test.
-   *
-   * @var string
-   */
-  protected $bundle;
-
-  /**
-   * The name of the Boolean field to use for testing.
-   *
-   * @var string
-   */
-  protected $fieldName;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-
-    // Create a content type. Use Node because it has Field UI pages that work.
-    $type_name = Unicode::strtolower($this->randomMachineName(8)) . '_test';
-    $type = $this->drupalCreateContentType(array('name' => $type_name, 'type' => $type_name));
-    $this->bundle = $type->id();
-
-    $admin_user = $this->drupalCreateUser(array('access content', 'administer content types', 'administer node fields', 'administer node display', 'bypass node access', 'administer nodes'));
-    $this->drupalLogin($admin_user);
-
-    $this->fieldName = Unicode::strtolower($this->randomMachineName(8));
-
-    $field_storage = FieldStorageConfig::create([
-      'field_name' => $this->fieldName,
-      'entity_type' => 'node',
-      'type' => 'boolean',
-    ]);
-    $field_storage->save();
-
-    $instance = FieldConfig::create([
-      'field_storage' => $field_storage,
-      'bundle' => $this->bundle,
-      'label' => $this->randomMachineName(),
-    ]);
-    $instance->save();
-
-    $display = entity_get_display('node', $this->bundle, 'default')
-      ->setComponent($this->fieldName, [
-        'type' => 'boolean',
-        'settings' => [],
-      ]);
-    $display->save();
-  }
-
-  /**
-   * Tests the formatter settings page for the Boolean formatter.
-   */
-  function testBooleanFormatterSettings() {
-    // List the options we expect to see on the settings form. Omit the one
-    // with the Unicode check/x characters, which does not appear to work
-    // well in WebTestBase.
-    $options = array(
-      'Yes / No',
-      'True / False',
-      'On / Off',
-      'Enabled / Disabled',
-      '1 / 0',
-      'Custom',
-    );
-
-    // Define what the "default" option should look like, depending on the
-    // field settings.
-    $default = 'Field settings (@on / @off)';
-
-    // For several different values of the field settings, test that the
-    // options, including default, are shown correctly.
-    $settings = array(
-      array('Yes', 'No'),
-      array('On', 'Off'),
-      array('TRUE', 'FALSE'),
-    );
-
-    foreach ($settings as $values) {
-      // Set up the field settings.
-      $this->drupalGet('admin/structure/types/manage/' . $this->bundle . '/fields/node.' . $this->bundle . '.' . $this->fieldName . '/storage');
-      $this->drupalPostForm(NULL, array(
-        'field_storage[settings][on_label]' => $values[0],
-        'field_storage[settings][off_label]' => $values[1],
-      ), 'Save field settings');
-
-      // Open the Manage Display page and trigger the field settings form.
-      $this->drupalGet('admin/structure/types/manage/' . $this->bundle . '/display');
-      $this->drupalPostAjaxForm(NULL, array(), $this->fieldName . '_settings_edit');
-
-      // Test that the settings options are present in the correct format.
-      foreach ($options as $string) {
-        $this->assertText($string);
-      }
-      $this->assertText(String::format($default, array('@on' => $values[0], '@off' => $values[1])));
-    }
-  }
-
-}
diff --git a/core/modules/field/src/Tests/FieldCrudTest.php b/core/modules/field/src/Tests/FieldCrudTest.php
index 66d727c..33ace63 100644
--- a/core/modules/field/src/Tests/FieldCrudTest.php
+++ b/core/modules/field/src/Tests/FieldCrudTest.php
@@ -75,24 +75,12 @@ function testCreateField() {
     $field = entity_create('field_config', $this->fieldDefinition);
     $field->save();
 
-    $field = FieldConfig::load($field->id());
-    $this->assertTrue($field->getSetting('field_setting_from_config_data'));
-    $this->assertNull($field->getSetting('config_data_from_field_setting'));
-
     // Read the configuration. Check against raw configuration data rather than
     // the loaded ConfigEntity, to be sure we check that the defaults are
     // applied on write.
     $config = $this->config('field.field.' . $field->id())->get();
     $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
 
-    $this->assertTrue($config['settings']['config_data_from_field_setting']);
-    $this->assertTrue(!isset($config['settings']['field_setting_from_config_data']));
-
-    // Since we are working with raw configuration, this needs to be unset
-    // manually.
-    // @see Drupal\field_test\Plugin\Field\FieldType\TestItem::fieldSettingsFromConfigData()
-    unset($config['settings']['config_data_from_field_setting']);
-
     // Check that default values are set.
     $this->assertEqual($config['required'], FALSE, 'Required defaults to false.');
     $this->assertIdentical($config['label'], $this->fieldDefinition['field_name'], 'Label defaults to field name.');
diff --git a/core/modules/field/src/Tests/FieldStorageCrudTest.php b/core/modules/field/src/Tests/FieldStorageCrudTest.php
index ac9f601..37e4afb 100644
--- a/core/modules/field/src/Tests/FieldStorageCrudTest.php
+++ b/core/modules/field/src/Tests/FieldStorageCrudTest.php
@@ -44,11 +44,6 @@ function testCreate() {
     field_test_memorize();
     $field_storage = entity_create('field_storage_config', $field_storage_definition);
     $field_storage->save();
-
-    $field_storage = FieldStorageConfig::load($field_storage->id());
-    $this->assertTrue($field_storage->getSetting('storage_setting_from_config_data'));
-    $this->assertNull($field_storage->getSetting('config_data_from_storage_setting'));
-
     $mem = field_test_memorize();
     $this->assertIdentical($mem['field_test_field_storage_config_create'][0][0]->getName(), $field_storage_definition['field_name'], 'hook_entity_create() called with correct arguments.');
     $this->assertIdentical($mem['field_test_field_storage_config_create'][0][0]->getType(), $field_storage_definition['type'], 'hook_entity_create() called with correct arguments.');
@@ -58,14 +53,6 @@ function testCreate() {
     // applied on write.
     $field_storage_config = $this->config('field.storage.' . $field_storage->id())->get();
 
-    $this->assertTrue($field_storage_config['settings']['config_data_from_storage_setting']);
-    $this->assertTrue(!isset($field_storage_config['settings']['storage_setting_from_config_data']));
-
-    // Since we are working with raw configuration, this needs to be unset
-    // manually.
-    // @see Drupal\field_test\Plugin\Field\FieldType\TestItem::storageSettingsFromConfigData()
-    unset($field_storage_config['settings']['config_data_from_storage_setting']);
-
     // Ensure that basic properties are preserved.
     $this->assertEqual($field_storage_config['field_name'], $field_storage_definition['field_name'], 'The field name is properly saved.');
     $this->assertEqual($field_storage_config['entity_type'], $field_storage_definition['entity_type'], 'The field entity type is properly saved.');
diff --git a/core/modules/field/src/Tests/FieldTypePluginManagerTest.php b/core/modules/field/src/Tests/FieldTypePluginManagerTest.php
index 758b2f5..ea12c40 100644
--- a/core/modules/field/src/Tests/FieldTypePluginManagerTest.php
+++ b/core/modules/field/src/Tests/FieldTypePluginManagerTest.php
@@ -7,10 +7,6 @@
 
 namespace Drupal\field\Tests;
 
-use Drupal\Component\Utility\String;
-use Drupal\Core\Field\BaseFieldDefinition;
-use Drupal\entity_test\Entity\EntityTest;
-
 /**
  * Tests the field type manager.
  *
@@ -30,63 +26,4 @@ function testDefaultSettings() {
     }
   }
 
-  /**
-   * Tests creation of field item instances.
-   */
-  public function testCreateInstance() {
-    /** @var \Drupal\Core\Field\FieldTypePluginManagerInterface $field_type_manager */
-    $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
-    foreach (array('test_field', 'shape', 'hidden_test_field') as $type) {
-      $definition = $field_type_manager->getDefinition($type);
-
-      $class = $definition['class'];
-      $field_name = 'field_' . $type;
-
-      $field_definition = BaseFieldDefinition::create($type);
-
-      $configuration = array(
-        'field_definition' => $field_definition,
-        'name' => $field_name,
-        'parent' => NULL,
-      );
-
-      $instance = $field_type_manager->createInstance($type, $configuration);
-
-      $this->assertTrue($instance instanceof $class, String::format('Created a @class instance', array('@class' => $class)));
-      $this->assertEqual($field_name, $instance->getName(), String::format('Instance name is @name', array('@name' => $field_name)));
-    }
-  }
-
-  /**
-   * Tests creation of field item instances.
-   */
-  public function testCreateInstanceWithConfig() {
-    /** @var \Drupal\Core\Field\FieldTypePluginManagerInterface $field_type_manager */
-    $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
-    $type = 'test_field';
-    $definition = $field_type_manager->getDefinition($type);
-
-    $class = $definition['class'];
-    $field_name = 'field_' . $type;
-
-    $field_definition = BaseFieldDefinition::create($type)
-      ->setLabel('Jenny')
-      ->setDefaultValue(8675309);
-
-    $configuration = array(
-      'field_definition' => $field_definition,
-      'name' => $field_name,
-      'parent' => NULL,
-    );
-
-    $entity = EntityTest::create();
-
-    $instance = $field_type_manager->createInstance($type, $configuration);
-
-    $this->assertTrue($instance instanceof $class, String::format('Created a @class instance', array('@class' => $class)));
-    $this->assertEqual($field_name, $instance->getName(), String::format('Instance name is @name', array('@name' => $field_name)));
-    $this->assertEqual($instance->getFieldDefinition()->getLabel(), 'Jenny', 'Instance label is Jenny');
-    $this->assertEqual($instance->getFieldDefinition()->getDefaultValue($entity), [['value' => 8675309]], 'Instance default_value is 8675309');
-  }
-
 }
diff --git a/core/modules/field/tests/modules/field_test/config/schema/field_test.schema.yml b/core/modules/field/tests/modules/field_test/config/schema/field_test.schema.yml
index ed85be7..647ae13 100644
--- a/core/modules/field/tests/modules/field_test/config/schema/field_test.schema.yml
+++ b/core/modules/field/tests/modules/field_test/config/schema/field_test.schema.yml
@@ -62,9 +62,6 @@ field.storage_settings.test_field:
     unchangeable:
       type: string
       label: 'An unchangeable field storage setting'
-    config_data_from_storage_setting:
-      type: boolean
-      label: 'Test FieldItemInterface::storageSettingsToConfigData()'
 
 field.storage_settings.test_field_with_dependencies:
   type: field.storage_settings.test_field
@@ -81,9 +78,6 @@ field.field_settings.test_field:
     test_field_setting:
       type: string
       label: 'Test field setting'
-    config_data_from_field_setting:
-      type: boolean
-      label: 'Test FieldItemInterface::fieldSettingsToConfigData()'
 
 field.field_settings.test_field_with_dependencies:
   type: field.field_settings.test_field
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php
index 9886b03..ddfe207 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php
@@ -137,40 +137,4 @@ public function isEmpty() {
     return empty($this->value);
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public static function storageSettingsToConfigData(array $settings) {
-    $settings['config_data_from_storage_setting'] = 'TRUE';
-    unset($settings['storage_setting_from_config_data']);
-    return $settings;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function storageSettingsFromConfigData(array $settings) {
-    $settings['storage_setting_from_config_data'] = 'TRUE';
-    unset($settings['config_data_from_storage_setting']);
-    return $settings;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function fieldSettingsToConfigData(array $settings) {
-    $settings['config_data_from_field_setting'] = 'TRUE';
-    unset($settings['field_setting_from_config_data']);
-    return $settings;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function fieldSettingsFromConfigData(array $settings) {
-    $settings['field_setting_from_config_data'] = 'TRUE';
-    unset($settings['config_data_from_field_setting']);
-    return $settings;
-  }
-
 }
diff --git a/core/modules/field_ui/field_ui.module b/core/modules/field_ui/field_ui.module
index 64b62ef..239ff95 100644
--- a/core/modules/field_ui/field_ui.module
+++ b/core/modules/field_ui/field_ui.module
@@ -11,7 +11,6 @@
 use Drupal\Core\Render\Element;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Entity\EntityViewModeInterface;
-use Drupal\Core\Entity\EntityFormModeInterface;
 use Drupal\Core\Url;
 use Drupal\field_ui\FieldUI;
 use Drupal\field_ui\Plugin\Derivative\FieldUiLocalTask;
@@ -166,30 +165,16 @@ function field_ui_form_node_type_form_submit($form, FormStateInterface $form_sta
 }
 
 /**
- * Implements hook_entity_view_mode_presave().
+ * Implements hook_view_mode_presave().
  */
-function field_ui_entity_view_mode_presave(EntityViewModeInterface $view_mode) {
+function field_ui_view_mode_presave(EntityViewModeInterface $view_mode) {
   \Drupal::service('router.builder_indicator')->setRebuildNeeded();
 }
 
 /**
- * Implements hook_entity_form_mode_presave().
+ * Implements hook_view_mode_delete().
  */
-function field_ui_entity_form_mode_presave(EntityFormModeInterface $form_mode) {
-  \Drupal::service('router.builder_indicator')->setRebuildNeeded();
-}
-
-/**
- * Implements hook_entity_view_mode_delete().
- */
-function field_ui_entity_view_mode_delete(EntityViewModeInterface $view_mode) {
-  \Drupal::service('router.builder_indicator')->setRebuildNeeded();
-}
-
-/**
- * Implements hook_entity_form_mode_delete().
- */
-function field_ui_entity_form_mode_delete(EntityFormModeInterface $form_mode) {
+function field_ui_view_mode_delete(EntityViewModeInterface $view_mode) {
   \Drupal::service('router.builder_indicator')->setRebuildNeeded();
 }
 
diff --git a/core/modules/field_ui/src/Tests/FieldUIRouteTest.php b/core/modules/field_ui/src/Tests/FieldUIRouteTest.php
index 6ca3df9..6220bfa 100644
--- a/core/modules/field_ui/src/Tests/FieldUIRouteTest.php
+++ b/core/modules/field_ui/src/Tests/FieldUIRouteTest.php
@@ -72,28 +72,6 @@ public function testFieldUIRoutes() {
     $this->assertTitle('Manage form display | Drupal');
     $this->assertLocalTasks();
     $this->assert(count($this->xpath('//ul/li[1]/a[contains(text(), :text)]', array(':text' => 'Default'))) == 1, 'Default secondary tab is in first position.');
-
-    // Create new view mode and verify it's available on the Manage Display
-    // screen after enabling it.
-    entity_create('entity_view_mode' ,array(
-      'id' => 'user.test',
-      'label' => 'Test',
-      'targetEntityType' => 'user',
-    ))->save();
-    $edit = array('display_modes_custom[test]' => TRUE);
-    $this->drupalPostForm('admin/config/people/accounts/display', $edit, t('Save'));
-    $this->assertLink('Test');
-
-    // Create new form mode and verify it's available on the Manage Form
-    // Display screen after enabling it.
-    entity_create('entity_form_mode' ,array(
-      'id' => 'user.test',
-      'label' => 'Test',
-      'targetEntityType' => 'user',
-    ))->save();
-    $edit = array('display_modes_custom[test]' => TRUE);
-    $this->drupalPostForm('admin/config/people/accounts/form-display', $edit, t('Save'));
-    $this->assertLink('Test');
   }
 
   /**
diff --git a/core/modules/file/src/FileViewsData.php b/core/modules/file/src/FileViewsData.php
index 9e6fb95..5a977a2 100644
--- a/core/modules/file/src/FileViewsData.php
+++ b/core/modules/file/src/FileViewsData.php
@@ -105,6 +105,13 @@ public function getViewsData() {
         'left_field' => 'tid',
         'extra' => array(array('field' => 'type', 'value' => 'taxonomy_term')),
       ),
+      // Link ourself to the {taxonomy_vocabulary} table
+      // so we can provide taxonomy_vocabulary->file relationships.
+      'taxonomy_vocabulary' => array(
+        'field' => 'id',
+        'left_field' => 'vid',
+        'extra' => array(array('field' => 'type', 'value' => 'taxonomy_vocabulary')),
+      ),
     );
 
     // Provide a relationship between the files table and each entity type,
@@ -119,7 +126,7 @@ public function getViewsData() {
       'help' => t('Content that is associated with this file, usually because this file is in a field on the content.'),
       // Only provide this field/relationship/etc.,
       // when the 'file_managed' base table is present.
-      'skip base' => array('node', 'node_field_revision', 'users', 'comment', 'taxonomy_term_data'),
+      'skip base' => array('node', 'node_field_revision', 'users', 'comment', 'taxonomy_term_data', 'taxonomy_vocabulary'),
       'real field' => 'id',
       'relationship' => array(
         'title' => t('Content'),
@@ -135,7 +142,7 @@ public function getViewsData() {
       'help' => t('A file that is associated with this node, usually because it is in a field on the node.'),
       // Only provide this field/relationship/etc.,
       // when the 'node' base table is present.
-      'skip base' => array('file_managed', 'users', 'comment', 'taxonomy_term_data'),
+      'skip base' => array('file_managed', 'users', 'comment', 'taxonomy_term_data', 'taxonomy_vocabulary'),
       'real field' => 'fid',
       'relationship' => array(
         'title' => t('File'),
@@ -152,7 +159,7 @@ public function getViewsData() {
       'help' => t('A user that is associated with this file, usually because this file is in a field on the user.'),
       // Only provide this field/relationship/etc.,
       // when the 'file_managed' base table is present.
-      'skip base' => array('node', 'node_field_revision', 'users', 'comment', 'taxonomy_term_data'),
+      'skip base' => array('node', 'node_field_revision', 'users', 'comment', 'taxonomy_term_data', 'taxonomy_vocabulary'),
       'real field' => 'id',
       'relationship' => array(
         'title' => t('User'),
@@ -168,7 +175,7 @@ public function getViewsData() {
       'help' => t('A file that is associated with this user, usually because it is in a field on the user.'),
       // Only provide this field/relationship/etc.,
       // when the 'users' base table is present.
-      'skip base' => array('file_managed', 'node', 'node_field_revision', 'comment', 'taxonomy_term_data'),
+      'skip base' => array('file_managed', 'node', 'node_field_revision', 'comment', 'taxonomy_term_data', 'taxonomy_vocabulary'),
       'real field' => 'fid',
       'relationship' => array(
         'title' => t('File'),
@@ -185,7 +192,7 @@ public function getViewsData() {
       'help' => t('A comment that is associated with this file, usually because this file is in a field on the comment.'),
       // Only provide this field/relationship/etc.,
       // when the 'file_managed' base table is present.
-      'skip base' => array('node', 'node_field_revision', 'users', 'comment', 'taxonomy_term_data'),
+      'skip base' => array('node', 'node_field_revision', 'users', 'comment', 'taxonomy_term_data', 'taxonomy_vocabulary'),
       'real field' => 'id',
       'relationship' => array(
         'title' => t('Comment'),
@@ -201,7 +208,7 @@ public function getViewsData() {
       'help' => t('A file that is associated with this comment, usually because it is in a field on the comment.'),
       // Only provide this field/relationship/etc.,
       // when the 'comment' base table is present.
-      'skip base' => array('file_managed', 'node', 'node_field_revision', 'users', 'taxonomy_term_data'),
+      'skip base' => array('file_managed', 'node', 'node_field_revision', 'users', 'taxonomy_term_data', 'taxonomy_vocabulary'),
       'real field' => 'fid',
       'relationship' => array(
         'title' => t('File'),
@@ -218,7 +225,7 @@ public function getViewsData() {
       'help' => t('A taxonomy term that is associated with this file, usually because this file is in a field on the taxonomy term.'),
       // Only provide this field/relationship/etc.,
       // when the 'file_managed' base table is present.
-      'skip base' => array('node', 'node_field_revision', 'users', 'comment', 'taxonomy_term_data'),
+      'skip base' => array('node', 'node_field_revision', 'users', 'comment', 'taxonomy_term_data', 'taxonomy_vocabulary'),
       'real field' => 'id',
       'relationship' => array(
         'title' => t('Taxonomy Term'),
@@ -234,7 +241,40 @@ public function getViewsData() {
       'help' => t('A file that is associated with this taxonomy term, usually because it is in a field on the taxonomy term.'),
       // Only provide this field/relationship/etc.,
       // when the 'taxonomy_term_data' base table is present.
-      'skip base' => array('file_managed', 'node', 'node_field_revision', 'users', 'comment'),
+      'skip base' => array('file_managed', 'node', 'node_field_revision', 'users', 'comment', 'taxonomy_vocabulary'),
+      'real field' => 'fid',
+      'relationship' => array(
+        'title' => t('File'),
+        'label' => t('File'),
+        'base' => 'file_managed',
+        'base field' => 'fid',
+        'relationship field' => 'fid',
+      ),
+    );
+
+    // Describes relationships between files and taxonomy_vocabulary items.
+    $data['file_usage']['file_to_taxonomy_vocabulary'] = array(
+      'title' => t('Taxonomy Vocabulary'),
+      'help' => t('A taxonomy vocabulary that is associated with this file, usually because this file is in a field on the taxonomy vocabulary.'),
+      // Only provide this field/relationship/etc.,
+      // when the 'file_managed' base table is present.
+      'skip base' => array('node', 'node_field_revision', 'users', 'comment', 'taxonomy_term_data', 'taxonomy_vocabulary'),
+      'real field' => 'id',
+      'relationship' => array(
+        'title' => t('Taxonomy Vocabulary'),
+        'label' => t('Taxonomy Vocabulary'),
+        'base' => 'taxonomy_vocabulary',
+        'base field' => 'vid',
+        'relationship field' => 'id',
+        'extra' => array(array('table' => 'file_usage', 'field' => 'type', 'operator' => '=', 'value' => 'taxonomy_vocabulary')),
+      ),
+    );
+    $data['file_usage']['taxonomy_vocabulary_to_file'] = array(
+      'title' => t('File'),
+      'help' => t('A file that is associated with this taxonomy vocabulary, usually because it is in a field on the taxonomy vocabulary.'),
+      // Only provide this field/relationship/etc.,
+      // when the 'taxonomy_vocabulary' base table is present.
+      'skip base' => array('file_managed', 'node', 'node_field_revision', 'users', 'comment', 'taxonomy_term_data'),
       'real field' => 'fid',
       'relationship' => array(
         'title' => t('File'),
diff --git a/core/modules/forum/config/install/core.base_field_override.node.forum.title.yml b/core/modules/forum/config/install/core.base_field_override.node.forum.title.yml
index fa69248..3b7b222 100644
--- a/core/modules/forum/config/install/core.base_field_override.node.forum.title.yml
+++ b/core/modules/forum/config/install/core.base_field_override.node.forum.title.yml
@@ -9,6 +9,7 @@ field_name: title
 entity_type: node
 bundle: forum
 label: Subject
+description: 'The title of this node, always treated as non-markup plain text.'
 required: true
 translatable: true
 default_value: {  }
diff --git a/core/modules/forum/forum.install b/core/modules/forum/forum.install
index f8b9d2c..544a601 100644
--- a/core/modules/forum/forum.install
+++ b/core/modules/forum/forum.install
@@ -113,7 +113,7 @@ function forum_schema() {
         'default' => 0,
       ),
       'title' => array(
-        'description' => 'The node title.',
+        'description' => 'The title of this node, always treated as non-markup plain text.',
         'type' => 'varchar',
         'length' => 255,
         'not null' => TRUE,
diff --git a/core/modules/forum/src/Plugin/Block/ForumBlockBase.php b/core/modules/forum/src/Plugin/Block/ForumBlockBase.php
index e5937ce..17c3147 100644
--- a/core/modules/forum/src/Plugin/Block/ForumBlockBase.php
+++ b/core/modules/forum/src/Plugin/Block/ForumBlockBase.php
@@ -69,7 +69,7 @@ public function blockForm($form, FormStateInterface $form_state) {
     $range = range(2, 20);
     $form['block_count'] = array(
       '#type' => 'select',
-      '#title' => $this->t('Number of topics'),
+      '#title' => t('Number of topics'),
       '#default_value' => $this->configuration['block_count'],
       '#options' => array_combine($range, $range),
     );
diff --git a/core/modules/forum/src/Tests/ForumTest.php b/core/modules/forum/src/Tests/ForumTest.php
index ab53984..6feb754 100644
--- a/core/modules/forum/src/Tests/ForumTest.php
+++ b/core/modules/forum/src/Tests/ForumTest.php
@@ -117,7 +117,7 @@ function testForum() {
     //Check that the basic forum install creates a default forum topic
     $this->drupalGet('/forum');
     // Look for the "General discussion" default forum
-    $this->assertRaw(t('<a href="'. Url::fromRoute('forum.page', ['taxonomy_term' => 1])->toString() .'">General discussion</a>'), "Found the default forum at the /forum listing");
+    $this->assertRaw(t('<a href="'. Url::fromRoute('forum.page', ['taxonomy_term' => 1]) .'">General discussion</a>'), "Found the default forum at the /forum listing");
 
     // Do the admin tests.
     $this->doAdminTests($this->admin_user);
diff --git a/core/modules/forum/templates/forum-submitted.html.twig b/core/modules/forum/templates/forum-submitted.html.twig
index 2cc992a..c0d7cd0 100644
--- a/core/modules/forum/templates/forum-submitted.html.twig
+++ b/core/modules/forum/templates/forum-submitted.html.twig
@@ -17,7 +17,7 @@
  */
 #}
 {% if time %}
-  <span>{% trans %}By {{ author }} {{ time }} ago{% endtrans %}</span>
+  <span>{% trans %}By {{ author|passthrough }} {{ time }} ago{% endtrans %}</span>
 {% else %}
   {{ 'n/a'|t }}
 {% endif %}
diff --git a/core/modules/language/config/install/tour.tour.language-add.yml b/core/modules/language/config/install/tour.tour.language-add.yml
deleted file mode 100644
index 8f39e49..0000000
--- a/core/modules/language/config/install/tour.tour.language-add.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-id: language-add
-module: language
-label: 'Adding languages'
-langcode: en
-routes:
-  - route_name: language.add
-tips:
-  language-add-overview:
-    id: language-add-overview
-    plugin: text
-    label: 'Adding languages'
-    body: '<p>This page provides the ability to add common languages to your site.</p><p>If the desired language is not available, you can add a custom language.</p>'
-    weight: 1
-  language-add-choose:
-    id: language-add-choose
-    plugin: text
-    label: 'Select language'
-    body: '<p>Choose a language from the list, or choose "Custom language..." at the end of the list.</p><p>Click the "Add language" button when you are done choosing your language.</p><p>When adding a custom language, you will get an additional form where you can provide the name, code, and direction of the language.</p>'
-    weight: 2
-    attributes:
-      data-id: edit-predefined-langcode
-  language-add-continue:
-    id: language-add-continue
-    plugin: text
-    label: 'Continuing on'
-    body: '<p>Now that you have an overview of the "Add languages" feature, you can continue by:<ul><li>Adding a language</li><li>Adding a custom language</li><li><a href="[site:url]/admin/config/regional/language">Viewing configured languages</a></li></ul></p>'
-    weight: 3
diff --git a/core/modules/language/config/install/tour.tour.language-edit.yml b/core/modules/language/config/install/tour.tour.language-edit.yml
deleted file mode 100644
index a166ce1..0000000
--- a/core/modules/language/config/install/tour.tour.language-edit.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-id: language-edit
-module: language
-label: Editing languages
-langcode: en
-routes:
-  - route_name: entity.configurable_language.edit_form
-tips:
-  language-edit-overview:
-    id: language-edit-overview
-    plugin: text
-    label: 'Editing languages'
-    body: '<p>This page provides the ability to edit a language on your site, including custom languages.</p>'
-    weight: 1
-  language-edit-langcode:
-    id: language-edit-langcode
-    plugin: text
-    label: 'Language code'
-    body: '<p>You cannot change the code of a language on the site, since it is used by the system to keep track of the language.</p>'
-    weight: 2
-    attributes:
-      data-id: edit-langcode-view
-  language-edit-label:
-    id: language-edit-label
-    plugin: text
-    label: 'Language name'
-    body: '<p>The language name is used throughout the site for all users and is written in English. Names of built-in languages can be translated using the Interface Translation module, and names of both built-in and custom languages can be translated using the Configuration Translation module.</p>'
-    weight: 3
-    attributes:
-      data-id: edit-label
-  language-edit-direction:
-    id: language-edit-direction
-    plugin: text
-    label: 'Language direction'
-    body: '<p>Choose if the language is a "Left to right" or "Right to left" language.</p><p>Note that not all themes support "Right to left" layouts, so test your theme if you are using "Right to left".</p>'
-    weight: 4
-    attributes:
-      data-id: edit-direction--wrapper--description
-  language-edit-continue:
-    id: language-edit-continue
-    plugin: text
-    label: 'Continuing on'
-    body: '<p>Now that you have an overview of the "Edit language" feature, you can continue by:<ul><li>Editing a language</li><li><a href="[site:url]/admin/config/regional/language">Viewing configured languages</a></li></ul></p>'
-    weight: 5
diff --git a/core/modules/language/config/install/tour.tour.language.yml b/core/modules/language/config/install/tour.tour.language.yml
deleted file mode 100644
index 7cca3e5..0000000
--- a/core/modules/language/config/install/tour.tour.language.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-id: language
-module: language
-label: Language
-langcode: en
-routes:
-  - route_name: entity.configurable_language.collection
-tips:
-  language-overview:
-    id: language-overview
-    plugin: text
-    label: Languages
-    body: '<p>The "Languages" page allows you to add, edit, delete, and reorder languages for the site.</p>'
-    weight: 1
-  language-add:
-    id: language-add
-    plugin: text
-    label: 'Adding languages'
-    body: '<p>To add more languages to your site, click the "Add language" button.</p><p>Added languages will be displayed in the language list and can then be edited or deleted.</p>'
-    weight: 2
-    attributes:
-      data-class: button-action
-  language-reorder:
-    id: language-reorder
-    plugin: text
-    label: 'Reordering languages'
-    body: '<p>To reorder the languages on your site, use the drag icons next to each language.</p><p>The order shown here is the display order for language lists on the site such as in the language switcher blocks provided by the Interface Translation and Content Translation modules.</p><p>When you are done with reordering the languages, click the "Save configuration" button for the changes to take effect.</p>'
-    weight: 3
-    attributes:
-      data-class: draggable
-  language-default:
-    id: language-default
-    plugin: text
-    label: 'Set a language as default'
-    body: '<p>You can change the default language of the site by choosing one of your configured languages as default. The site will use the default language in situations where no choice is made but a language should be set, for example as the language of the displayed interface.</p>'
-    weight: 4
-    attributes:
-      data-class: form-item-site-default-language
-  language-operations:
-    id: language-operations
-    plugin: text
-    label: 'Modifying languages'
-    body: '<p>Operations are provided for editing and deleting your languages.</p><p>You can edit the name and the direction of the language.</p><p>Deleted languages can be added back at a later time. Deleting a language will remove all interface translations associated with it, and content in this language will be set to be language neutral. Note that you cannot delete the default language of the site.</p>'
-    weight: 5
-    attributes:
-      data-class: dropbutton-wrapper
-  language-continue:
-    id: language-continue
-    plugin: text
-    label: 'Continuing on'
-    body: '<p>Now that you have an overview of the "Languages" page, you can continue by:<ul><li><a href="[site:url]/admin/config/regional/language/add">Adding a language</a></li><li>Reordering languages</li><li>Editing a language</li><li>Deleting a language</li></ul></p>'
-    weight: 6
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 11d7d6d..45ce7cb 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -8,7 +8,6 @@
 use Drupal\Core\Access\AccessResult;
 use Drupal\Core\Entity\ContentEntityFormInterface;
 use Drupal\Core\Entity\EntityFormInterface;
-use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Form\FormStateInterface;
@@ -56,7 +55,7 @@ function language_help($route_name, RouteMatchInterface $route_match) {
       return $output;
 
     case 'entity.configurable_language.collection':
-      $output = '<p>' . t('Reorder the configured languages to set their order in the language switcher block and, when editing content, in the list of selectable languages. This ordering does not impact <a href="@detection">detection and selection</a>.', array('@detection' => \Drupal::url('language.negotiation'))) . '</p>';
+      $output = '<p>' . t('Reorder the added languages to set their order in the language switcher block and, when editing content, in the list of selectable languages. This ordering does not impact <a href="@detection">detection and selection</a>.', array('@detection' => \Drupal::url('language.negotiation'))) . '</p>';
       $output .= '<p>' . t('The site default language can also be set. It is not recommended to change the default language on a working site. <a href="@language-detection">Configure the Selected language</a> setting on the detection and selection page to change the fallback language for language selection.', array('@language-detection' => \Drupal::url('language.negotiation'))) . '</p>';
       return $output;
 
@@ -81,13 +80,13 @@ function language_help($route_name, RouteMatchInterface $route_match) {
 
     case 'entity.block.edit_form':
       if (($block = $route_match->getParameter('block')) && $block->getPluginId() == 'language_block:language_interface') {
-        return '<p>' . t('With multiple languages configured, registered users can select their preferred language and authors can assign a specific language to content.') . '</p>';
+        return '<p>' . t('With multiple languages added, registered users can select their preferred language and authors can assign a specific language to content.') . '</p>';
       }
       break;
 
     case 'block.admin_add':
       if ($route_match->getParameter('plugin_id') == 'language_block:language_interface') {
-        return '<p>' . t('With multiple languages configured, registered users can select their preferred language and authors can assign a specific language to content.') . '</p>';
+        return '<p>' . t('With multiple languages added, registered users can select their preferred language and authors can assign a specific language to content.') . '</p>';
       }
       break;
 
@@ -512,41 +511,3 @@ function language_entity_field_access($operation, FieldDefinitionInterface $fiel
   }
   return AccessResult::neutral();
 }
-
-/**
- * Implements hook_tour_tips_alter().
- */
-function language_tour_tips_alter(array &$tour_tips, EntityInterface $entity) {
-  foreach ($tour_tips as $tour_tip) {
-    if ($tour_tip->get('id') == 'language-overview') {
-      $additional_overview = '';
-      if (Drupal::service('module_handler')->moduleExists('locale')) {
-        $additional_overview = t("This page also provides an overview of how much of the site's interface has been translated for each configured language.");
-      }
-      else {
-        $additional_overview = t("If the Interface Translation module is enabled, this page will provide an overview of how much of the site's interface has been translated for each configured language.");
-      }
-      $tour_tip->set('body', $tour_tip->get('body') . '<p>' . $additional_overview . '</p>');
-    }
-    elseif ($tour_tip->get('id') == 'language-continue') {
-      $additional_continue = '';
-      $additional_modules = array();
-      if (!Drupal::service('module_handler')->moduleExists('locale')) {
-        $additional_modules[] = Drupal::service('module_handler')->getName('locale');
-      }
-      if (!Drupal::service('module_handler')->moduleExists('content_translation')) {
-        $additional_modules[] = Drupal::service('module_handler')->getName('content_translation');
-      }
-      if (!empty($additional_modules)) {
-        $additional_continue = t('Depending on your site features, additional modules that you might want to enable are:') . '<ul>';
-        foreach ($additional_modules as $additional_module) {
-          $additional_continue .= '<li>' . $additional_module . '</li>';
-        }
-        $additional_continue .= '</ul>';
-      }
-      if (!empty($additional_continue)) {
-        $tour_tip->set('body', $tour_tip->get('body') . '<p>' . $additional_continue . '</p>');
-      }
-    }
-  }
-}
diff --git a/core/modules/language/src/Tests/LanguageTourTest.php b/core/modules/language/src/Tests/LanguageTourTest.php
deleted file mode 100644
index 98418b6..0000000
--- a/core/modules/language/src/Tests/LanguageTourTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\language\Tests\LanguageTourTest.
- */
-
-namespace Drupal\language\Tests;
-
-use Drupal\tour\Tests\TourTestBase;
-
-/**
- * Tests tour functionality.
- *
- * @group tour
- */
-class LanguageTourTest extends TourTestBase {
-
-  /**
-   * An admin user with administrative permissions for views.
-   *
-   * @var \Drupal\user\UserInterface
-   */
-  protected $adminUser;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = array('language', 'tour');
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->adminUser = $this->drupalCreateUser(array('administer languages', 'access tour'));
-    $this->drupalLogin($this->adminUser);
-  }
-
-  /**
-   * Tests language tour tip availability.
-   */
-  public function testLanguageTour() {
-    $this->drupalGet('admin/config/regional/language');
-    $this->assertTourTips();
-  }
-
-  /**
-   * Go to add language page and check the tour tooltips.
-   */
-  public function testLanguageAddTour() {
-    $this->drupalGet('admin/config/regional/language/add');
-    $this->assertTourTips();
-  }
-
-  /**
-   * Go to edit language page and check the tour tooltips.
-   */
-  public function testLanguageEditTour() {
-    $this->drupalGet('admin/config/regional/language/edit/en');
-    $this->assertTourTips();
-  }
-
-}
diff --git a/core/modules/locale/src/Tests/LocaleConfigTranslationImportTest.php b/core/modules/locale/src/Tests/LocaleConfigTranslationImportTest.php
index a0a8684..cacf88d 100644
--- a/core/modules/locale/src/Tests/LocaleConfigTranslationImportTest.php
+++ b/core/modules/locale/src/Tests/LocaleConfigTranslationImportTest.php
@@ -36,7 +36,7 @@ protected function setUp() {
 
     // Update module should not go out to d.o to check for updates. We override
     // the url to an invalid update source. No update data will be found.
-    $this->config('update.settings')->set('fetch.url', (string) Url::fromRoute('<front>')->setAbsolute()->toString())->save();
+    $this->config('update.settings')->set('fetch.url', (string) Url::fromRoute('<front>', array(), array('absolute' => TRUE)))->save();
   }
 
   /**
diff --git a/core/modules/locale/src/Tests/LocaleUpdateCronTest.php b/core/modules/locale/src/Tests/LocaleUpdateCronTest.php
index 0a8f50c..8dbee7d 100644
--- a/core/modules/locale/src/Tests/LocaleUpdateCronTest.php
+++ b/core/modules/locale/src/Tests/LocaleUpdateCronTest.php
@@ -102,7 +102,7 @@ public function testUpdateCron() {
     sleep(1);
     // Test: Execute cron and check if tasks are executed correctly.
     // Run cron to process the tasks in the queue.
-    $this->cronRun();
+    $this->drupalGet('admin/reports/status/run-cron');
 
     drupal_static_reset('locale_translation_get_file_history');
     $history = locale_translation_get_file_history();
diff --git a/core/modules/node/src/Entity/Node.php b/core/modules/node/src/Entity/Node.php
index 13ad744..f73155e 100644
--- a/core/modules/node/src/Entity/Node.php
+++ b/core/modules/node/src/Entity/Node.php
@@ -364,6 +364,7 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
 
     $fields['title'] = BaseFieldDefinition::create('string')
       ->setLabel(t('Title'))
+      ->setDescription(t('The title of this node, always treated as non-markup plain text.'))
       ->setRequired(TRUE)
       ->setTranslatable(TRUE)
       ->setRevisionable(TRUE)
diff --git a/core/modules/node/src/NodeForm.php b/core/modules/node/src/NodeForm.php
index 92e7c0c..17066ab 100644
--- a/core/modules/node/src/NodeForm.php
+++ b/core/modules/node/src/NodeForm.php
@@ -292,13 +292,13 @@ protected function actions(array $form, FormStateInterface $form_state) {
    * {@inheritdoc}
    */
   public function validate(array $form, FormStateInterface $form_state) {
-    $node = parent::validate($form, $form_state);
+    $node = $this->buildEntity($form, $form_state);
 
     if ($node->id() && (node_last_changed($node->id(), $this->getFormLangcode($form_state)) > $node->getChangedTime())) {
       $form_state->setErrorByName('changed', $this->t('The content on this page has either been modified by another user, or you have already submitted modifications using this form. As a result, your changes cannot be saved.'));
     }
 
-    return $node;
+    parent::validate($form, $form_state);
   }
 
   /**
diff --git a/core/modules/node/src/Plugin/Block/SyndicateBlock.php b/core/modules/node/src/Plugin/Block/SyndicateBlock.php
index 436a570..f4e7123 100644
--- a/core/modules/node/src/Plugin/Block/SyndicateBlock.php
+++ b/core/modules/node/src/Plugin/Block/SyndicateBlock.php
@@ -56,7 +56,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
 
     // @see ::isCacheable()
     $form['cache']['#disabled'] = TRUE;
-    $form['cache']['#description'] = $this->t('This block is never cacheable, it is not configurable.');
+    $form['cache']['#description'] = t('This block is never cacheable, it is not configurable.');
     $form['cache']['max_age']['#value'] = 0;
 
     return $form;
diff --git a/core/modules/node/src/Tests/NodeTranslationUITest.php b/core/modules/node/src/Tests/NodeTranslationUITest.php
index 855d961..df9cbe7 100644
--- a/core/modules/node/src/Tests/NodeTranslationUITest.php
+++ b/core/modules/node/src/Tests/NodeTranslationUITest.php
@@ -340,7 +340,7 @@ protected function doTestAlternateHreflangLinks(Url $url) {
         // Retrieve desired link elements from the HTML head.
         $links = $this->xpath('head/link[@rel = "alternate" and @href = :href and @hreflang = :hreflang]',
           array(':href' => $language_url->toString(), ':hreflang' => $alternate_langcode));
-        $this->assert(isset($links[0]), format_string('The %langcode node translation has the correct alternate hreflang link for %alternate_langcode: %link.', array('%langcode' => $langcode, '%alternate_langcode' => $alternate_langcode, '%link' => $url->toString())));
+        $this->assert(isset($links[0]), format_string('The %langcode node translation has the correct alternate hreflang link for %alternate_langcode: %link.', array('%langcode' => $langcode, '%alternate_langcode' => $alternate_langcode, '%link' => $url)));
       }
     }
   }
diff --git a/core/modules/node/templates/node.html.twig b/core/modules/node/templates/node.html.twig
index 60e469a..f460f43 100644
--- a/core/modules/node/templates/node.html.twig
+++ b/core/modules/node/templates/node.html.twig
@@ -82,7 +82,7 @@
     <footer>
       {{ author_picture }}
       <div{{ author_attributes }}>
-        {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
+        {% trans %}Submitted by {{ author_name|passthrough }} on {{ date|passthrough }}{% endtrans %}
         {{ metadata }}
       </div>
     </footer>
diff --git a/core/modules/rdf/rdf.api.php b/core/modules/rdf/rdf.api.php
index 7a9e38e..4f30732 100644
--- a/core/modules/rdf/rdf.api.php
+++ b/core/modules/rdf/rdf.api.php
@@ -14,9 +14,9 @@
  * Allow modules to define namespaces for RDF mappings.
  *
  * Many common namespace prefixes are defined in rdf_rdf_namespaces(). However,
- * if a module implements rdf mappings that use prefixes that are not
+ * if a module implements hook_rdf_mapping() and uses a prefix that is not
  * defined in rdf_rdf_namespaces(), this hook should be used to define the new
- * namespace prefixes.
+ * namespace prefix.
  *
  * @return
  *   An associative array of namespaces where the key is the namespace prefix
diff --git a/core/modules/simpletest/simpletest.install b/core/modules/simpletest/simpletest.install
index c78abfe..69868ec 100644
--- a/core/modules/simpletest/simpletest.install
+++ b/core/modules/simpletest/simpletest.install
@@ -71,8 +71,8 @@ function simpletest_requirements($phase) {
       'title' => t('Simpletest site directory'),
       'value' => is_dir(\Drupal::root() . '/' . $site_directory) ? t('Not writable') : t('Missing'),
       'severity' => REQUIREMENT_ERROR,
-      'description' => t('The testing framework requires the %sites-simpletest directory to exist and be writable in order to run tests.', array(
-        '%sites-simpletest' => $site_directory,
+      'description' => t('The testing framework requires the !sites-simpletest directory to exist and be writable in order to run tests.', array(
+        '!sites-simpletest' => '<code>./' . String::checkPlain($site_directory) . '</code>',
       )),
     );
   }
@@ -81,8 +81,8 @@ function simpletest_requirements($phase) {
       'title' => t('Simpletest site directory'),
       'value' => t('Not protected'),
       'severity' => REQUIREMENT_ERROR,
-      'description' => t('The file %file does not exist and could not be created automatically, which poses a security risk. Ensure that the directory is writable.', array(
-        '%file' => $site_directory . '/.htaccess',
+      'description' => t('The file !file does not exist and could not be created automatically, which poses a security risk. Ensure that the directory is writable.', array(
+        '!file' => '<code>./' . String::checkPlain($site_directory) . '/.htaccess</code>',
       )),
     );
   }
diff --git a/core/modules/simpletest/src/KernelTestBase.php b/core/modules/simpletest/src/KernelTestBase.php
index 89930ad..188af9c 100644
--- a/core/modules/simpletest/src/KernelTestBase.php
+++ b/core/modules/simpletest/src/KernelTestBase.php
@@ -8,7 +8,6 @@
 namespace Drupal\simpletest;
 
 use Drupal\Component\Utility\String;
-use Drupal\Component\Utility\Variable;
 use Drupal\Core\Database\Database;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\Core\DrupalKernel;
@@ -140,52 +139,23 @@ protected function setUp() {
     $settings = Settings::getAll();
 
     // Allow for test-specific overrides.
-    $directory = DRUPAL_ROOT . '/' . $this->siteDirectory;
     $settings_services_file = DRUPAL_ROOT . '/' . $this->originalSite . '/testing.services.yml';
-    $container_yamls = [];
     if (file_exists($settings_services_file)) {
       // Copy the testing-specific service overrides in place.
-      $testing_services_file = $directory . '/services.yml';
+      $testing_services_file = DRUPAL_ROOT . '/' . $this->siteDirectory . '/services.yml';
       copy($settings_services_file, $testing_services_file);
-      $container_yamls[] = $testing_services_file;
-    }
-    $settings_testing_file = DRUPAL_ROOT . '/' . $this->originalSite . '/settings.testing.php';
-    if (file_exists($settings_testing_file)) {
-      // Copy the testing-specific settings.php overrides in place.
-      copy($settings_testing_file, $directory . '/settings.testing.php');
-    }
-
-    if (file_exists($directory . '/settings.testing.php')) {
-      // Add the name of the testing class to settings.php and include the
-      // testing specific overrides
-      $hash_salt = Settings::getHashSalt();
-      $test_class = get_class($this);
-      $container_yamls_export = Variable::export($container_yamls);
-      $php = <<<EOD
-<?php
-
-\$settings['hash_salt'] = '$hash_salt';
-\$settings['container_yamls'] = $container_yamls_export;
-
-\$test_class = '$test_class';
-include DRUPAL_ROOT . '/' . \$site_path . '/settings.testing.php';
-EOD;
-      file_put_contents($directory . '/settings.php', $php);
+      $this->settingsSet('container_yamls', [$testing_services_file]);
     }
 
     // Add this test class as a service provider.
     // @todo Remove the indirection; implement ServiceProviderInterface instead.
     $GLOBALS['conf']['container_service_providers']['TestServiceProvider'] = 'Drupal\simpletest\TestServiceProvider';
 
-    // Bootstrap a new kernel.
+    // Bootstrap a new kernel. Don't use createFromRequest so we don't mess with settings.
     $class_loader = require DRUPAL_ROOT . '/core/vendor/autoload.php';
     $this->kernel = new DrupalKernel('testing', $class_loader, FALSE);
     $request = Request::create('/');
-    $site_path = DrupalKernel::findSitePath($request);
-    $this->kernel->setSitePath($site_path);
-    if (file_exists($directory . '/settings.testing.php')) {
-      Settings::initialize(DRUPAL_ROOT, $site_path, $class_loader);
-    }
+    $this->kernel->setSitePath(DrupalKernel::findSitePath($request));
     $this->kernel->boot();
 
     // Save the original site directory path, so that extensions in the
diff --git a/core/modules/simpletest/src/Tests/KernelTestBaseTest.php b/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
index 218d0b9..4d09490 100644
--- a/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
+++ b/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
@@ -27,21 +27,6 @@ class KernelTestBaseTest extends KernelTestBase {
    * {@inheritdoc}
    */
   protected function setUp() {
-    $php = <<<'EOS'
-# Make sure that the $test_class variable is defined when this file is included.
-if ($test_class) {
-}
-<?php
-# Define a function to be able to check that this file was loaded with
-# function_exists().
-if (!function_exists('simpletest_test_stub_settings_function')) {
-  function simpletest_test_stub_settings_function() {}
-}
-EOS;
-
-    $settings_testing_file = $this->siteDirectory . '/settings.testing.php';
-    file_put_contents($settings_testing_file, $php);
-
     $original_container = $this->originalContainer;
     parent::setUp();
     $this->assertNotIdentical(\Drupal::getContainer(), $original_container, 'KernelTestBase test creates a new container.');
@@ -63,9 +48,6 @@ function testSetUp() {
 
     // Verify that no modules have been installed.
     $this->assertFalse(db_table_exists($table), "'$table' database table not found.");
-
-    // Verify that the settings.testing.php got taken into account.
-    $this->assertTrue(function_exists('simpletest_test_stub_settings_function'));
   }
 
   /**
diff --git a/core/modules/simpletest/src/WebTestBase.php b/core/modules/simpletest/src/WebTestBase.php
index 71e219c..e27b690 100644
--- a/core/modules/simpletest/src/WebTestBase.php
+++ b/core/modules/simpletest/src/WebTestBase.php
@@ -1138,10 +1138,10 @@ protected function writeCustomTranslations() {
   /**
    * Rebuilds \Drupal::getContainer().
    *
-   * Use this to update the test process's kernel with a new service container.
-   * For example, when the list of enabled modules is changed via the internal
-   * browser the test process's kernel has a service container with an out of
-   * date module list.
+   * Use this to build a new kernel and service container. For example, when the
+   * list of enabled modules is changed via the internal browser, in which case
+   * the test process still contains an old kernel and service container with an
+   * old module list.
    *
    * @see TestBase::prepareEnvironment()
    * @see TestBase::restoreEnvironment()
@@ -1152,6 +1152,8 @@ protected function writeCustomTranslations() {
    *   enabled modules to be immediately available in the same request.
    */
   protected function rebuildContainer() {
+    // Maintain the current global request object.
+    $request = \Drupal::request();
     // Rebuild the kernel and bring it back to a fully bootstrapped state.
     $this->container = $this->kernel->rebuildContainer();
 
@@ -1503,10 +1505,6 @@ protected function drupalGet($path, array $options = array(), array $headers = a
       $out = $new;
     }
 
-    if ($path instanceof Url) {
-      $path = $path->toString();
-    }
-
     $verbose = 'GET request to: ' . $path .
                '<hr />Ending URL: ' . $this->getUrl();
     if ($this->dumpHeaders) {
@@ -1698,9 +1696,6 @@ protected function drupalPostForm($path, $edit, $submit, array $options = array(
             $out = $new;
           }
 
-          if ($path instanceof Url) {
-            $path = $path->toString();
-          }
           $verbose = 'POST request to: ' . $path;
           $verbose .= '<hr />Ending URL: ' . $this->getUrl();
           if ($this->dumpHeaders) {
diff --git a/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php b/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php
index e8c2fbb..5e42e1c 100644
--- a/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php
+++ b/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php
@@ -59,15 +59,15 @@ public function defaultConfiguration() {
   protected function blockAccess(AccountInterface $account) {
     if ($account->hasPermission('access content')) {
       $daytop = $this->configuration['top_day_num'];
-      if (!$daytop || !($result = statistics_title_list('daycount', $daytop)) || !($this->day_list = node_title_list($result, $this->t("Today's:")))) {
+      if (!$daytop || !($result = statistics_title_list('daycount', $daytop)) || !($this->day_list = node_title_list($result, t("Today's:")))) {
         return FALSE;
       }
       $alltimetop = $this->configuration['top_all_num'];
-      if (!$alltimetop || !($result = statistics_title_list('totalcount', $alltimetop)) || !($this->all_time_list = node_title_list($result, $this->t('All time:')))) {
+      if (!$alltimetop || !($result = statistics_title_list('totalcount', $alltimetop)) || !($this->all_time_list = node_title_list($result, t('All time:')))) {
         return FALSE;
       }
       $lasttop = $this->configuration['top_last_num'];
-      if (!$lasttop || !($result = statistics_title_list('timestamp', $lasttop)) || !($this->last_list = node_title_list($result, $this->t('Last viewed:')))) {
+      if (!$lasttop || !($result = statistics_title_list('timestamp', $lasttop)) || !($this->last_list = node_title_list($result, t('Last viewed:')))) {
         return FALSE;
       }
       return TRUE;
@@ -81,27 +81,27 @@ protected function blockAccess(AccountInterface $account) {
   public function blockForm($form, FormStateInterface $form_state) {
     // Popular content block settings.
     $numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 40);
-    $numbers = array('0' => $this->t('Disabled')) + array_combine($numbers, $numbers);
+    $numbers = array('0' => t('Disabled')) + array_combine($numbers, $numbers);
     $form['statistics_block_top_day_num'] = array(
      '#type' => 'select',
-     '#title' => $this->t("Number of day's top views to display"),
+     '#title' => t("Number of day's top views to display"),
      '#default_value' => $this->configuration['top_day_num'],
      '#options' => $numbers,
-     '#description' => $this->t('How many content items to display in "day" list.'),
+     '#description' => t('How many content items to display in "day" list.'),
     );
     $form['statistics_block_top_all_num'] = array(
       '#type' => 'select',
-      '#title' => $this->t('Number of all time views to display'),
+      '#title' => t('Number of all time views to display'),
       '#default_value' => $this->configuration['top_all_num'],
       '#options' => $numbers,
-      '#description' => $this->t('How many content items to display in "all time" list.'),
+      '#description' => t('How many content items to display in "all time" list.'),
     );
     $form['statistics_block_top_last_num'] = array(
       '#type' => 'select',
-      '#title' => $this->t('Number of most recent views to display'),
+      '#title' => t('Number of most recent views to display'),
       '#default_value' => $this->configuration['top_last_num'],
       '#options' => $numbers,
-      '#description' => $this->t('How many content items to display in "recently viewed" list.'),
+      '#description' => t('How many content items to display in "recently viewed" list.'),
     );
     return $form;
   }
diff --git a/core/modules/system/module.api.php b/core/modules/system/module.api.php
index 08344a4..75bc64d 100644
--- a/core/modules/system/module.api.php
+++ b/core/modules/system/module.api.php
@@ -70,8 +70,8 @@ function hook_hook_info() {
  *   The name of the module hook being implemented.
  */
 function hook_module_implements_alter(&$implementations, $hook) {
-  if ($hook == 'form_alter') {
-    // Move my_module_form_alter() to the end of the list.
+  if ($hook == 'rdf_mapping') {
+    // Move my_module_rdf_mapping() to the end of the list.
     // \Drupal::moduleHandler()->getImplementations()
     // iterates through $implementations with a foreach loop which PHP iterates
     // in the order that the items were added, so to move an item to the end of
diff --git a/core/modules/system/src/Plugin/Block/SystemBrandingBlock.php b/core/modules/system/src/Plugin/Block/SystemBrandingBlock.php
index a2ac8a1..1d99bb3 100644
--- a/core/modules/system/src/Plugin/Block/SystemBrandingBlock.php
+++ b/core/modules/system/src/Plugin/Block/SystemBrandingBlock.php
@@ -168,7 +168,7 @@ public function build() {
     $build['site_logo'] = array(
       '#theme' => 'image',
       '#uri' => $logo['url'],
-      '#alt' => $this->t('Home'),
+      '#alt' => t('Home'),
       '#access' => $this->configuration['use_site_logo'],
     );
 
diff --git a/core/modules/system/src/Plugin/Block/SystemMainBlock.php b/core/modules/system/src/Plugin/Block/SystemMainBlock.php
index 0e744db..caa1bdf 100644
--- a/core/modules/system/src/Plugin/Block/SystemMainBlock.php
+++ b/core/modules/system/src/Plugin/Block/SystemMainBlock.php
@@ -50,7 +50,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
 
     // The main content block is never cacheable, because it may be dynamic.
     $form['cache']['#disabled'] = TRUE;
-    $form['cache']['#description'] = $this->t('This block is never cacheable, it is not configurable.');
+    $form['cache']['#description'] = t('This block is never cacheable, it is not configurable.');
     $form['cache']['max_age']['#value'] = 0;
 
     return $form;
diff --git a/core/modules/system/src/Plugin/Block/SystemMenuBlock.php b/core/modules/system/src/Plugin/Block/SystemMenuBlock.php
index c07fba2..93aefef 100644
--- a/core/modules/system/src/Plugin/Block/SystemMenuBlock.php
+++ b/core/modules/system/src/Plugin/Block/SystemMenuBlock.php
@@ -83,7 +83,7 @@ public function blockForm($form, FormStateInterface $form_state) {
     $defaults = $this->defaultConfiguration();
     $form['menu_levels'] = array(
       '#type' => 'details',
-      '#title' => $this->t('Menu levels'),
+      '#title' => t('Menu levels'),
       // Open if not set to defaults.
       '#open' => $defaults['level'] !== $config['level'] || $defaults['depth'] !== $config['depth'],
       '#process' => [[get_class(), 'processMenuLevelParents']],
diff --git a/core/modules/system/src/Plugin/Block/SystemPoweredByBlock.php b/core/modules/system/src/Plugin/Block/SystemPoweredByBlock.php
index 25e244d..c18f1c8 100644
--- a/core/modules/system/src/Plugin/Block/SystemPoweredByBlock.php
+++ b/core/modules/system/src/Plugin/Block/SystemPoweredByBlock.php
@@ -25,7 +25,7 @@ class SystemPoweredByBlock extends BlockBase {
    * {@inheritdoc}
    */
   public function build() {
-    return array('#markup' => '<span>' . $this->t('Powered by <a href="@poweredby">Drupal</a>', array('@poweredby' => 'https://www.drupal.org')) . '</span>');
+    return array('#markup' => '<span>' . t('Powered by <a href="@poweredby">Drupal</a>', array('@poweredby' => 'https://www.drupal.org')) . '</span>');
   }
 
   /**
@@ -38,7 +38,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     // contents can never change.
     $form['cache']['#disabled'] = TRUE;
     $form['cache']['max_age']['#value'] = Cache::PERMANENT;
-    $form['cache']['#description'] = $this->t('This block is always cached forever, it is not configurable.');
+    $form['cache']['#description'] = t('This block is always cached forever, it is not configurable.');
 
     return $form;
   }
diff --git a/core/modules/system/src/Tests/Database/SelectTest.php b/core/modules/system/src/Tests/Database/SelectTest.php
index d92c3a8..26dd109 100644
--- a/core/modules/system/src/Tests/Database/SelectTest.php
+++ b/core/modules/system/src/Tests/Database/SelectTest.php
@@ -39,10 +39,10 @@ function testSimpleComment() {
     $records = $result->fetchAll();
 
     $query = (string) $query;
-    $expected = "/* Testing query comments */";
+    $expected = "/* Testing query comments */ SELECT test.name AS name, test.age AS age\nFROM \n{test} test";
 
     $this->assertEqual(count($records), 4, 'Returned the correct number of rows.');
-    $this->assertNotIdentical(FALSE, strpos($query, $expected), 'The flattened query contains the comment string.');
+    $this->assertEqual($query, $expected, 'The flattened query contains the comment string.');
   }
 
   /**
@@ -57,10 +57,10 @@ function testVulnerableComment() {
     $records = $result->fetchAll();
 
     $query = (string) $query;
-    $expected = "/* Testing query comments SELECT nid FROM {node}; -- */";
+    $expected = "/* Testing query comments SELECT nid FROM {node}; -- */ SELECT test.name AS name, test.age AS age\nFROM \n{test} test";
 
     $this->assertEqual(count($records), 4, 'Returned the correct number of rows.');
-    $this->assertNotIdentical(FALSE, strpos($query, $expected), 'The flattened query contains the sanitised comment string.');
+    $this->assertEqual($query, $expected, 'The flattened query contains the sanitised comment string.');
   }
 
   /**
diff --git a/core/modules/system/src/Tests/Database/UpdateComplexTest.php b/core/modules/system/src/Tests/Database/UpdateComplexTest.php
index abe2730..19eff49 100644
--- a/core/modules/system/src/Tests/Database/UpdateComplexTest.php
+++ b/core/modules/system/src/Tests/Database/UpdateComplexTest.php
@@ -139,12 +139,15 @@ function testSubSelectUpdate() {
     $query = db_update('test')
       ->expression('age', $subselect)
       ->condition('name', 'Ringo');
-    // Save the number of rows that updated for assertion later.
-    $num_updated = $query->execute();
+    // Save the query for a __toString test later.
+    $string_test = $query;
+    $query->execute();
     $after_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Ringo'))->fetchField();
     $expected_age = $select->execute()->fetchField();
     $this->assertEqual($after_age, $expected_age);
-    $this->assertEqual(1, $num_updated, t('Expected 1 row to be updated in subselect update query.'));
+    // Replace whitespace with a single space.
+    $query_string = preg_replace('/\s+/', ' ', $string_test);
+    $this->assertIdentical('UPDATE {test} SET age= (SELECT MAX(priority) + :increment AS max_priority FROM {test_task} t) WHERE (name = :db_condition_placeholder_0)', trim($query_string));
   }
 
 }
diff --git a/core/modules/system/src/Tests/System/CronRunTest.php b/core/modules/system/src/Tests/System/CronRunTest.php
index de8cdcc..a7fde1c 100644
--- a/core/modules/system/src/Tests/System/CronRunTest.php
+++ b/core/modules/system/src/Tests/System/CronRunTest.php
@@ -106,20 +106,4 @@ function testCronUI() {
     // the time will start at 1 January 1970.
     $this->assertNoText('years');
   }
-
-  /**
-   * Ensure that the manual cron run is working.
-   */
-  public function testManualCron() {
-    $admin_user = $this->drupalCreateUser(array('administer site configuration'));
-    $this->drupalLogin($admin_user);
-
-    $this->drupalGet('admin/reports/status/run-cron');
-    $this->assertResponse(403);
-
-    $this->drupalGet('admin/reports/status');
-    $this->clickLink(t('run cron manually'));
-    $this->assertResponse(200);
-    $this->assertText(t('Cron ran successfully.'));
-  }
 }
diff --git a/core/modules/system/src/Tests/Theme/EngineTwigTest.php b/core/modules/system/src/Tests/Theme/EngineTwigTest.php
index 750ae2e..c154b43 100644
--- a/core/modules/system/src/Tests/Theme/EngineTwigTest.php
+++ b/core/modules/system/src/Tests/Theme/EngineTwigTest.php
@@ -84,26 +84,7 @@ public function testTwigLinkGenerator() {
   }
 
   /**
-   * Tests the magic url to string Twig functions.
-   *
-   * @see \Drupal\Core\Url
-   */
-  public function testTwigUrlToString() {
-    $this->drupalGet('twig-theme-test/url-to-string');
-
-    $expected = [
-      'rendered url: ' . Url::fromRoute('user.register')->toString(),
-    ];
-
-    $content = $this->getRawContent();
-    $this->assertFalse(empty($content), 'Page content is not empty');
-    foreach ($expected as $string) {
-      $this->assertRaw('<div>' . $string . '</div>');
-    }
-  }
-
-  /**
-   * Tests the automatic/magic calling of toString() on objects, if exists.
+   * Tests the file_url Twig functions.
    */
   public function testTwigFileUrls() {
     $this->drupalGet('/twig-theme-test/file-url');
diff --git a/core/modules/system/src/Tests/Theme/TwigEnvironmentTest.php b/core/modules/system/src/Tests/Theme/TwigEnvironmentTest.php
index b2e18d9..8edb4b2 100644
--- a/core/modules/system/src/Tests/Theme/TwigEnvironmentTest.php
+++ b/core/modules/system/src/Tests/Theme/TwigEnvironmentTest.php
@@ -65,21 +65,5 @@ public function testInlineTemplate() {
     $this->assertEqual(drupal_render($element_copy), 'test-with-context muuh');
   }
 
-  /**
-   * Tests that exceptions are thrown when a template is not found.
-   */
-  public function testTemplateNotFoundException() {
-    /** @var \Drupal\Core\Template\TwigEnvironment $environment */
-    $environment = \Drupal::service('twig');
-
-    try {
-      $environment->loadTemplate('this-template-does-not-exist.html.twig')->render(array());
-      $this->fail('Did not throw an exception as expected.');
-    }
-    catch (\Twig_Error_Loader $e) {
-      $this->assertTrue(strpos($e->getMessage(), 'Template "this-template-does-not-exist.html.twig" is not defined') === 0);
-    }
-  }
-
 }
 
diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php
index b0eadb5..eb4eb9b 100644
--- a/core/modules/system/system.api.php
+++ b/core/modules/system/system.api.php
@@ -118,7 +118,7 @@ function hook_schema() {
         'default' => '',
       ),
       'title' => array(
-        'description' => 'The node title.',
+        'description' => 'The title of this node, always treated as non-markup plain text.',
         'type' => 'varchar',
         'length' => 255,
         'not null' => TRUE,
diff --git a/core/modules/system/system.routing.yml b/core/modules/system/system.routing.yml
index 544c005..fecfd249 100644
--- a/core/modules/system/system.routing.yml
+++ b/core/modules/system/system.routing.yml
@@ -219,7 +219,6 @@ system.run_cron:
     _controller: '\Drupal\system\CronController::runManually'
   requirements:
     _permission: 'administer site configuration'
-    _csrf_token: 'TRUE'
 
 entity.date_format.collection:
   path: '/admin/config/regional/date-time'
diff --git a/core/modules/system/templates/datetime-form.html.twig b/core/modules/system/templates/datetime-form.html.twig
index fef4b5e..bf31668 100644
--- a/core/modules/system/templates/datetime-form.html.twig
+++ b/core/modules/system/templates/datetime-form.html.twig
@@ -12,6 +12,6 @@
  * @ingroup themeable
  */
 #}
-<div{{ attributes }}>
+<div{{ attributes.addClass('container-inline') }}>
   {{ content }}
 </div>
diff --git a/core/modules/system/templates/datetime-wrapper.html.twig b/core/modules/system/templates/datetime-wrapper.html.twig
index 443b5b3..45ba069 100644
--- a/core/modules/system/templates/datetime-wrapper.html.twig
+++ b/core/modules/system/templates/datetime-wrapper.html.twig
@@ -17,6 +17,7 @@
 #}
 {%
   set title_classes = [
+    'label',
     required ? 'form-required',
   ]
 %}
@@ -25,5 +26,5 @@
 {% endif %}
 {{ content }}
 {% if description %}
-  <div>{{ description }}</div>
+  <div class="description">{{ description }}</div>
 {% endif %}
diff --git a/core/modules/system/templates/details.html.twig b/core/modules/system/templates/details.html.twig
index 42dd4c2..17ea820 100644
--- a/core/modules/system/templates/details.html.twig
+++ b/core/modules/system/templates/details.html.twig
@@ -19,9 +19,9 @@
   {%- if title -%}
     <summary{{ summary_attributes }}>{{ title }}</summary>
   {%- endif -%}
-  <div>
+  <div class="details-wrapper">
     {%- if description -%}
-      <div>{{ description }}</div>
+      <div class="details-description">{{ description }}</div>
     {%- endif -%}
     {%- if children -%}
       {{ children }}
diff --git a/core/modules/system/templates/progress-bar.html.twig b/core/modules/system/templates/progress-bar.html.twig
index 885a80f..be87024 100644
--- a/core/modules/system/templates/progress-bar.html.twig
+++ b/core/modules/system/templates/progress-bar.html.twig
@@ -19,5 +19,5 @@
   {% endif %}
   <div class="progress__track"><div class="progress__bar" style="width: {{ percent }}%"></div></div>
   <div class="progress__percentage">{{ percent }}%</div>
-  <div class="progress__description">{{ message }}</div>
+  <div class="progress__description">{{ message|raw }}</div>
 </div>
diff --git a/core/modules/system/tests/modules/common_test/templates/common-test-render-element.html.twig b/core/modules/system/tests/modules/common_test/templates/common-test-render-element.html.twig
deleted file mode 100644
index ae00c8e..0000000
--- a/core/modules/system/tests/modules/common_test/templates/common-test-render-element.html.twig
+++ /dev/null
@@ -1,12 +0,0 @@
-{#
-/**
- * @file
- * Default theme implementation for the common test render element.
- *
- * Available variables:
- * - foo: A render array.
- *
- * @ingroup themeable
- */
-#}
-{{ foo }}
diff --git a/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php b/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php
index ff49bd6..2bf5394 100644
--- a/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php
+++ b/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php
@@ -50,16 +50,6 @@ public function linkGeneratorRender() {
   }
 
   /**
-   * Renders a URL to a string.
-   */
-  public function urlToStringRender() {
-    return [
-      '#theme' => 'twig_theme_test_url_to_string',
-      '#test_url' => Url::fromRoute('user.register'),
-    ];
-  }
-
-  /**
    * Renders for testing file_url functions in a Twig template.
    */
   public function fileUrlRender() {
diff --git a/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.url_to_string.html.twig b/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.url_to_string.html.twig
deleted file mode 100644
index e337a6f..0000000
--- a/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.url_to_string.html.twig
+++ /dev/null
@@ -1 +0,0 @@
-<div>rendered url: {{ test_url }}</div>
diff --git a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module
index 7f6fe35..e42b020 100644
--- a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module
+++ b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module
@@ -42,10 +42,6 @@ function twig_theme_test_theme($existing, $type, $theme, $path) {
     'variables' => array('test_url' => NULL),
     'template' => 'twig_theme_test.link_generator',
   );
-  $items['twig_theme_test_url_to_string'] = array(
-    'variables' => array('test_url' => NULL),
-    'template' => 'twig_theme_test.url_to_string',
-  );
   $items['twig_theme_test_file_url'] = array(
     'variables' => array(),
     'template' => 'twig_theme_test.file_url',
diff --git a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml
index 1001b47..4d30bb9 100644
--- a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml
+++ b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml
@@ -26,13 +26,6 @@ twig_theme_test_link_generator:
   requirements:
     _access: 'TRUE'
 
-twig_theme_test_url_to_string:
-  path: '/twig-theme-test/url-to-string'
-  defaults:
-    _controller: '\Drupal\twig_theme_test\TwigThemeTestController::urlToStringRender'
-  requirements:
-    _access: 'TRUE'
-
 twig_theme_test_file_url:
   path: '/twig-theme-test/file-url'
   defaults:
diff --git a/core/modules/taxonomy/src/Tests/TaxonomyTestBase.php b/core/modules/taxonomy/src/Tests/TaxonomyTestBase.php
index 11a2f63..c2720ec 100644
--- a/core/modules/taxonomy/src/Tests/TaxonomyTestBase.php
+++ b/core/modules/taxonomy/src/Tests/TaxonomyTestBase.php
@@ -7,16 +7,16 @@
 
 namespace Drupal\taxonomy\Tests;
 
+use Drupal\Component\Utility\Unicode;
+use Drupal\Core\Language\LanguageInterface;
 use Drupal\simpletest\WebTestBase;
-use Drupal\taxonomy\Tests\TaxonomyTestTrait;
+use Drupal\taxonomy\Entity\Vocabulary;
 
 /**
  * Provides common helper methods for Taxonomy module tests.
  */
 abstract class TaxonomyTestBase extends WebTestBase {
 
-  use TaxonomyTestTrait;
-
   /**
    * Modules to enable.
    *
@@ -36,4 +36,49 @@ protected function setUp() {
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     }
   }
+
+  /**
+   * Returns a new vocabulary with random properties.
+   */
+  function createVocabulary() {
+    // Create a vocabulary.
+    $vocabulary = entity_create('taxonomy_vocabulary', array(
+      'name' => $this->randomMachineName(),
+      'description' => $this->randomMachineName(),
+      'vid' => Unicode::strtolower($this->randomMachineName()),
+      'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+      'weight' => mt_rand(0, 10),
+    ));
+    $vocabulary->save();
+    return $vocabulary;
+  }
+
+  /**
+   * Returns a new term with random properties in vocabulary $vid.
+   *
+   * @param \Drupal\taxonomy\Entity\Vocabulary $vocabulary
+   *   The vocabulary object.
+   * @param array $values
+   *   (optional) An array of values to set, keyed by property name. If the
+   *   entity type has bundles, the bundle key has to be specified.
+   *
+   * @return \Drupal\taxonomy\Entity\Term
+   *   The new taxonomy term object.
+   */
+  function createTerm(Vocabulary $vocabulary, $values = array()) {
+    $filter_formats = filter_formats();
+    $format = array_pop($filter_formats);
+    $term = entity_create('taxonomy_term', $values + array(
+      'name' => $this->randomMachineName(),
+      'description' => array(
+        'value' => $this->randomMachineName(),
+        // Use the first available text format.
+        'format' => $format->id(),
+      ),
+      'vid' => $vocabulary->id(),
+      'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+    ));
+    $term->save();
+    return $term;
+  }
 }
diff --git a/core/modules/taxonomy/src/Tests/TaxonomyTestTrait.php b/core/modules/taxonomy/src/Tests/TaxonomyTestTrait.php
deleted file mode 100644
index 34971db..0000000
--- a/core/modules/taxonomy/src/Tests/TaxonomyTestTrait.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\taxonomy\Tests\TaxonomyTestTrait.
- */
-
-namespace Drupal\taxonomy\Tests;
-
-use Drupal\Component\Utility\Unicode;
-use Drupal\Core\Language\LanguageInterface;
-use Drupal\taxonomy\Entity\Vocabulary;
-
-/**
- * Provides common helper methods for Taxonomy module tests.
- */
-trait TaxonomyTestTrait {
-
-  /**
-   * Returns a new vocabulary with random properties.
-   */
-  function createVocabulary() {
-    // Create a vocabulary.
-    $vocabulary = entity_create('taxonomy_vocabulary', array(
-      'name' => $this->randomMachineName(),
-      'description' => $this->randomMachineName(),
-      'vid' => Unicode::strtolower($this->randomMachineName()),
-      'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
-      'weight' => mt_rand(0, 10),
-    ));
-    $vocabulary->save();
-    return $vocabulary;
-  }
-
-  /**
-   * Returns a new term with random properties in vocabulary $vid.
-   *
-   * @param \Drupal\taxonomy\Entity\Vocabulary $vocabulary
-   *   The vocabulary object.
-   * @param array $values
-   *   (optional) An array of values to set, keyed by property name. If the
-   *   entity type has bundles, the bundle key has to be specified.
-   *
-   * @return \Drupal\taxonomy\Entity\Term
-   *   The new taxonomy term object.
-   */
-  function createTerm(Vocabulary $vocabulary, $values = array()) {
-    $filter_formats = filter_formats();
-    $format = array_pop($filter_formats);
-    $term = entity_create('taxonomy_term', $values + array(
-      'name' => $this->randomMachineName(),
-      'description' => array(
-        'value' => $this->randomMachineName(),
-        // Use the first available text format.
-        'format' => $format->id(),
-      ),
-      'vid' => $vocabulary->id(),
-      'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
-    ));
-    $term->save();
-    return $term;
-  }
-}
diff --git a/core/modules/taxonomy/src/Tests/TermKernelTest.php b/core/modules/taxonomy/src/Tests/TermKernelTest.php
deleted file mode 100644
index 6692775..0000000
--- a/core/modules/taxonomy/src/Tests/TermKernelTest.php
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\taxonomy\Tests\TermKernelTest.
- */
-
-namespace Drupal\taxonomy\Tests;
-
-use Drupal\taxonomy\Entity\Term;
-use Drupal\taxonomy\Tests\TaxonomyTestTrait;
-use Drupal\simpletest\KernelTestBase;
-
-/**
- * Kernel tests for taxonomy term functions.
- *
- * @group taxonomy
- */
-class TermKernelTest extends KernelTestBase {
-
-  use TaxonomyTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  public static $modules = array( 'filter', 'taxonomy', 'taxonomy_term', 'text', 'user' );
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installConfig(array('filter'));
-    $this->installEntitySchema('taxonomy_term');
-  }
-
-  /**
-   * Deleting terms should also remove related vocabulary.
-   * Deleting an invalid term should silently fail.
-   */
-  public function testTermDelete() {
-    $vocabulary = $this->createVocabulary();
-    $valid_term = $this->createTerm($vocabulary);
-    // Delete a valid term.
-    $valid_term->delete();
-    $terms = entity_load_multiple_by_properties('taxonomy_term', array('vid' => $vocabulary->id()));
-    $this->assertTrue(empty($terms), 'Vocabulary is empty after deletion');
-
-    // Delete an invalid term. Should not throw any notices.
-    entity_delete_multiple('taxonomy_term', array(42));
-  }
-
-  /**
-   * Deleting a parent of a term with multiple parents does not delete the term.
-   */
-  public function testMultipleParentDelete() {
-    $vocabulary = $this->createVocabulary();
-    $parent_term1 = $this->createTerm($vocabulary);
-    $parent_term2 = $this->createTerm($vocabulary);
-    $child_term = $this->createTerm($vocabulary);
-    $child_term->parent = array($parent_term1->id(), $parent_term2->id());
-    $child_term->save();
-    $child_term_id = $child_term->id();
-
-    $parent_term1->delete();
-    $term_storage = $this->container->get('entity.manager')->getStorage('taxonomy_term');
-    $term_storage->resetCache(array($child_term_id));
-    $child_term = Term::load($child_term_id);
-    $this->assertTrue(!empty($child_term), 'Child term is not deleted if only one of its parents is removed.');
-
-    $parent_term2->delete();
-    $term_storage->resetCache(array($child_term_id));
-    $child_term = Term::load($child_term_id);
-    $this->assertTrue(empty($child_term), 'Child term is deleted if all of its parents are removed.');
-  }
-
-  /**
-   * Test a taxonomy with terms that have multiple parents of different depths.
-   */
-  public function testTaxonomyVocabularyTree() {
-    // Create a new vocabulary with 6 terms.
-    $vocabulary = $this->createVocabulary();
-    $term = array();
-    for ($i = 0; $i < 6; $i++) {
-      $term[$i] = $this->createTerm($vocabulary);
-    }
-
-    // Set the weight on $term[1] so it appears before $term[5] when fetching
-    // the parents for $term[2], in order to test for a regression on
-    // \Drupal\taxonomy\TermStorageInterface::loadAllParents().
-    $term[1]->weight = -1;
-    $term[1]->save();
-
-    // $term[2] is a child of 1 and 5.
-    $term[2]->parent = array($term[1]->id(), $term[5]->id());
-    $term[2]->save();
-    // $term[3] is a child of 2.
-    $term[3]->parent = array($term[2]->id());
-    $term[3]->save();
-    // $term[5] is a child of 4.
-    $term[5]->parent = array($term[4]->id());
-    $term[5]->save();
-
-    /**
-     * Expected tree:
-     * term[0] | depth: 0
-     * term[1] | depth: 0
-     * -- term[2] | depth: 1
-     * ---- term[3] | depth: 2
-     * term[4] | depth: 0
-     * -- term[5] | depth: 1
-     * ---- term[2] | depth: 2
-     * ------ term[3] | depth: 3
-     */
-    // Count $term[1] parents with $max_depth = 1.
-    $tree = taxonomy_get_tree($vocabulary->id(), $term[1]->id(), 1);
-    $this->assertEqual(1, count($tree), 'We have one parent with depth 1.');
-
-    // Count all vocabulary tree elements.
-    $tree = taxonomy_get_tree($vocabulary->id());
-    $this->assertEqual(8, count($tree), 'We have all vocabulary tree elements.');
-
-    // Count elements in every tree depth.
-    foreach ($tree as $element) {
-      if (!isset($depth_count[$element->depth])) {
-        $depth_count[$element->depth] = 0;
-      }
-      $depth_count[$element->depth]++;
-    }
-    $this->assertEqual(3, $depth_count[0], 'Three elements in taxonomy tree depth 0.');
-    $this->assertEqual(2, $depth_count[1], 'Two elements in taxonomy tree depth 1.');
-    $this->assertEqual(2, $depth_count[2], 'Two elements in taxonomy tree depth 2.');
-    $this->assertEqual(1, $depth_count[3], 'One element in taxonomy tree depth 3.');
-
-    /** @var \Drupal\taxonomy\TermStorageInterface $storage */
-    $storage = \Drupal::entityManager()->getStorage('taxonomy_term');
-    // Count parents of $term[2].
-    $parents = $storage->loadParents($term[2]->id());
-    $this->assertEqual(2, count($parents), 'The term has two parents.');
-
-    // Count parents of $term[3].
-    $parents = $storage->loadParents($term[3]->id());
-    $this->assertEqual(1, count($parents), 'The term has one parent.');
-
-    // Identify all ancestors of $term[2].
-    $ancestors = $storage->loadAllParents($term[2]->id());
-    $this->assertEqual(4, count($ancestors), 'The term has four ancestors including the term itself.');
-
-    // Identify all ancestors of $term[3].
-    $ancestors = $storage->loadAllParents($term[3]->id());
-    $this->assertEqual(5, count($ancestors), 'The term has five ancestors including the term itself.');
-  }
-}
diff --git a/core/modules/taxonomy/src/Tests/TermUnitTest.php b/core/modules/taxonomy/src/Tests/TermUnitTest.php
new file mode 100644
index 0000000..3f302b2
--- /dev/null
+++ b/core/modules/taxonomy/src/Tests/TermUnitTest.php
@@ -0,0 +1,131 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\taxonomy\Tests\TermUnitTest.
+ */
+
+namespace Drupal\taxonomy\Tests;
+
+use Drupal\taxonomy\Entity\Term;
+
+/**
+ * Unit tests for taxonomy term functions.
+ *
+ * @group taxonomy
+ */
+class TermUnitTest extends TaxonomyTestBase {
+
+  function testTermDelete() {
+    $vocabulary = $this->createVocabulary();
+    $valid_term = $this->createTerm($vocabulary);
+    // Delete a valid term.
+    $valid_term->delete();
+    $terms = entity_load_multiple_by_properties('taxonomy_term', array('vid' => $vocabulary->id()));
+    $this->assertTrue(empty($terms), 'Vocabulary is empty after deletion');
+
+    // Delete an invalid term. Should not throw any notices.
+    entity_delete_multiple('taxonomy_term', array(42));
+  }
+
+  /**
+   * Deleting a parent of a term with multiple parents does not delete the term.
+   */
+  function testMultipleParentDelete() {
+    $vocabulary = $this->createVocabulary();
+    $parent_term1 = $this->createTerm($vocabulary);
+    $parent_term2 = $this->createTerm($vocabulary);
+    $child_term = $this->createTerm($vocabulary);
+    $child_term->parent = array($parent_term1->id(), $parent_term2->id());
+    $child_term->save();
+    $child_term_id = $child_term->id();
+
+    $parent_term1->delete();
+    $term_storage = $this->container->get('entity.manager')->getStorage('taxonomy_term');
+    $term_storage->resetCache(array($child_term_id));
+    $child_term = Term::load($child_term_id);
+    $this->assertTrue(!empty($child_term), 'Child term is not deleted if only one of its parents is removed.');
+
+    $parent_term2->delete();
+    $term_storage->resetCache(array($child_term_id));
+    $child_term = Term::load($child_term_id);
+    $this->assertTrue(empty($child_term), 'Child term is deleted if all of its parents are removed.');
+  }
+
+  /**
+   * Test a taxonomy with terms that have multiple parents of different depths.
+   */
+  function testTaxonomyVocabularyTree() {
+    // Create a new vocabulary with 6 terms.
+    $vocabulary = $this->createVocabulary();
+    $term = array();
+    for ($i = 0; $i < 6; $i++) {
+      $term[$i] = $this->createTerm($vocabulary);
+    }
+
+    // Set the weight on $term[1] so it appears before $term[5] when fetching
+    // the parents for $term[2], in order to test for a regression on
+    // \Drupal\taxonomy\TermStorageInterface::loadAllParents().
+    $term[1]->weight = -1;
+    $term[1]->save();
+
+    // $term[2] is a child of 1 and 5.
+    $term[2]->parent = array($term[1]->id(), $term[5]->id());
+    $term[2]->save();
+    // $term[3] is a child of 2.
+    $term[3]->parent = array($term[2]->id());
+    $term[3]->save();
+    // $term[5] is a child of 4.
+    $term[5]->parent = array($term[4]->id());
+    $term[5]->save();
+
+    /**
+     * Expected tree:
+     * term[0] | depth: 0
+     * term[1] | depth: 0
+     * -- term[2] | depth: 1
+     * ---- term[3] | depth: 2
+     * term[4] | depth: 0
+     * -- term[5] | depth: 1
+     * ---- term[2] | depth: 2
+     * ------ term[3] | depth: 3
+     */
+    // Count $term[1] parents with $max_depth = 1.
+    $tree = taxonomy_get_tree($vocabulary->id(), $term[1]->id(), 1);
+    $this->assertEqual(1, count($tree), 'We have one parent with depth 1.');
+
+    // Count all vocabulary tree elements.
+    $tree = taxonomy_get_tree($vocabulary->id());
+    $this->assertEqual(8, count($tree), 'We have all vocabulary tree elements.');
+
+    // Count elements in every tree depth.
+    foreach ($tree as $element) {
+      if (!isset($depth_count[$element->depth])) {
+        $depth_count[$element->depth] = 0;
+      }
+      $depth_count[$element->depth]++;
+    }
+    $this->assertEqual(3, $depth_count[0], 'Three elements in taxonomy tree depth 0.');
+    $this->assertEqual(2, $depth_count[1], 'Two elements in taxonomy tree depth 1.');
+    $this->assertEqual(2, $depth_count[2], 'Two elements in taxonomy tree depth 2.');
+    $this->assertEqual(1, $depth_count[3], 'One element in taxonomy tree depth 3.');
+
+    /** @var \Drupal\taxonomy\TermStorageInterface $storage */
+    $storage = \Drupal::entityManager()->getStorage('taxonomy_term');
+    // Count parents of $term[2].
+    $parents = $storage->loadParents($term[2]->id());
+    $this->assertEqual(2, count($parents), 'The term has two parents.');
+
+    // Count parents of $term[3].
+    $parents = $storage->loadParents($term[3]->id());
+    $this->assertEqual(1, count($parents), 'The term has one parent.');
+
+    // Identify all ancestors of $term[2].
+    $ancestors = $storage->loadAllParents($term[2]->id());
+    $this->assertEqual(4, count($ancestors), 'The term has four ancestors including the term itself.');
+
+    // Identify all ancestors of $term[3].
+    $ancestors = $storage->loadAllParents($term[3]->id());
+    $this->assertEqual(5, count($ancestors), 'The term has five ancestors including the term itself.');
+  }
+}
diff --git a/core/modules/toolbar/css/toolbar.menu.css b/core/modules/toolbar/css/toolbar.menu.css
index e857beb..6c5a076 100644
--- a/core/modules/toolbar/css/toolbar.menu.css
+++ b/core/modules/toolbar/css/toolbar.menu.css
@@ -34,13 +34,6 @@
   font-weight: bold;
 }
 
-/* ----- Toolbar menu tray for viewports less than 320px ------ */
-@media screen and (max-width: 319px) {
-  .toolbar .toolbar-tray-vertical.active {
-    width: 100%;
-  }
-}
-
 /**
  * Items.
  */
diff --git a/core/modules/update/templates/update-project-status.html.twig b/core/modules/update/templates/update-project-status.html.twig
index 0db548d..04ab882 100644
--- a/core/modules/update/templates/update-project-status.html.twig
+++ b/core/modules/update/templates/update-project-status.html.twig
@@ -110,9 +110,10 @@
 
   {% if base_themes %}
     {% set basethemes = base_themes|join(', ') %}
+    {# Using passthrough since placeholder is already applied in preprocess. #}
     <div class="basethemes">
       {% trans %}
-        Depends on: {{ basethemes }}
+        Depends on: {{ basethemes|passthrough }}
       {% endtrans %}
     </div>
   {% endif %}
diff --git a/core/modules/user/src/AccountForm.php b/core/modules/user/src/AccountForm.php
index 2bf04af..033731f 100644
--- a/core/modules/user/src/AccountForm.php
+++ b/core/modules/user/src/AccountForm.php
@@ -383,9 +383,10 @@ public function buildEntity(array $form, FormStateInterface $form_state) {
    * {@inheritdoc}
    */
   public function validate(array $form, FormStateInterface $form_state) {
-    /** @var \Drupal\user\UserInterface $account */
-    $account = parent::validate($form, $form_state);
+    parent::validate($form, $form_state);
 
+    /** @var \Drupal\user\UserInterface $account */
+    $account = $this->buildEntity($form, $form_state);
     // Customly trigger validation of manually added fields and add in
     // violations. This is necessary as entity form displays only invoke entity
     // validation for fields contained in the display.
@@ -405,8 +406,6 @@ public function validate(array $form, FormStateInterface $form_state) {
         $form_state->setErrorByName($field_name, $violation->getMessage());
       }
     }
-
-    return $account;
   }
 
   /**
diff --git a/core/modules/user/src/Plugin/Block/UserLoginBlock.php b/core/modules/user/src/Plugin/Block/UserLoginBlock.php
index 8fc92f0..9e66676 100644
--- a/core/modules/user/src/Plugin/Block/UserLoginBlock.php
+++ b/core/modules/user/src/Plugin/Block/UserLoginBlock.php
@@ -91,16 +91,16 @@ public function build() {
     // Build action links.
     $items = array();
     if (\Drupal::config('user.settings')->get('register') != USER_REGISTER_ADMINISTRATORS_ONLY) {
-      $items['create_account'] = \Drupal::l($this->t('Create new account'), new Url('user.register', array(), array(
+      $items['create_account'] = \Drupal::l(t('Create new account'), new Url('user.register', array(), array(
         'attributes' => array(
-          'title' => $this->t('Create a new user account.'),
+          'title' => t('Create a new user account.'),
           'class' => array('create-account-link'),
         ),
       )));
     }
-    $items['request_password'] = \Drupal::l($this->t('Reset your password'), new Url('user.pass', array(), array(
+    $items['request_password'] = \Drupal::l(t('Reset your password'), new Url('user.pass', array(), array(
       'attributes' => array(
-        'title' => $this->t('Send password reset instructions via e-mail.'),
+        'title' => t('Send password reset instructions via e-mail.'),
         'class' => array('request-password-link'),
       ),
     )));
diff --git a/core/modules/user/src/Tests/UserSaveTest.php b/core/modules/user/src/Tests/UserSaveTest.php
index a2eaf5d..fdd468c 100644
--- a/core/modules/user/src/Tests/UserSaveTest.php
+++ b/core/modules/user/src/Tests/UserSaveTest.php
@@ -21,12 +21,7 @@ class UserSaveTest extends WebTestBase {
    */
   function testUserImport() {
     // User ID must be a number that is not in the database.
-
-    $uids = \Drupal::entityManager()->getStorage('user')->getQuery()
-      ->sort('uid', 'DESC')
-      ->range(0, 1)
-      ->execute();
-    $max_uid = reset($uids);
+    $max_uid = db_query('SELECT MAX(uid) FROM {users}')->fetchField();
     $test_uid = $max_uid + mt_rand(1000, 1000000);
     $test_name = $this->randomMachineName();
 
diff --git a/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php b/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php
index 1ffc6d6..ef531b4 100644
--- a/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php
+++ b/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php
@@ -38,7 +38,7 @@ class ViewsLocalTask extends DeriverBase implements ContainerDeriverInterface {
    *
    * @param \Drupal\Core\Routing\RouteProviderInterface $route_provider
    *   The route provider.
-   * @param \Drupal\Core\State\StateInterface $state
+   * @param \Drupal\Core\KeyValueStore\KeyValueStoreInterface $state
    *   The state key value store.
    */
   public function __construct(RouteProviderInterface $route_provider, StateInterface $state) {
@@ -142,7 +142,6 @@ public function alterLocalTasks(&$local_tasks) {
    *
    * @return array
    *   A list of arrays containing the $view and $display_id.
-   *
    * @code
    * array(
    *   array($view, $display_id),
diff --git a/core/modules/views/src/Plugin/views/display/Block.php b/core/modules/views/src/Plugin/views/display/Block.php
index 391046c..d2bfe26 100644
--- a/core/modules/views/src/Plugin/views/display/Block.php
+++ b/core/modules/views/src/Plugin/views/display/Block.php
@@ -173,7 +173,7 @@ public function optionsSummary(&$categories, &$options) {
     $options['block_hide_empty'] = array(
       'category' => 'other',
       'title' => $this->t('Hide block if the view output is empty'),
-      'value' => $this->getOption('block_hide_empty') ? $this->t('Yes') : $this->t('No'),
+      'value' => $this->getOption('block_hide_empty') ? $this->t('Hide') : $this->t('Show'),
     );
   }
 
diff --git a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
index fcf4904..28cdcd1 100644
--- a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
+++ b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
@@ -715,7 +715,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
         '#title' => $this->t('Text'),
         '#type' => 'textarea',
         '#default_value' => $this->options['alter']['text'],
-        '#description' => $this->t('The text to display for this field. You may include HTML or <a href="@url">Twig</a>. You may enter data from this view as per the "Replacement patterns" below.', array('@url' => CoreUrl::fromUri('http://twig.sensiolabs.org/documentation')->toString())),
+        '#description' => $this->t('The text to display for this field. You may include HTML or <a href="@url">Twig</a>. You may enter data from this view as per the "Replacement patterns" below.', array('@url' => CoreUrl::fromUri('http://twig.sensiolabs.org/documentation'))),
         '#states' => array(
           'visible' => array(
             ':input[name="options[alter][alter_text]"]' => array('checked' => TRUE),
diff --git a/core/modules/views/src/Plugin/views/query/Sql.php b/core/modules/views/src/Plugin/views/query/Sql.php
index 0bc5134..bf52fb9 100644
--- a/core/modules/views/src/Plugin/views/query/Sql.php
+++ b/core/modules/views/src/Plugin/views/query/Sql.php
@@ -203,7 +203,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
 
     $form['disable_sql_rewrite'] = array(
       '#title' => $this->t('Disable SQL rewriting'),
-      '#description' => $this->t('Disabling SQL rewriting will omit all query tags, i. e. disable node access checks as well as override hook_query_alter() implementations in other modules.'),
+      '#description' => $this->t('Disabling SQL rewriting will disable node_access checks as well as other modules that implement hook_query_alter().'),
       '#type' => 'checkbox',
       '#default_value' => !empty($this->options['disable_sql_rewrite']),
       '#suffix' => '<div class="messages messages--warning sql-rewrite-warning js-hide">' . $this->t('WARNING: Disabling SQL rewriting means that node access security is disabled. This may allow users to see data they should not be able to see if your view is misconfigured. Use this option only if you understand and accept this security risk.') . '</div>',
diff --git a/core/modules/views/src/Plugin/views/style/StylePluginBase.php b/core/modules/views/src/Plugin/views/style/StylePluginBase.php
index 360b717..9c229da 100644
--- a/core/modules/views/src/Plugin/views/style/StylePluginBase.php
+++ b/core/modules/views/src/Plugin/views/style/StylePluginBase.php
@@ -686,7 +686,7 @@ public function getField($index, $field) {
    * @param $field
    *    The id of the field.
    */
-  public function getFieldValue($index, $field) {
+  protected function getFieldValue($index, $field) {
     $this->view->row_index = $index;
     $value = $this->view->field[$field]->getValue($this->view->result[$index]);
     unset($this->view->row_index);
diff --git a/core/modules/views/src/Tests/Handler/FieldEntityOperationsTest.php b/core/modules/views/src/Tests/Handler/FieldEntityOperationsTest.php
index cdc2da5..219ebda 100644
--- a/core/modules/views/src/Tests/Handler/FieldEntityOperationsTest.php
+++ b/core/modules/views/src/Tests/Handler/FieldEntityOperationsTest.php
@@ -50,8 +50,8 @@ public function testEntityOperations() {
     foreach ($entities as $entity) {
       $operations = \Drupal::entityManager()->getListBuilder('entity_test')->getOperations($entity);
       foreach ($operations as $operation) {
-        $expected_destination = Url::fromUri('internal:/test-entity-operations')->toString();
-        $result = $this->xpath('//ul[contains(@class, dropbutton)]/li/a[contains(@href, :path) and text()=:title]', array(':path' => $operation['url']->toString() . '?destination=' . $expected_destination, ':title' => $operation['title']));
+        $expected_destination = Url::fromUri('internal:/test-entity-operations');
+        $result = $this->xpath('//ul[contains(@class, dropbutton)]/li/a[contains(@href, :path) and text()=:title]', array(':path' => $operation['url'] . '?destination=' . $expected_destination, ':title' => $operation['title']));
         $this->assertEqual(count($result), 1, t('Found entity @operation link with destination parameter.', array('@operation' => $operation['title'])));
       }
     }
diff --git a/core/modules/views_ui/src/ViewUI.php b/core/modules/views_ui/src/ViewUI.php
index 5d00c80..cf43e1a 100644
--- a/core/modules/views_ui/src/ViewUI.php
+++ b/core/modules/views_ui/src/ViewUI.php
@@ -727,7 +727,7 @@ public function renderPreview($display_id, $args = array()) {
             if (isset($path)) {
               // @todo Views should expect and store a leading /. See:
               //   https://www.drupal.org/node/2423913
-              $path = \Drupal::l($path->toString(), $path);
+              $path = \Drupal::l($path, Url::fromUserInput('/' . $path));
             }
             else {
               $path = t('This display has no path.');
diff --git a/core/modules/views_ui/templates/views-ui-display-tab-bucket.html.twig b/core/modules/views_ui/templates/views-ui-display-tab-bucket.html.twig
index 3cde0f2..9009d88 100644
--- a/core/modules/views_ui/templates/views-ui-display-tab-bucket.html.twig
+++ b/core/modules/views_ui/templates/views-ui-display-tab-bucket.html.twig
@@ -28,8 +28,8 @@
   {% if title -%}
     <h3>{{ title }}</h3>
   {%- endif %}
+  {{ content }}
   {% if actions -%}
     {{ actions }}
   {%- endif %}
-  {{ content }}
 </div>
diff --git a/core/tests/Drupal/Tests/Component/Bridge/ZfExtensionManagerSfContainerTest.php b/core/tests/Drupal/Tests/Component/Bridge/ZfExtensionManagerSfContainerTest.php
deleted file mode 100644
index 9a8db88..0000000
--- a/core/tests/Drupal/Tests/Component/Bridge/ZfExtensionManagerSfContainerTest.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Tests\Component\Bridge\ZfExtensionManagerSfContainerTest.
- */
-
-namespace Drupal\Tests\Component\Bridge;
-
-use Drupal\Component\Bridge\ZfExtensionManagerSfContainer;
-use Drupal\Tests\UnitTestCase;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * @coversDefaultClass \Drupal\Component\Bridge\ZfExtensionManagerSfContainer
- * @group Bridge
- */
-class ZfExtensionManagerSfContainerTest extends UnitTestCase {
-
-  /**
-   * @covers ::setContainer
-   * @covers ::get
-   */
-  public function testGet() {
-    $service = new \stdClass();
-    $service->value = 'myvalue';
-    $container = new ContainerBuilder();
-    $container->set('foo', $service);
-    $bridge = new ZfExtensionManagerSfContainer();
-    $bridge->setContainer($container);
-    $this->assertEquals($service, $bridge->get('foo'));
-  }
-
-  /**
-   * @covers ::setContainer
-   * @covers ::has
-   */
-  public function testHas() {
-    $service = new \stdClass();
-    $service->value = 'myvalue';
-    $container = new ContainerBuilder();
-    $container->set('foo', $service);
-    $bridge = new ZfExtensionManagerSfContainer();
-    $bridge->setContainer($container);
-    $this->assertTrue($bridge->has('foo'));
-    $this->assertFalse($bridge->has('bar'));
-  }
-
-  /**
-   * @covers ::__construct
-   * @covers ::has
-   * @covers ::get
-   */
-  public function testPrefix() {
-    $service = new \stdClass();
-    $service->value = 'myvalue';
-    $container = new ContainerBuilder();
-    $container->set('foo.bar', $service);
-    $bridge = new ZfExtensionManagerSfContainer('foo.');
-    $bridge->setContainer($container);
-    $this->assertTrue($bridge->has('bar'));
-    $this->assertFalse($bridge->has('baz'));
-    $this->assertEquals($service, $bridge->get('bar'));
-  }
-
-  /**
-   * @covers ::canonicalizeName
-   * @dataProvider canonicalizeNameProvider
-   */
-  public function testCanonicalizeName($name, $canonical_name) {
-    $service = new \stdClass();
-    $service->value = 'myvalue';
-    $container = new ContainerBuilder();
-    $container->set($canonical_name, $service);
-    $bridge = new ZfExtensionManagerSfContainer();
-    $bridge->setContainer($container);
-    $this->assertTrue($bridge->has($name));
-    $this->assertEquals($service, $bridge->get($name));
-  }
-
-  /**
-   * Data provider for testReverseProxyEnabled.
-   *
-   * Replacements:
-   *   array('-' => '', '_' => '', ' ' => '', '\\' => '', '/' => '')
-   */
-  public function canonicalizeNameProvider() {
-    return array(
-      array(
-        'foobar',
-        'foobar',
-      ),
-      array(
-        'foo-bar',
-        'foobar',
-      ),
-      array(
-        'foo_bar',
-        'foobar',
-      ),
-      array(
-        'foo bar',
-        'foobar',
-      ),
-      array(
-        'foo\\bar',
-        'foobar',
-      ),
-      array(
-        'foo/bar',
-        'foobar',
-      ),
-      // There is also a strtolower in canonicalizeName.
-      array(
-        'Foo/bAr',
-        'foobar',
-      ),
-      array(
-        'foo/-_\\ bar',
-        'foobar',
-      ),
-    );
-  }
-}
diff --git a/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php b/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php
index cdb68a2..19ed5f2 100644
--- a/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php
+++ b/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php
@@ -61,24 +61,6 @@ public function testDateArrays($input, $timezone, $expected) {
   }
 
   /**
-   * Test creating dates from invalid array input.
-   *
-   * @param mixed $input
-   *   Input argument for DateTimePlus.
-   * @param string $timezone
-   *   Timezone argument for DateTimePlus.
-   *
-   * @dataProvider providerTestInvalidDateArrays
-   * @expectedException \Exception
-   */
-  public function testInvalidDateArrays($input, $timezone) {
-    $this->assertInstanceOf(
-      '\Drupal\Component\DateTimePlus',
-      DateTimePlus::createFromArray($input, $timezone)
-    );
-  }
-
-  /**
    * Test creating dates from timestamps, and manipulating timezones.
    *
    * @param int $input
@@ -354,29 +336,28 @@ public function providerTestInvalidDates() {
   }
 
   /**
-   * Data provider for testInvalidDateArrays.
+   * Provides data for testInvalidDates.
    *
    * @return array
    *   An array of arrays, each containing:
    *   - 'input' - Input for DateTimePlus.
    *   - 'timezone' - Timezone for DateTimePlus.
+   *   - 'format' - Format for DateTimePlus.
+   *   - 'message' - Message to display on failure.
    *
    * @see testInvalidDateArrays
    */
   public function providerTestInvalidDateArrays() {
     return array(
-      // One year larger than the documented upper limit of checkdate().
-      array(array('year' => 32768, 'month' => 1, 'day' => 8, 'hour' => 8, 'minute' => 0, 'second' => 0), 'America/Chicago'),
-      // One year smaller than the documented lower limit of checkdate().
-      array(array('year' => 0, 'month' => 1, 'day' => 8, 'hour' => 8, 'minute' => 0, 'second' => 0), 'America/Chicago'),
+      // Test for invalid year from date array. 10000 as a year will
+      // create an exception error in the PHP DateTime object.
+      array(array('year' => 10000, 'month' => 7, 'day' => 8, 'hour' => 8, 'minute' => 0, 'second' => 0), 'America/Chicago', NULL, "array('year' => 10000, 'month' => 7, 'day' => 8, 'hour' => 8, 'minute' => 0, 'second' => 0) contains an invalid year and did not produce errors."),
       // Test for invalid month from date array.
-      array(array('year' => 2010, 'month' => 27, 'day' => 8, 'hour' => 8, 'minute' => 0, 'second' => 0), 'America/Chicago'),
+      array(array('year' => 2010, 'month' => 27, 'day' => 8, 'hour' => 8, 'minute' => 0, 'second' => 0), 'America/Chicago', NULL, "array('year' => 2010, 'month' => 27, 'day' => 8, 'hour' => 8, 'minute' => 0, 'second' => 0) contains an invalid month and did not produce errors."),
       // Test for invalid hour from date array.
-      array(array('year' => 2010, 'month' => 2, 'day' => 28, 'hour' => 80, 'minute' => 0, 'second' => 0), 'America/Chicago'),
+      array(array('year' => 2010, 'month' => 2, 'day' => 28, 'hour' => 80, 'minute' => 0, 'second' => 0), 'America/Chicago', NULL, "array('year' => 2010, 'month' => 2, 'day' => 28, 'hour' => 80, 'minute' => 0, 'second' => 0) contains an invalid hour and produces errors."),
       // Test for invalid minute from date array.
-      array(array('year' => 2010, 'month' => 7, 'day' => 8, 'hour' => 8, 'minute' => 88, 'second' => 0), 'America/Chicago'),
-      // Regression test for https://drupal.org/node/2084455
-      array(array('hour' => 59, 'minute' => 1,'second' => 1), 'America/Chicago'),
+      array(array('year' => 2010, 'month' => 7, 'day' => 8, 'hour' => 8, 'minute' => 88, 'second' => 0), 'America/Chicago', NULL, "array('year' => 2010, 'month' => 7, 'day' => 8, 'hour' => 8, 'minute' => 88, 'second' => 0) contains an invalid minute and produces errors."),
     );
   }
 
diff --git a/core/tests/Drupal/Tests/Component/Utility/StringTest.php b/core/tests/Drupal/Tests/Component/Utility/StringTest.php
index 307385a..a64854f 100644
--- a/core/tests/Drupal/Tests/Component/Utility/StringTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/StringTest.php
@@ -89,9 +89,7 @@ function testFormat($string, $args, $expected, $message, $expected_is_safe) {
   function providerFormat() {
     $tests[] = array('Simple text', array(), 'Simple text', 'String::format leaves simple text alone.', TRUE);
     $tests[] = array('Escaped text: @value', array('@value' => '<script>'), 'Escaped text: &lt;script&gt;', 'String::format replaces and escapes string.', TRUE);
-    $tests[] = array('Escaped text: @value', array('@value' => SafeMarkup::set('<span>Safe HTML</span>')), 'Escaped text: <span>Safe HTML</span>', 'String::format does not escape an already safe string.', TRUE);
     $tests[] = array('Placeholder text: %value', array('%value' => '<script>'), 'Placeholder text: <em class="placeholder">&lt;script&gt;</em>', 'String::format replaces, escapes and themes string.', TRUE);
-    $tests[] = array('Placeholder text: %value', array('%value' => SafeMarkup::set('<span>Safe HTML</span>')), 'Placeholder text: <em class="placeholder"><span>Safe HTML</span></em>', 'String::format does not escape an already safe string themed as a placeholder.', TRUE);
     $tests[] = array('Verbatim text: !value', array('!value' => '<script>'), 'Verbatim text: <script>', 'String::format replaces verbatim string as-is.', FALSE);
     $tests[] = array('Verbatim text: !value', array('!value' => SafeMarkup::set('<span>Safe HTML</span>')), 'Verbatim text: <span>Safe HTML</span>', 'String::format replaces verbatim string as-is.', TRUE);
 
diff --git a/core/tests/Drupal/Tests/Core/Database/Driver/pgsql/PostgresqlConnectionTest.php b/core/tests/Drupal/Tests/Core/Database/Driver/pgsql/PostgresqlConnectionTest.php
deleted file mode 100644
index 57e38d0..0000000
--- a/core/tests/Drupal/Tests/Core/Database/Driver/pgsql/PostgresqlConnectionTest.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-/**
- * @file
- * Contains Drupal\Tests\Core\Database\Driver\pgsql\PostgresqlConnectionTest
- */
-
-namespace Drupal\Tests\Core\Database\Driver\pgsql;
-
-use Drupal\Core\Database\Driver\pgsql\Connection;
-use Drupal\Tests\Core\Database\Stub\StubPDO;
-use Drupal\Tests\UnitTestCase;
-
-/**
- * @coversDefaultClass \Drupal\Core\Database\Driver\pgsql\Connection
- * @group Database
- */
-class PostgresqlConnectionTest extends UnitTestCase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->mock_pdo = $this->getMock('Drupal\Tests\Core\Database\Stub\StubPDO');
-  }
-
-  /**
-   * Data provider for testEscapeTable.
-   *
-   * @return []
-   *   An indexed array of where each value is an array of arguments to pass to
-   *   testEscapeField. The first value is the expected value, and the second
-   *   value is the value to test.
-   */
-  public function providerEscapeTables() {
-    return array(
-      array('nocase', 'nocase'),
-      array('"camelCase"', 'camelCase'),
-      array('"camelCase"', '"camelCase"'),
-      array('"camelCase"', 'camel/Case'),
-    );
-  }
-
-  /**
-   * Data provider for testEscapeAlias.
-   *
-   * @return []
-   *   Array of arrays with the following elements:
-   *   - Expected escaped string.
-   *   - String to escape.
-   */
-  public function providerEscapeAlias() {
-    return array(
-      array('nocase', 'nocase'),
-      array('"camelCase"', '"camelCase"'),
-      array('"camelCase"', 'camelCase'),
-      array('"camelCase"', 'camel.Case'),
-    );
-  }
-
-  /**
-   * Data provider for testEscapeField.
-   *
-   * @return []
-   *   Array of arrays with the following elements:
-   *   - Expected escaped string.
-   *   - String to escape.
-   */
-  public function providerEscapeFields() {
-    return array(
-      array('title', 'title'),
-      array('"isDefaultRevision"', 'isDefaultRevision'),
-      array('"isDefaultRevision"', '"isDefaultRevision"'),
-      array('entity_test."isDefaultRevision"', 'entity_test.isDefaultRevision'),
-      array('entity_test."isDefaultRevision"', '"entity_test"."isDefaultRevision"'),
-      array('"entityTest"."isDefaultRevision"', '"entityTest"."isDefaultRevision"'),
-      array('"entityTest"."isDefaultRevision"', 'entityTest.isDefaultRevision'),
-      array('entity_test."isDefaultRevision"', 'entity_test.is.Default.Revision'),
-    );
-  }
-
-  /**
-   * @covers ::escapeTable
-   * @dataProvider providerEscapeTables
-   */
-  public function testEscapeTable($expected, $name) {
-    $pgsql_connection = new Connection($this->mock_pdo, array());
-
-    $this->assertEquals($expected, $pgsql_connection->escapeTable($name));
-  }
-
-  /**
-   * @covers ::escapeAlias
-   * @dataProvider providerEscapeAlias
-   */
-  public function testEscapeAlias($expected, $name) {
-    $pgsql_connection = new Connection($this->mock_pdo, array());
-
-    $this->assertEquals($expected, $pgsql_connection->escapeAlias($name));
-  }
-
-  /**
-   * @covers ::escapeField
-   * @dataProvider providerEscapeFields
-   */
-  public function testEscapeField($expected, $name) {
-    $pgsql_connection = new Connection($this->mock_pdo, array());
-
-    $this->assertEquals($expected, $pgsql_connection->escapeField($name));
-  }
-
-}
diff --git a/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php b/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php
index 2b9ef09..2b1db8b 100644
--- a/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php
@@ -229,9 +229,9 @@ public function testIsNewRevision() {
       ->disableOriginalConstructor()
       ->getMockForAbstractClass();
 
-    $this->fieldTypePluginManager->expects($this->any())
-      ->method('createFieldItemList')
-      ->with($this->entity, 'revision_id', NULL)
+    $this->typedDataManager->expects($this->any())
+      ->method('getPropertyInstance')
+      ->with($this->entity->getTypedData(), 'revision_id', NULL)
       ->will($this->returnValue($field_item_list));
 
     $this->fieldDefinitions['revision_id']->getItemDefinition()->setClass(get_class($field_item));
diff --git a/core/tests/Drupal/Tests/Core/Entity/TypedData/EntityAdapterUnitTest.php b/core/tests/Drupal/Tests/Core/Entity/TypedData/EntityAdapterUnitTest.php
index 79eb3b2..0628c89 100644
--- a/core/tests/Drupal/Tests/Core/Entity/TypedData/EntityAdapterUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/TypedData/EntityAdapterUnitTest.php
@@ -164,6 +164,11 @@ protected function setUp() {
       ->method('getValidationConstraintManager')
       ->willReturn($validation_constraint_manager);
 
+    $this->fieldItemList = $this->getMock('\Drupal\Core\Field\FieldItemListInterface');
+    $this->typedDataManager->expects($this->any())
+      ->method('getPropertyInstance')
+      ->willReturn($this->fieldItemList);
+
     $not_specified = new Language(array('id' => LanguageInterface::LANGCODE_NOT_SPECIFIED, 'locked' => TRUE));
     $this->languageManager = $this->getMock('\Drupal\Core\Language\LanguageManagerInterface');
     $this->languageManager->expects($this->any())
@@ -185,11 +190,6 @@ protected function setUp() {
       ->method('getDefaultFieldSettings')
       ->will($this->returnValue(array()));
 
-    $this->fieldItemList = $this->getMock('\Drupal\Core\Field\FieldItemListInterface');
-    $this->fieldTypePluginManager->expects($this->any())
-      ->method('createFieldItemList')
-      ->willReturn($this->fieldItemList);
-
     $container = new ContainerBuilder();
     $container->set('entity.manager', $this->entityManager);
     $container->set('uuid', $this->uuid);
diff --git a/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php b/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php
index 9735487..1fffe45 100644
--- a/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php
+++ b/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php
@@ -40,14 +40,10 @@ protected function setUp() {
       ->method('moduleExists')
       ->with($module_name)
       ->will($this->returnValue(TRUE));
-    $typed_data_manager = $this->getMockBuilder('\Drupal\Core\TypedData\TypedDataManager')
-      ->disableOriginalConstructor()
-      ->getMock();
     $plugin_manager = new FieldTypePluginManager(
       $namespaces,
       $this->getMock('Drupal\Core\Cache\CacheBackendInterface'),
-      $module_handler,
-      $typed_data_manager
+      $module_handler
     );
 
     $container = new ContainerBuilder();
diff --git a/core/tests/Drupal/Tests/Core/UrlTest.php b/core/tests/Drupal/Tests/Core/UrlTest.php
index dcc2c66..98c8f36 100644
--- a/core/tests/Drupal/Tests/Core/UrlTest.php
+++ b/core/tests/Drupal/Tests/Core/UrlTest.php
@@ -376,6 +376,24 @@ public function testToString($urls) {
   }
 
   /**
+   * Tests the __toString() method.
+   *
+   * @param \Drupal\Core\Url[] $urls
+   *   An array of Url objects.
+   *
+   * @depends testUrlFromRequest
+   *
+   * @covers ::__toString
+   */
+  public function testMagicToString($urls) {
+    foreach ($urls as $index => $url) {
+      $url->setUrlGenerator(\Drupal::urlGenerator());
+      $path = array_pop($this->map[$index]);
+      $this->assertSame($path, (string) $url);
+    }
+  }
+
+  /**
    * Tests the getRouteName() method.
    *
    * @param \Drupal\Core\Url[] $urls
diff --git a/core/themes/bartik/bartik.libraries.yml b/core/themes/bartik/bartik.libraries.yml
index 8eac291..6d71afb 100644
--- a/core/themes/bartik/bartik.libraries.yml
+++ b/core/themes/bartik/bartik.libraries.yml
@@ -58,7 +58,7 @@ maintenance_page:
   version: VERSION
   css:
     theme:
-      css/maintenance-page.css: {}
+      css/theme/maintenance-page.css: {}
   dependencies:
     - system/maintenance
     - bartik/global-styling
diff --git a/core/themes/bartik/templates/node.html.twig b/core/themes/bartik/templates/node.html.twig
index 36ad9a7..b390681 100644
--- a/core/themes/bartik/templates/node.html.twig
+++ b/core/themes/bartik/templates/node.html.twig
@@ -86,7 +86,7 @@
       <div class="node__meta">
         {{ author_picture }}
         <span{{ author_attributes }}>
-          {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
+          {% trans %}Submitted by {{ author_name|passthrough }} on {{ date|passthrough }}{% endtrans %}
         </span>
         {{ metadata }}
       </div>
diff --git a/core/themes/classy/templates/forum/forum-submitted.html.twig b/core/themes/classy/templates/forum/forum-submitted.html.twig
index 8d36a51..f679363 100644
--- a/core/themes/classy/templates/forum/forum-submitted.html.twig
+++ b/core/themes/classy/templates/forum/forum-submitted.html.twig
@@ -17,7 +17,7 @@
  */
 #}
 {% if time %}
-  <span class="submitted">{% trans %}By {{ author }} {{ time }} ago{% endtrans %}</span>
+  <span class="submitted">{% trans %}By {{ author|passthrough }} {{ time }} ago{% endtrans %}</span>
 {% else %}
   {{ 'n/a'|t }}
 {% endif %}
diff --git a/core/themes/classy/templates/node/node.html.twig b/core/themes/classy/templates/node/node.html.twig
index 76e521c..a78fcb3 100644
--- a/core/themes/classy/templates/node/node.html.twig
+++ b/core/themes/classy/templates/node/node.html.twig
@@ -92,7 +92,7 @@
     <footer class="node__meta">
       {{ author_picture }}
       <div{{ author_attributes.addClass('node__submitted') }}>
-        {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
+        {% trans %}Submitted by {{ author_name|passthrough }} on {{ date|passthrough }}{% endtrans %}
         {{ metadata }}
       </div>
     </footer>
diff --git a/core/themes/engines/twig/twig.engine b/core/themes/engines/twig/twig.engine
index a7a8b27..39e866a 100644
--- a/core/themes/engines/twig/twig.engine
+++ b/core/themes/engines/twig/twig.engine
@@ -51,14 +51,13 @@ function twig_init(Extension $theme) {
 function twig_render_template($template_file, array $variables) {
   /** @var \Twig_Environment $twig_service */
   $twig_service = \Drupal::service('twig');
-  $output = [
-    'debug_prefix' => '',
-    'debug_info' => '',
-    'rendered_markup' => '',
-    'debug_suffix' => '',
-  ];
   try {
-    $output['rendered_markup'] = $twig_service->loadTemplate($template_file)->render($variables);
+    $output = array(
+      'debug_prefix'    => '',
+      'debug_info'      => '',
+      'rendered_markup' => $twig_service->loadTemplate($template_file)->render($variables),
+      'debug_suffix'    => '',
+    );
   }
   catch (\Twig_Error_Loader $e) {
     drupal_set_message($e->getMessage(), 'error');
@@ -151,12 +150,6 @@ function twig_render_var($arg) {
     if (method_exists($arg, '__toString')) {
       return (string) $arg;
     }
-    // You can't throw exceptions in the magic PHP __toString methods, see
-    // http://php.net/manual/en/language.oop5.magic.php#object.tostring so
-    // we also support a toString method.
-    elseif (method_exists($arg, 'toString')) {
-      return $arg->toString();
-    }
     else {
       throw new Exception(t('Object of type "@class" cannot be printed.', array('@class' => get_class($arg))));
     }
@@ -244,12 +237,6 @@ function twig_drupal_escape_filter(\Twig_Environment $env, $string, $strategy =
     if (method_exists($string, '__toString')) {
       $return = (string) $string;
     }
-    // You can't throw exceptions in the magic PHP __toString methods, see
-    // http://php.net/manual/en/language.oop5.magic.php#object.tostring so
-    // we also support a toString method.
-    elseif (method_exists($string, 'toString')) {
-      $return = $string->toString();
-    }
     else {
       throw new \Exception(t('Object of type "@class" cannot be printed.', array('@class' => get_class($string))));
     }
diff --git a/core/themes/seven/css/base/print.css b/core/themes/seven/css/base/print.css
index bb87d92..871baa1 100644
--- a/core/themes/seven/css/base/print.css
+++ b/core/themes/seven/css/base/print.css
@@ -45,6 +45,9 @@
   .button, .button--primary {
     background: none !important;
   }
+  #toolbar-administration {
+    display: none !important;
+  }
   .messages {
     border-width: 1px;
     border-left-color: #999;
