docs: def _build_dict(
          cls, parser_dict, delimiter=DEFAULT_DELIMITER, dict_type=collections.OrderedDict
      ):
          """ Builds a dictionary of ``dict_type`` given the ``parser._sections`` dict.
  
          :param dict parser_dict: The ``parser._sections`` mapping
          :param str delimiter: The delimiter for nested dictionaries,
              defaults to ":", optional
          :param class dict_type: The dictionary type to use for building the dict,
              defaults to :class:`collections.OrderedDict`, optional
          :return: The resulting dictionary
          :rtype: dict
          """
  
          result = dict_type()
          for (key, value) in parser_dict.items():
              if isinstance(value, dict):
                  nestings = key.split(delimiter)
  
                  # build nested dictionaries if they don't exist (up to 2nd to last key)
                  base_dict = result
                  for nested_key in nestings[:-1]:
                      if nested_key not in base_dict:
                          base_dict[nested_key] = dict_type()
                      base_dict = base_dict[nested_key]
  
                  base_dict[nestings[-1]] = cls._build_dict(
                      parser_dict.get(key), delimiter=delimiter, dict_type=dict_type
                  )
              else:
                  if "\n" in value:
                      result[key] = [
                          cls._decode_var(_) for _ in value.lstrip("\n").split("\n")
                      ]
                  else:
                      result[key] = cls._decode_var(value)
          return result