docs: def normalize_keys(suspect, snake_case=True):
      """
      take a dict and turn all of its type string keys into snake_case
      """
      if not isinstance(suspect, dict):
          raise TypeError('you must pass a dict.')
  
      for key in list(suspect):
          if not isinstance(key, six.string_types):
              continue
  
          if snake_case:
              s1 = first_cap_re.sub(r'\1_\2', key)
              new_key = all_cap_re.sub(r'\1_\2', s1).lower()  # .replace('-', '_')
          else:
              new_key = key.lower()
  
          value = suspect.pop(key)
          if isinstance(value, dict):
              suspect[new_key] = normalize_keys(value, snake_case)
          elif isinstance(value, list):
              for i in range(0, len(value)):
                  if isinstance(value[i], dict):
                      normalize_keys(value[i], snake_case)
  
              suspect[new_key] = value
          else:
              suspect[new_key] = value
  
      return suspect