docs: def _get_changes_from_diff_dict(diff_dict):
      '''
      Returns a list of string message of the differences in a diff dict.
  
      Each inner message is tabulated one tab deeper
      '''
      changes_strings = []
      for p in diff_dict.keys():
          if not isinstance(diff_dict[p], dict):
              raise ValueError('Unexpected diff difct \'{0}\''.format(diff_dict))
          if sorted(diff_dict[p].keys()) == ['val1', 'val2']:
              # Some string formatting
              from_str = diff_dict[p]['val1']
              if isinstance(diff_dict[p]['val1'], six.string_types):
                  from_str = '\'{0}\''.format(diff_dict[p]['val1'])
              elif isinstance(diff_dict[p]['val1'], list):
                  from_str = '\'{0}\''.format(', '.join(diff_dict[p]['val1']))
              to_str = diff_dict[p]['val2']
              if isinstance(diff_dict[p]['val2'], six.string_types):
                  to_str = '\'{0}\''.format(diff_dict[p]['val2'])
              elif isinstance(diff_dict[p]['val2'], list):
                  to_str = '\'{0}\''.format(', '.join(diff_dict[p]['val2']))
              changes_strings.append('{0} from {1} to {2}'.format(
                  p, from_str, to_str))
          else:
              sub_changes = _get_changes_from_diff_dict(diff_dict[p])
              if sub_changes:
                  changes_strings.append('{0}:'.format(p))
                  changes_strings.extend(['\t{0}'.format(c)
                                         for c in sub_changes])
      return changes_strings