@classmethod<EOL><INDENT>def _build_parser(<EOL>cls,<EOL>dictionary,<EOL>parser,<EOL>section_name,<EOL>delimiter=DEFAULT_DELIMITER,<EOL>empty_sections=False,<EOL>):<DEDENT>
for (key, value) in dictionary.items():<EOL><INDENT>if isinstance(value, dict):<EOL><INDENT>nested_section = delimiter.join([section_name, key])<EOL>is_empty = all(isinstance(_, dict) for _ in value.values())<EOL>if not is_empty or empty_sections:<EOL><INDENT>parser.add_section(nested_section)<EOL><DEDENT>cls._build_parser(value, parser, nested_section, delimiter=delimiter)<EOL><DEDENT>elif isinstance(value, (list, tuple, set, frozenset)):<EOL><INDENT>if any(isinstance(_, dict) for _ in value):<EOL><INDENT>raise ValueError(<EOL>f"<STR_LIT>"<EOL>f"<STR_LIT>"<EOL>)<EOL><DEDENT>parser.set(<EOL>section_name, key, "<STR_LIT:\n>".join(cls._encode_var(_) for _ in value)<EOL>)<EOL><DEDENT>else:<EOL><INDENT>parser.set(section_name, key, cls._encode_var(value))<EOL><DEDENT><DEDENT>return parser<EOL>
Populates a parser instance with the content of a dictionary.

        :param dict dictionary: The dictionary to use for populating the parser instance
        :param configparser.ConfigParser parser: The parser instance
        :param str section_name: The current section name to add the dictionary keys to
        :param str delimiter: The nested dictionary delimiter character,
            defaults to ":", optional
        :param bool empty_sections: Flag to allow the representation of empty sections
            to exist, defaults to False, optional
        :return: The populated parser
        :rtype: configparser.ConfigParser