Hmm, does this make more sense?

```
changed_metadata_keys = {}

# if the metadata object has been reassigned,
# i.e. (metadata = {key => val})
if @unsaved_values.include?(:metadata)
   changed_metadata_keys.update(@values[:metadata])
   # unset keys from previous request
   changed_metadata_keys.update(unset_metadata_keys(changed_metadata_keys))
end

# if we're updating keys individually,
# i.e. (metadata[key] = val)
changed_metadata_keys.update(individually_updated_metadata_keys())

changed_metadata_keys
```