diff --git a/core/lib/Drupal/Core/Config/Schema/Sequence.php b/core/lib/Drupal/Core/Config/Schema/Sequence.php
index a399583..43d3134 100644
--- a/core/lib/Drupal/Core/Config/Schema/Sequence.php
+++ b/core/lib/Drupal/Core/Config/Schema/Sequence.php
@@ -8,6 +8,7 @@
 namespace Drupal\Core\Config\Schema;
 
 use Drupal\Core\TypedData\ListInterface;
+use Drupal\Core\TypedData\TypedDataInterface;
 
 /**
  * Defines a configuration element of type Sequence.
@@ -49,4 +50,26 @@ public function onChange($delta) {
       $this->parent->onChange($this->name);
     }
   }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function first() {
+    return $this->get(0);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get($index) {
+    return $this->offsetGet($index);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function set($index, $value) {
+    $this->offsetSet($index, $value);
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php b/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php
index 8098849..9fc3283 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php
@@ -151,7 +151,7 @@ public function addField($field, $type, $langcode) {
             // column, i.e. target_id or fid.
             // Otherwise, the code executing the relationship will throw an
             // exception anyways so no need to do it here.
-            if (!$column && isset($propertyDefinitions[$relationship_specifier]) && $entity->{$field->getName()}->get('entity') instanceof EntityReference) {
+            if (!$column && isset($propertyDefinitions[$relationship_specifier]) && $entity->{$field->getName()}->first()->get('entity') instanceof EntityReference) {
               $column = current(array_keys($propertyDefinitions));
             }
             // Prepare the next index prefix.
@@ -202,7 +202,7 @@ public function addField($field, $type, $langcode) {
           $next_index_prefix = $relationship_specifier;
         }
         // Check for a valid relationship.
-        if (isset($propertyDefinitions[$relationship_specifier]) && $entity->{$specifier}->get('entity') instanceof EntityReference) {
+        if (isset($propertyDefinitions[$relationship_specifier]) && $entity->get($specifier)->first()->get('entity') instanceof EntityReference) {
           // If it is, use the entity type.
           $entity_type = $propertyDefinitions[$relationship_specifier]->getConstraint('EntityType');
           $entity_info = $entity_manager->getDefinition($entity_type);
diff --git a/core/lib/Drupal/Core/Field/FieldItemList.php b/core/lib/Drupal/Core/Field/FieldItemList.php
index 1af3254..84253b6 100644
--- a/core/lib/Drupal/Core/Field/FieldItemList.php
+++ b/core/lib/Drupal/Core/Field/FieldItemList.php
@@ -144,49 +144,42 @@ public function setValue($values, $notify = TRUE) {
    * {@inheritdoc}
    */
   public function getPropertyDefinition($name) {
-    return $this->offsetGet(0)->getPropertyDefinition($name);
+    return $this->first()->getPropertyDefinition($name);
   }
 
   /**
    * {@inheritdoc}
    */
   public function getPropertyDefinitions() {
-    return $this->offsetGet(0)->getPropertyDefinitions();
+    return $this->first()->getPropertyDefinitions();
   }
 
   /**
    * {@inheritdoc}
    */
   public function __get($property_name) {
-    return $this->offsetGet(0)->__get($property_name);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function get($property_name) {
-    return $this->offsetGet(0)->get($property_name);
+    return $this->first()->__get($property_name);
   }
 
   /**
    * {@inheritdoc}
    */
   public function __set($property_name, $value) {
-    $this->offsetGet(0)->__set($property_name, $value);
+    $this->first()->__set($property_name, $value);
   }
 
   /**
    * {@inheritdoc}
    */
   public function __isset($property_name) {
-    return $this->offsetGet(0)->__isset($property_name);
+    return $this->first()->__isset($property_name);
   }
 
   /**
    * {@inheritdoc}
    */
   public function __unset($property_name) {
-    return $this->offsetGet(0)->__unset($property_name);
+    return $this->first()->__unset($property_name);
   }
 
   /**
@@ -215,7 +208,7 @@ public function applyDefaultValue($notify = TRUE) {
     // are valid default values.
     if (!isset($value) || (is_array($value) && empty($value))) {
       // Create one field item and apply defaults.
-      $this->offsetGet(0)->applyDefaultValue(FALSE);
+      $this->first()->applyDefaultValue(FALSE);
     }
     else {
       $this->setValue($value, $notify);
diff --git a/core/lib/Drupal/Core/Field/FieldItemListInterface.php b/core/lib/Drupal/Core/Field/FieldItemListInterface.php
index a5ae2ce..f224311 100644
--- a/core/lib/Drupal/Core/Field/FieldItemListInterface.php
+++ b/core/lib/Drupal/Core/Field/FieldItemListInterface.php
@@ -77,13 +77,6 @@ public function defaultAccess($operation = 'view', AccountInterface $account = N
   public function filterEmptyValues();
 
   /**
-   * Gets a property object from the first field item.
-   *
-   * @see \Drupal\Core\Field\FieldItemInterface::get()
-   */
-  public function get($property_name);
-
-  /**
    * Magic method: Gets a property value of to the first field item.
    *
    * @see \Drupal\Core\Field\FieldItemInterface::__get()
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LegacyConfigFieldItemList.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LegacyConfigFieldItemList.php
index 2351d6c..aec1c17 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LegacyConfigFieldItemList.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LegacyConfigFieldItemList.php
@@ -49,7 +49,7 @@ public function validate() {
           // error, so assume the first column...
           $property_names = $this->getFieldDefinition()->getPropertyNames();
           $property_name = $property_names[0];
-          $violations->add(new ConstraintViolation($item_error['message'], $item_error['message'], array(), $this, $delta . '.' . $property_name, $this->offsetGet($delta)->get($property_name)->getValue(), NULL, $item_error['error']));
+          $violations->add(new ConstraintViolation($item_error['message'], $item_error['message'], array(), $this, $delta . '.' . $property_name, $this->get($delta)->$property_name, NULL, $item_error['error']));
         }
       }
     }
diff --git a/core/lib/Drupal/Core/TypedData/ListInterface.php b/core/lib/Drupal/Core/TypedData/ListInterface.php
index 53f5eac..6a83721 100644
--- a/core/lib/Drupal/Core/TypedData/ListInterface.php
+++ b/core/lib/Drupal/Core/TypedData/ListInterface.php
@@ -43,4 +43,34 @@ public function getItemDefinition();
    *   The delta of the item which is changed.
    */
   public function onChange($delta);
+
+  /**
+   * Returns the item at the specified position in this list.
+   *
+   * @param int $index
+   *   Index of the item to return.
+   *
+   * @return
+   *   The item at the specified position in this list.
+   */
+  public function get($index);
+
+  /**
+   * Replaces the item at the specified position in this list.
+   *
+   * @param int $index
+   *   Index of the item to replace.
+   * @param mixed
+   *   Item to be stored at the specified position.
+   */
+  public function set($index, $item);
+
+  /**
+   * Returns the first item in this list.
+   *
+   * @return
+   *   The first item in this list.
+   */
+  public function first();
+
 }
diff --git a/core/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php b/core/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php
index 89d2cd8..8ee50fe 100644
--- a/core/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php
+++ b/core/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php
@@ -101,10 +101,48 @@ public function getString() {
   }
 
   /**
+   * {@inheritdoc}
+   */
+  public function get($index) {
+    if (!is_numeric($index)) {
+      throw new \InvalidArgumentException('Unable to get a value with a non-numeric delta in a list.');
+    }
+    // Allow getting not yet existing items as well.
+    // @todo: Maybe add a public createItem() method in addition?
+    elseif (!isset($this->list[$index])) {
+      $this->list[$index] = $this->createItem($index);
+    }
+    return $this->list[$index];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function set($index, $item) {
+    if (is_numeric($index)) {
+      // Support setting values via typed data objects.
+      if ($item instanceof TypedDataInterface) {
+        $item = $item->getValue();
+      }
+      $this->get($index)->setValue($item);
+    }
+    else {
+      throw new \InvalidArgumentException('Unable to set a value with a non-numeric delta in a list.');
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function first() {
+    return $this->get(0);
+  }
+
+  /**
    * Implements \ArrayAccess::offsetExists().
    */
   public function offsetExists($offset) {
-    return isset($this->list) && array_key_exists($offset, $this->list) && $this->offsetGet($offset)->getValue() !== NULL;
+    return isset($this->list) && array_key_exists($offset, $this->list) && $this->get($offset)->getValue() !== NULL;
   }
 
   /**
@@ -117,18 +155,10 @@ public function offsetUnset($offset) {
   }
 
   /**
-   * Implements \ArrayAccess::offsetGet().
+   * {@inheritdoc}
    */
   public function offsetGet($offset) {
-    if (!is_numeric($offset)) {
-      throw new \InvalidArgumentException('Unable to get a value with a non-numeric delta in a list.');
-    }
-    // Allow getting not yet existing items as well.
-    // @todo: Maybe add a public createItem() method in addition?
-    elseif (!isset($this->list[$offset])) {
-      $this->list[$offset] = $this->createItem($offset);
-    }
-    return $this->list[$offset];
+    return $this->get($offset);
   }
 
   /**
@@ -155,16 +185,7 @@ public function offsetSet($offset, $value) {
       // The [] operator has been used so point at a new entry.
       $offset = $this->list ? max(array_keys($this->list)) + 1 : 0;
     }
-    if (is_numeric($offset)) {
-      // Support setting values via typed data objects.
-      if ($value instanceof TypedDataInterface) {
-        $value = $value->getValue();
-      }
-      $this->offsetGet($offset)->setValue($value);
-    }
-    else {
-      throw new \InvalidArgumentException('Unable to set a value with a non-numeric delta in a list.');
-    }
+    $this->set($offset, $value);
   }
 
   /**
diff --git a/core/modules/comment/lib/Drupal/comment/CommentFormController.php b/core/modules/comment/lib/Drupal/comment/CommentFormController.php
index d0066a8..657a7fe 100644
--- a/core/modules/comment/lib/Drupal/comment/CommentFormController.php
+++ b/core/modules/comment/lib/Drupal/comment/CommentFormController.php
@@ -218,7 +218,7 @@ public function form(array $form, array &$form_state) {
     // Add internal comment properties.
     $original = $comment->getUntranslated();
     foreach (array('cid', 'pid', 'entity_id', 'entity_type', 'field_id', 'uid', 'langcode') as $key) {
-      $key_name = key($comment->$key->offsetGet(0)->getPropertyDefinitions());
+      $key_name = key($comment->$key->first()->getPropertyDefinitions());
       $form[$key] = array('#type' => 'value', '#value' => $original->$key->{$key_name});
     }
 
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSyncImageTest.php b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSyncImageTest.php
index f974837..89bc43e 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSyncImageTest.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSyncImageTest.php
@@ -159,7 +159,7 @@ function testImageFieldSync() {
         'alt' => $default_langcode . '_' . $fid . '_' . $this->randomName(),
         'title' => $default_langcode . '_' . $fid . '_' . $this->randomName(),
       );
-      $entity->{$this->fieldName}->offsetGet($delta)->setValue($item);
+      $entity->{$this->fieldName}->get($delta)->setValue($item);
 
       // Store the generated values keying them by fid for easier lookup.
       $values[$default_langcode][$fid] = $item;
@@ -185,7 +185,7 @@ function testImageFieldSync() {
         'alt' => $langcode . '_' . $fid . '_' . $this->randomName(),
         'title' => $langcode . '_' . $fid . '_' . $this->randomName(),
       );
-      $translation->{$this->fieldName}->offsetGet($delta)->setValue($item);
+      $translation->{$this->fieldName}->get($delta)->setValue($item);
 
       // Again store the generated values keying them by fid for easier lookup.
       $values[$langcode][$fid] = $item;
@@ -205,7 +205,7 @@ function testImageFieldSync() {
     $fids = array();
     foreach ($entity->{$this->fieldName} as $delta => $item) {
       $value = $values[$default_langcode][$item->target_id];
-      $source_item = $translation->{$this->fieldName}->offsetGet($delta);
+      $source_item = $translation->{$this->fieldName}->get($delta);
       $assert = $item->target_id == $source_item->target_id && $item->alt == $value['alt'] && $item->title == $value['title'];
       $this->assertTrue($assert, format_string('Field item @fid has been successfully synchronized.', array('@fid' => $item->target_id)));
       $fids[$item->target_id] = TRUE;
@@ -237,7 +237,7 @@ function testImageFieldSync() {
       // values instead of the target one.
       $fid_langcode = $item->target_id != $removed_fid ? $default_langcode : $langcode;
       $value = $values[$fid_langcode][$item->target_id];
-      $source_item = $translation->{$this->fieldName}->offsetGet($delta);
+      $source_item = $translation->{$this->fieldName}->get($delta);
       $assert = $item->target_id == $source_item->target_id && $item->alt == $value['alt'] && $item->title == $value['title'];
       $this->assertTrue($assert, format_string('Field item @fid has been successfully synchronized.', array('@fid' => $item->target_id)));
     }
diff --git a/core/modules/datetime/lib/Drupal/datetime/Tests/DateTimeItemTest.php b/core/modules/datetime/lib/Drupal/datetime/Tests/DateTimeItemTest.php
index 8ac86fc..c3a687a 100644
--- a/core/modules/datetime/lib/Drupal/datetime/Tests/DateTimeItemTest.php
+++ b/core/modules/datetime/lib/Drupal/datetime/Tests/DateTimeItemTest.php
@@ -90,7 +90,7 @@ public function testSetValue() {
     // Test DateTimeItem::setValue() using string.
     $entity = entity_create('entity_test', array());
     $value = '2014-01-01T20:00:00Z';
-    $entity->get('field_datetime')->offsetGet(0)->setValue($value);
+    $entity->get('field_datetime')->set(0, $value);
     $entity->save();
     // Load the entity and ensure the field was saved correctly.
     $id = $entity->id();
@@ -100,7 +100,7 @@ public function testSetValue() {
     // Test DateTimeItem::setValue() using property array.
     $entity = entity_create('entity_test', array());
     $value = '2014-01-01T20:00:00Z';
-    $entity->get('field_datetime')->offsetGet(0)->setValue(array('value' => $value));
+    $entity->set('field_datetime', $value);
     $entity->save();
     // Load the entity and ensure the field was saved correctly.
     $id = $entity->id();
@@ -116,7 +116,7 @@ public function testSetValueProperty() {
     $entity = entity_create('entity_test', array());
     $value = '2014-01-01T20:00:00Z';
 
-    $entity->get('field_datetime')->offsetGet(0)->get('value')->setValue($value);
+    $entity->set('field_datetime', $value);
     $entity->save();
     // Load the entity and ensure the field was saved correctly.
     $id = $entity->id();
diff --git a/core/modules/editor/lib/Drupal/editor/Tests/EditorFileUsageTest.php b/core/modules/editor/lib/Drupal/editor/Tests/EditorFileUsageTest.php
index 357d128..9342a36 100644
--- a/core/modules/editor/lib/Drupal/editor/Tests/EditorFileUsageTest.php
+++ b/core/modules/editor/lib/Drupal/editor/Tests/EditorFileUsageTest.php
@@ -90,7 +90,7 @@ public function testEditorEntityHooks() {
 
     // Test hook_entity_update(): decrement, by modifying the last revision:
     // remove the data- attribute from the body field.
-    $body = $node->get('body')->offsetGet(0)->get('value');
+    $body = $node->get('body')->first()->get('value');
     $original_value = $body->getValue();
     $new_value = str_replace('data-editor-file-uuid', 'data-editor-file-uuid-modified', $original_value);
     $body->setValue($new_value);
@@ -99,7 +99,7 @@ public function testEditorEntityHooks() {
 
     // Test hook_entity_update(): increment, by modifying the last revision:
     // readd the data- attribute to the body field.
-    $node->get('body')->offsetGet(0)->get('value')->setValue($original_value);
+    $node->get('body')->first()->get('value')->setValue($original_value);
     $node->save();
     $this->assertIdentical(array('editor' => array('node' => array(1 => '3'))), $file_usage->listUsage($image), 'The image has 3 usages.');
 
diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldValidationTest.php b/core/modules/field/lib/Drupal/field/Tests/FieldValidationTest.php
index 547beab..1a57a4c 100644
--- a/core/modules/field/lib/Drupal/field/Tests/FieldValidationTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/FieldValidationTest.php
@@ -45,7 +45,7 @@ function testCardinalityConstraint() {
     $entity = $this->entity;
 
     for ($delta = 0; $delta < $cardinality + 1; $delta++) {
-      $entity->{$this->field_name}->offsetGet($delta)->set('value', 1);
+      $entity->{$this->field_name}->get($delta)->set('value', 1);
     }
 
     // Validate the field.
@@ -78,7 +78,7 @@ function testFieldConstraints() {
         $value = -1;
         $expected_violations[$delta . '.value'][] = t('%name does not accept the value -1.', array('%name' => $this->instance->getLabel()));
       }
-      $entity->{$this->field_name}->offsetGet($delta)->set('value', $value);
+      $entity->{$this->field_name}->get($delta)->set('value', $value);
     }
 
     // Validate the field.
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldEditForm.php b/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldEditForm.php
index 2a788cb..9ddbd2d 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldEditForm.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldEditForm.php
@@ -157,7 +157,7 @@ public function buildForm(array $form, array &$form_state, FieldInstanceInterfac
     // FieldItem.
     $ids = (object) array('entity_type' => $this->instance->entity_type, 'bundle' => $this->instance->bundle, 'entity_id' => NULL);
     $entity = _field_create_entity_from_ids($ids);
-    $form['field']['settings'] += $entity->get($field->getName())->offsetGet(0)->settingsForm($form, $form_state, $field->hasData());
+    $form['field']['settings'] += $entity->get($field->getName())->first()->settingsForm($form, $form_state, $field->hasData());
 
     $form['actions'] = array('#type' => 'actions');
     $form['actions']['submit'] = array('#type' => 'submit', '#value' => $this->t('Save field settings'));
diff --git a/core/modules/hal/lib/Drupal/hal/Normalizer/FieldItemNormalizer.php b/core/modules/hal/lib/Drupal/hal/Normalizer/FieldItemNormalizer.php
index 00222cc..44e6787 100644
--- a/core/modules/hal/lib/Drupal/hal/Normalizer/FieldItemNormalizer.php
+++ b/core/modules/hal/lib/Drupal/hal/Normalizer/FieldItemNormalizer.php
@@ -120,7 +120,7 @@ protected function createTranslatedInstance(FieldItemInterface $field_item, $lan
 
     // Create a new instance at the end of the property path and return it.
     $count = $translation->isEmpty() ? 0 : $translation->count();
-    return $translation->offsetGet($count);
+    return $translation->get($count);
   }
 
 }
diff --git a/core/modules/hal/lib/Drupal/hal/Normalizer/FieldNormalizer.php b/core/modules/hal/lib/Drupal/hal/Normalizer/FieldNormalizer.php
index 73b5bb9..c2d160b 100644
--- a/core/modules/hal/lib/Drupal/hal/Normalizer/FieldNormalizer.php
+++ b/core/modules/hal/lib/Drupal/hal/Normalizer/FieldNormalizer.php
@@ -75,7 +75,7 @@ public function denormalize($data, $class, $format = NULL, array $context = arra
       $count = $field->count();
       // Get the next field item instance. The offset will serve as the field
       // item name.
-      $field_item = $field->offsetGet($count);
+      $field_item = $field->get($count);
       $field_item_class = get_class($field_item);
       // Pass in the empty field item object as the target instance.
       $context['target_instance'] = $field_item;
diff --git a/core/modules/link/lib/Drupal/link/Tests/LinkItemTest.php b/core/modules/link/lib/Drupal/link/Tests/LinkItemTest.php
index e8af116..ccc9a91 100644
--- a/core/modules/link/lib/Drupal/link/Tests/LinkItemTest.php
+++ b/core/modules/link/lib/Drupal/link/Tests/LinkItemTest.php
@@ -58,7 +58,7 @@ public function testLinkItem() {
     $class = $this->randomName();
     $entity->field_test->url = $url;
     $entity->field_test->title = $title;
-    $entity->field_test->get('attributes')->set('class', $class);
+    $entity->field_test->first()->get('attributes')->set('class', $class);
     $entity->name->value = $this->randomName();
     $entity->save();
 
@@ -79,7 +79,7 @@ public function testLinkItem() {
     $new_class = $this->randomName();
     $entity->field_test->url = $new_url;
     $entity->field_test->title = $new_title;
-    $entity->field_test->get('attributes')->set('class', $new_class);
+    $entity->field_test->first()->get('attributes')->set('class', $new_class);
     $this->assertEqual($entity->field_test->url, $new_url);
     $this->assertEqual($entity->field_test->title, $new_title);
     $this->assertEqual($entity->field_test->attributes['class'], $new_class);
diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php
index 9feaa50..1c9c6e7 100644
--- a/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php
+++ b/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php
@@ -168,7 +168,7 @@ public function setUp() {
 
     // Set URIs.
     // Image.
-    $image_file = file_load($this->article->get('field_image')->offsetGet(0)->get('target_id')->getValue());
+    $image_file = $this->article->get('field_image')->entity;
     $this->imageUri = entity_load('image_style', 'large')->buildUrl($image_file->getFileUri());
     // Term.
     $term_uri_info = $this->term->uri();
@@ -233,7 +233,7 @@ protected function doFrontPageRdfaTests() {
 
     // @todo Once the image points to the original instead of the processed
     //   image, move this to testArticleProperties().
-    $image_file = file_load($this->article->get('field_image')->offsetGet(0)->get('target_id')->getValue());
+    $image_file = $this->article->get('field_image')->entity;
     $image_uri = entity_load('image_style', 'medium')->buildUrl($image_file->getFileUri());
     $expected_value = array(
       'type' => 'uri',
@@ -337,7 +337,7 @@ protected function doTermRdfaTests() {
     // Term name.
     $expected_value = array(
       'type' => 'literal',
-      'value' => $this->term->get('name')->offsetGet(0)->get('value')->getValue(),
+      'value' => $this->term->get('name')->value,
       'lang' => 'en',
     );
     $this->assertTrue($graph->hasProperty($this->termUri, 'http://schema.org/name', $expected_value), "Term name was found (schema:name) on term page.");
@@ -363,7 +363,7 @@ protected function assertRdfaCommonNodeProperties($graph, NodeInterface $node, $
     // Title.
     $expected_value = array(
       'type' => 'literal',
-      'value' => $node->get('title')->offsetGet(0)->get('value')->getValue(),
+      'value' => $node->get('title')->value,
       'lang' => 'en',
     );
     $this->assertTrue($graph->hasProperty($uri, 'http://schema.org/name', $expected_value), "$message_prefix title was found (schema:name).");
@@ -371,7 +371,7 @@ protected function assertRdfaCommonNodeProperties($graph, NodeInterface $node, $
     // Created date.
     $expected_value = array(
       'type' => 'literal',
-      'value' => date_iso8601($node->get('created')->offsetGet(0)->get('value')->getValue()),
+      'value' => date_iso8601($node->get('created')->value),
       'lang' => 'en',
     );
     $this->assertTrue($graph->hasProperty($uri, 'http://schema.org/dateCreated', $expected_value), "$message_prefix created date was found (schema:dateCreated) in teaser.");
@@ -379,7 +379,7 @@ protected function assertRdfaCommonNodeProperties($graph, NodeInterface $node, $
     // Body.
     $expected_value = array(
       'type' => 'literal',
-      'value' => $node->get('body')->offsetGet(0)->get('value')->getValue(),
+      'value' => $node->get('body')->value,
       'lang' => 'en',
     );
     $this->assertTrue($graph->hasProperty($uri, 'http://schema.org/text', $expected_value), "$message_prefix body was found (schema:text) in teaser.");
@@ -425,7 +425,7 @@ protected function assertRdfaArticleProperties($graph, $message_prefix) {
     // Tag name.
     $expected_value = array(
       'type' => 'literal',
-      'value' => $this->term->get('name')->offsetGet(0)->get('value')->getValue(),
+      'value' => $this->term->get('name')->value,
       'lang' => 'en',
     );
     // @todo enable with https://drupal.org/node/2072791
@@ -452,7 +452,7 @@ protected function assertRdfaNodeCommentProperties($graph) {
     // Comment title.
     $expected_value = array(
       'type' => 'literal',
-      'value' => $this->articleComment->get('subject')->offsetGet(0)->get('value')->getValue(),
+      'value' => $this->articleComment->get('subject')->value,
       'lang' => 'en',
     );
     $this->assertTrue($graph->hasProperty($this->articleCommentUri, 'http://schema.org/name', $expected_value), 'Article comment title was found (schema:name).');
@@ -460,13 +460,13 @@ protected function assertRdfaNodeCommentProperties($graph) {
     // Comment created date.
     $expected_value = array(
       'type' => 'literal',
-      'value' => date_iso8601($this->articleComment->get('created')->offsetGet(0)->get('value')->getValue()),
+      'value' => date_iso8601($this->articleComment->get('created')->value),
       'lang' => 'en',
     );
     $this->assertTrue($graph->hasProperty($this->articleCommentUri, 'http://schema.org/dateCreated', $expected_value), 'Article comment created date was found (schema:dateCreated).');
 
     // Comment body.
-    $text = $this->articleComment->get('comment_body')->offsetGet(0)->get('value')->getValue();
+    $text = $this->articleComment->get('comment_body')->value;
     $expected_value = array(
       'type' => 'literal',
       // There is an extra carriage return in the when parsing comments as
@@ -490,7 +490,7 @@ protected function assertRdfaNodeCommentProperties($graph) {
     // Comment author name.
     $expected_value = array(
       'type' => 'literal',
-      'value' => $this->webUser->get('name')->offsetGet(0)->get('value')->getValue(),
+      'value' => $this->webUser->getUsername(),
     );
     $this->assertTrue($graph->hasProperty($this->commenterUri, 'http://schema.org/name', $expected_value), 'Comment author name was found (schema:name).');
   }
diff --git a/core/modules/rest/lib/Drupal/rest/Tests/NodeTest.php b/core/modules/rest/lib/Drupal/rest/Tests/NodeTest.php
index 76773df..86df206 100644
--- a/core/modules/rest/lib/Drupal/rest/Tests/NodeTest.php
+++ b/core/modules/rest/lib/Drupal/rest/Tests/NodeTest.php
@@ -81,7 +81,7 @@ public function testNodes() {
 
     // Reload the node from the DB and check if the title was correctly updated.
     $updated_node = entity_load('node', $node->id(), TRUE);
-    $this->assertEqual($updated_node->get('title')->get('value')->getValue(), $new_title);
+    $this->assertEqual($updated_node->getTitle(), $new_title);
     // Make sure that the UUID of the node has not changed.
     $this->assertEqual($node->get('uuid')->getValue(), $updated_node->get('uuid')->getValue(), 'UUID was not changed.');
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFieldTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFieldTest.php
index 1e777a6..4145c85 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFieldTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFieldTest.php
@@ -539,8 +539,8 @@ public function testEntityConstraintValidation() {
     $definition = FieldDefinition::create('entity_reference')
       ->setLabel('Test entity')
       ->setSetting('target_type', 'entity_test');
-    $reference_field_item = \Drupal::TypedData()->create($definition);
-    $reference = $reference_field_item->get('entity');
+    $reference_field = \Drupal::TypedData()->create($definition);
+    $reference = $reference_field->first()->get('entity');
     $reference->setValue($entity);
 
     // Test validation the typed data object.
@@ -565,8 +565,8 @@ public function testEntityConstraintValidation() {
         'target_type' => 'node',
         'target_bundle' => 'article',
       ));
-    $reference_field_item = \Drupal::TypedData()->create($definition);
-    $reference = $reference_field_item->get('entity');
+    $reference_field = \Drupal::TypedData()->create($definition);
+    $reference = $reference_field->first()->get('entity');
     $reference->setValue($node);
     $violations = $reference->validate();
     $this->assertEqual($violations->count(), 1);
