docs: def changed(self):
          '''
          Returns all keys that have been changed.
  
          If the keys are in child dictionaries they will be represented with
          . notation
          '''
          def _changed(diffs, prefix):
              keys = []
              for key in diffs.keys():
                  if not isinstance(diffs[key], dict):
                      continue
  
                  if isinstance(diffs[key], dict) and 'old' not in diffs[key]:
                      keys.extend(_changed(diffs[key],
                                         prefix='{0}{1}.'.format(prefix, key)))
                      continue
                  if self.ignore_unset_values:
                      if 'old' in diffs[key] and 'new' in diffs[key] and \
                              diffs[key]['old'] != self.NONE_VALUE and \
                              diffs[key]['new'] != self.NONE_VALUE:
                          if isinstance(diffs[key]['new'], dict):
                              keys.extend(
                                  _changed(diffs[key]['new'],
                                           prefix='{0}{1}.'.format(prefix, key)))
                          else:
                              keys.append('{0}{1}'.format(prefix, key))
                      elif isinstance(diffs[key], dict):
                          keys.extend(
                              _changed(diffs[key],
                                       prefix='{0}{1}.'.format(prefix, key)))
                  else:
                      if 'old' in diffs[key] and 'new' in diffs[key]:
                          if isinstance(diffs[key]['new'], dict):
                              keys.extend(
                                  _changed(diffs[key]['new'],
                                           prefix='{0}{1}.'.format(prefix, key)))
                          else:
                              keys.append('{0}{1}'.format(prefix, key))
                      elif isinstance(diffs[key], dict):
                          keys.extend(
                              _changed(diffs[key],
                                       prefix='{0}{1}.'.format(prefix, key)))
  
              return keys
  
          return sorted(_changed(self._diffs, prefix=''))