diff --git a/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php b/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
index d82c8cf..4574871 100644
--- a/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
+++ b/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
@@ -672,7 +672,6 @@ public function save(EntityInterface $entity) {
         $this->resetCache(array($entity->id()));
         $entity->setNewRevision(FALSE);
         $entity->postSave($this, TRUE);
-        $this->invokeFieldMethod('update', $entity);
         $this->saveFieldItems($entity, TRUE);
         $this->invokeHook('update', $entity);
         if ($this->dataTable) {
@@ -701,7 +700,6 @@ public function save(EntityInterface $entity) {
 
         $entity->enforceIsNew(FALSE);
         $entity->postSave($this, FALSE);
-        $this->invokeFieldMethod('insert', $entity);
         $this->saveFieldItems($entity, FALSE);
         $this->invokeHook('insert', $entity);
       }
diff --git a/core/lib/Drupal/Core/Field/FieldItemBase.php b/core/lib/Drupal/Core/Field/FieldItemBase.php
index 147de5f..7115cfd 100644
--- a/core/lib/Drupal/Core/Field/FieldItemBase.php
+++ b/core/lib/Drupal/Core/Field/FieldItemBase.php
@@ -194,16 +194,6 @@ public function preSave() { }
   /**
    * {@inheritdoc}
    */
-  public function insert() { }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function update() { }
-
-  /**
-   * {@inheritdoc}
-   */
   public function delete() { }
 
   /**
diff --git a/core/lib/Drupal/Core/Field/FieldItemInterface.php b/core/lib/Drupal/Core/Field/FieldItemInterface.php
index 5524cb4..fc7c4da 100644
--- a/core/lib/Drupal/Core/Field/FieldItemInterface.php
+++ b/core/lib/Drupal/Core/Field/FieldItemInterface.php
@@ -104,22 +104,6 @@ public function __unset($property_name);
   public function preSave();
 
   /**
-   * Defines custom insert behavior for field values.
-   *
-   * This method is called after the save() method, and before values are
-   * written into storage.
-   */
-  public function insert();
-
-  /**
-   * Defines custom update behavior for field values.
-   *
-   * This method is called after the save() method, and before values are
-   * written into storage.
-   */
-  public function update();
-
-  /**
    * Defines custom delete behavior for field values.
    *
    * This method is called during the process of deleting an entity, just before
diff --git a/core/lib/Drupal/Core/Field/FieldItemList.php b/core/lib/Drupal/Core/Field/FieldItemList.php
index 1af3254..52b56fc 100644
--- a/core/lib/Drupal/Core/Field/FieldItemList.php
+++ b/core/lib/Drupal/Core/Field/FieldItemList.php
@@ -246,20 +246,6 @@ public function preSave() {
   /**
    * {@inheritdoc}
    */
-  public function insert() {
-    $this->delegateMethod('insert');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function update() {
-    $this->delegateMethod('update');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function delete() {
     $this->delegateMethod('delete');
   }
diff --git a/core/lib/Drupal/Core/Field/FieldItemListInterface.php b/core/lib/Drupal/Core/Field/FieldItemListInterface.php
index a5ae2ce..54d9022 100644
--- a/core/lib/Drupal/Core/Field/FieldItemListInterface.php
+++ b/core/lib/Drupal/Core/Field/FieldItemListInterface.php
@@ -134,22 +134,6 @@ public function getPropertyDefinitions();
   public function preSave();
 
   /**
-   * Defines custom insert behavior for field values.
-   *
-   * This method is called after the save() method, and before values are
-   * written into storage.
-   */
-  public function insert();
-
-  /**
-   * Defines custom update behavior for field values.
-   *
-   * This method is called after the save() method, and before values are
-   * written into storage.
-   */
-  public function update();
-
-  /**
    * Defines custom delete behavior for field values.
    *
    * This method is called during the process of deleting an entity, just before
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..0b2d524 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LegacyConfigFieldItemList.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LegacyConfigFieldItemList.php
@@ -70,20 +70,6 @@ public function preSave() {
   /**
    * {@inheritdoc}
    */
-  public function insert() {
-    $this->legacyCallback('insert');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function update() {
-    $this->legacyCallback('update');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function delete() {
     $this->legacyCallback('delete');
   }
diff --git a/core/modules/file/lib/Drupal/file/Plugin/Field/FieldType/FileFieldItemList.php b/core/modules/file/lib/Drupal/file/Plugin/Field/FieldType/FileFieldItemList.php
index 2b750b0..b1cacfb 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/Field/FieldType/FileFieldItemList.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/Field/FieldType/FileFieldItemList.php
@@ -22,55 +22,50 @@ public function defaultValuesForm(array &$form, array &$form_state) { }
   /**
    * {@inheritdoc}
    */
-  public function insert() {
+  public function preSave() {
     parent::insert();
     $entity = $this->getEntity();
 
     // Add a new usage for newly uploaded files.
-    foreach ($this->targetEntities() as $file) {
-      \Drupal::service('file.usage')->add($file, 'file', $entity->entityType(), $entity->id());
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function update() {
-    parent::update();
-    $entity = $this->getEntity();
-
-    // Get current target file entities and file IDs.
-    $files = $this->targetEntities();
-    $fids = array_keys($files);
-
-    // On new revisions, all files are considered to be a new usage and no
-    // deletion of previous file usages are necessary.
-    if (!empty($entity->original) && $entity->getRevisionId() != $entity->original->getRevisionId()) {
-      foreach ($files as $file) {
+    if ($entity->isNew()) {
+      foreach ($this->targetEntities() as $file) {
         \Drupal::service('file.usage')->add($file, 'file', $entity->entityType(), $entity->id());
       }
-      return;
     }
+    else {
+      // Get current target file entities and file IDs.
+      $files = $this->targetEntities();
+      $fids = array_keys($files);
 
-    // Get the file IDs attached to the field before this update.
-    $field_name = $this->getFieldDefinition()->getName();
-    $original_fids = array();
-    $original_items = $entity->original->getTranslation($this->getLangcode())->$field_name;
-    foreach ($original_items as $item) {
-      $original_fids[] = $item->target_id;
-    }
+      // On new revisions, all files are considered to be a new usage and no
+      // deletion of previous file usages are necessary.
+      if (!empty($entity->original) && $entity->getRevisionId() != $entity->original->getRevisionId()) {
+        foreach ($files as $file) {
+          \Drupal::service('file.usage')->add($file, 'file', $entity->entityType(), $entity->id());
+        }
+        return;
+      }
 
-    // Decrement file usage by 1 for files that were removed from the field.
-    $removed_fids = array_filter(array_diff($original_fids, $fids));
-    $removed_files = \Drupal::entityManager()->getStorageController('file')->loadMultiple($removed_fids);
-    foreach ($removed_files as $file) {
-      \Drupal::service('file.usage')->delete($file, 'file', $entity->entityType(), $entity->id());
-    }
+      // Get the file IDs attached to the field before this update.
+      $field_name = $this->getFieldDefinition()->getName();
+      $original_fids = array();
+      $original_items = $entity->original->getTranslation($this->getLangcode())->$field_name;
+      foreach ($original_items as $item) {
+        $original_fids[] = $item->target_id;
+      }
 
-    // Add new usage entries for newly added files.
-    foreach ($files as $fid => $file) {
-      if (!in_array($fid, $original_fids)) {
-        \Drupal::service('file.usage')->add($file, 'file', $entity->entityType(), $entity->id());
+      // Decrement file usage by 1 for files that were removed from the field.
+      $removed_fids = array_filter(array_diff($original_fids, $fids));
+      $removed_files = \Drupal::entityManager()->getStorageController('file')->loadMultiple($removed_fids);
+      foreach ($removed_files as $file) {
+        \Drupal::service('file.usage')->delete($file, 'file', $entity->entityType(), $entity->id());
+      }
+
+      // Add new usage entries for newly added files.
+      foreach ($files as $fid => $file) {
+        if (!in_array($fid, $original_fids)) {
+          \Drupal::service('file.usage')->add($file, 'file', $entity->entityType(), $entity->id());
+        }
       }
     }
   }
