@classmethod<EOL><INDENT>def _build_dict(<EOL>cls, parser_dict, delimiter=DEFAULT_DELIMITER, dict_type=collections.OrderedDict<EOL>):<DEDENT>
result = dict_type()<EOL>for (key, value) in parser_dict.items():<EOL><INDENT>if isinstance(value, dict):<EOL><INDENT>nestings = key.split(delimiter)<EOL>base_dict = result<EOL>for nested_key in nestings[:-<NUM_LIT:1>]:<EOL><INDENT>if nested_key not in base_dict:<EOL><INDENT>base_dict[nested_key] = dict_type()<EOL><DEDENT>base_dict = base_dict[nested_key]<EOL><DEDENT>base_dict[nestings[-<NUM_LIT:1>]] = cls._build_dict(<EOL>parser_dict.get(key), delimiter=delimiter, dict_type=dict_type<EOL>)<EOL><DEDENT>else:<EOL><INDENT>if "<STR_LIT:\n>" in value:<EOL><INDENT>result[key] = [<EOL>cls._decode_var(_) for _ in value.lstrip("<STR_LIT:\n>").split("<STR_LIT:\n>")<EOL>]<EOL><DEDENT>else:<EOL><INDENT>result[key] = cls._decode_var(value)<EOL><DEDENT><DEDENT><DEDENT>return result<EOL>
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