def _parse_multifile(self, desired_type: Type[Union[Dict, List, Set, Tuple]], obj: PersistedObject,<EOL>parsing_plan_for_children: Dict[str, ParsingPlan], logger: Logger,<EOL>options: Dict[str, Dict[str, Any]])-> Union[Dict, List, Set, Tuple]:
<EOL>lazy_parsing = False<EOL>background_parsing = False<EOL>opts = self._get_applicable_options(options)<EOL>for opt_key, opt_val in opts.items():<EOL><INDENT>if opt_key is '<STR_LIT>':<EOL><INDENT>lazy_parsing = opt_val<EOL><DEDENT>elif opt_key is '<STR_LIT>':<EOL><INDENT>background_parsing = opt_val<EOL><DEDENT>else:<EOL><INDENT>raise Exception('<STR_LIT>' + opt_key)<EOL><DEDENT><DEDENT>check_var(lazy_parsing, var_types=bool, var_name='<STR_LIT>')<EOL>check_var(background_parsing, var_types=bool, var_name='<STR_LIT>')<EOL>if lazy_parsing and background_parsing:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if lazy_parsing:<EOL><INDENT>results = LazyDictionary(sorted(list(parsing_plan_for_children.keys())),<EOL>loading_method=lambda x: parsing_plan_for_children[x].execute(logger, options))<EOL>logger.debug('<STR_LIT>'.format(<EOL>loc=obj.get_pretty_location(blank_parent_part=(not GLOBAL_CONFIG.full_paths_in_logs),<EOL>compact_file_ext=True)))<EOL><DEDENT>elif background_parsing:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>else:<EOL><INDENT>results = OrderedDict()<EOL>for child_name, child_plan in sorted(parsing_plan_for_children.items()):<EOL><INDENT>results[child_name] = child_plan.execute(logger, options)<EOL><DEDENT><DEDENT>if issubclass(desired_type, list):<EOL><INDENT>return KeySortedListFacadeForDict(results)<EOL><DEDENT>elif issubclass(desired_type, tuple):<EOL><INDENT>return KeySortedTupleFacadeForDict(results)<EOL><DEDENT>elif issubclass(desired_type, set):<EOL><INDENT>return SetFacadeForDict(results)<EOL><DEDENT>elif issubclass(desired_type, dict):<EOL><INDENT>return results<EOL><DEDENT>else:<EOL><INDENT>raise TypeError('<STR_LIT>'<EOL>'<STR_LIT>' + get_pretty_type_str(desired_type))<EOL><DEDENT>
Options may contain a section with id 'MultifileCollectionParser' containing the following options:
* lazy_parsing: if True, the method will return immediately without parsing all the contents. Instead, the
returned collection will perform the parsing the first time an item is required.
* background_parsing: if True, the method will return immediately while a thread parses all the contents in
the background. Note that users cannot set both lazy_parsing and background_parsing to True at the same time

:param desired_type:
:param obj:
:param parsing_plan_for_children:
:param logger:
:param options:
:return: