def note_change(self, key, value):
<EOL>if value != self._instance[key] and key not in self._previous and key not in self._added:<EOL><INDENT>self._previous[key] = self._instance[key]<EOL><DEDENT>if key in self._previous and value == self._previous[key]:<EOL><INDENT>del self._previous[key]<EOL><DEDENT>
Updates change state to reflect a change to a field. Takes care of ignoring
no-ops, reversions and takes appropriate steps if the field was previously
deleted or added to ensure the change state purely reflects the diff since
last reset.