def _update_value_inert(self, index, value):
<EOL>field_descriptor = self._table._dev_descriptor.get_field_descriptor(index)<EOL>value = field_descriptor.deserialize(value, index)<EOL>if isinstance(value, Link):<EOL><INDENT>current_link = self._data.get(index)<EOL>if current_link is not None:<EOL><INDENT>current_link.unregister()<EOL><DEDENT><DEDENT>if isinstance(value, RecordHook):<EOL><INDENT>current_record_hook = self._data.get(index)<EOL>if current_record_hook is not None:<EOL><INDENT>current_record_hook.unregister()<EOL><DEDENT><DEDENT>if isinstance(value, ExternalFile):<EOL><INDENT>current_external_file = self._data.get(index)<EOL>if current_external_file is not None:<EOL><INDENT>current_external_file._dev_unregister()<EOL><DEDENT><DEDENT>if value in (None, NONE_RECORD_HOOK, NONE_LINK, NONE_EXTERNAL_FILE):<EOL><INDENT>self._dev_set_none_without_unregistering(index, check_not_required=False)<EOL>return<EOL><DEDENT>old_hook = None<EOL>if index == <NUM_LIT:0> and not self._table._dev_auto_pk:<EOL><INDENT>old_hook = self._data.get(<NUM_LIT:0>)  <EOL><DEDENT>self._data[index] = value<EOL>if old_hook is not None:<EOL><INDENT>self._table._dev_record_pk_was_updated(old_hook.target_value)<EOL><DEDENT>
is only called by _update_inert