<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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