docs: def _get_changes(cls, diff_dict):
          '''
          Returns a list of string message with the differences in a diff dict.
  
          Each inner difference is tabulated two space deeper
          '''
          changes_strings = []
          for p in sorted(diff_dict.keys()):
              if sorted(diff_dict[p].keys()) == ['new', 'old']:
                  # Some string formatting
                  old_value = diff_dict[p]['old']
                  if diff_dict[p]['old'] == cls.NONE_VALUE:
                      old_value = 'nothing'
                  elif isinstance(diff_dict[p]['old'], six.string_types):
                      old_value = '\'{0}\''.format(diff_dict[p]['old'])
                  elif isinstance(diff_dict[p]['old'], list):
                      old_value = '\'{0}\''.format(
                          ', '.join(diff_dict[p]['old']))
                  new_value = diff_dict[p]['new']
                  if diff_dict[p]['new'] == cls.NONE_VALUE:
                      new_value = 'nothing'
                  elif isinstance(diff_dict[p]['new'], six.string_types):
                      new_value = '\'{0}\''.format(diff_dict[p]['new'])
                  elif isinstance(diff_dict[p]['new'], list):
                      new_value = '\'{0}\''.format(', '.join(diff_dict[p]['new']))
                  changes_strings.append('{0} from {1} to {2}'.format(
                      p, old_value, new_value))
              else:
                  sub_changes = cls._get_changes(diff_dict[p])
                  if sub_changes:
                      changes_strings.append('{0}:'.format(p))
                      changes_strings.extend(['  {0}'.format(c)
                                             for c in sub_changes])
          return changes_strings