/**
  * {@inheritdoc}
  */
 public function postSave($update)
 {
     parent::postSave($update);
     $needs_save = FALSE;
     // If any of entity, parent type or parent id is missing then return.
     if (!$this->entity || !$this->entity->getEntityType()->get('entity_revision_parent_type_field') || !$this->entity->getEntityType()->get('entity_revision_parent_id_field')) {
         return;
     }
     $entity = $this->entity;
     $parent_entity = $this->getEntity();
     // If the entity has a parent field name get the key.
     if ($entity->getEntityType()->get('entity_revision_parent_field_name_field')) {
         $parent_field_name = $entity->getEntityType()->get('entity_revision_parent_field_name_field');
         // If parent field name has changed then set it.
         if ($entity->get($parent_field_name)->value != $this->getFieldDefinition()->getName()) {
             $entity->set($parent_field_name, $this->getFieldDefinition()->getName());
             $needs_save = TRUE;
         }
     }
     $parent_type = $entity->getEntityType()->get('entity_revision_parent_type_field');
     $parent_id = $entity->getEntityType()->get('entity_revision_parent_id_field');
     // If the parent type has changed then set it.
     if ($entity->get($parent_type)->value != $parent_entity->getEntityTypeId()) {
         $entity->set($parent_type, $parent_entity->getEntityTypeId());
         $needs_save = TRUE;
     }
     // If the parent id has changed then set it.
     if ($entity->get($parent_id)->value != $parent_entity->id()) {
         $entity->set($parent_id, $parent_entity->id());
         $needs_save = TRUE;
     }
     if ($needs_save) {
         // Check if any of the keys has changed, save it, do not create a new
         // revision.
         $entity->setNewRevision(FALSE);
         $entity->save();
     }
 }