code: def update_with_diff(self, identifier, new_instance):
          
          with self.flushing():
              instance = self.retrieve(identifier)
              before = Version(instance)
              self.merge(instance, new_instance)
              instance.updated_at = instance.new_timestamp()
              after = Version(instance)
          return instance, before - after
docs: Update an existing model with a new one.
  
          :raises `ModelNotFoundError` if there is no existing model