def _get_parsing_plan_for_multifile_children(self, obj_on_fs: PersistedObject, desired_type: Type[Any],<EOL>logger: Logger) -> Dict[str, Any]:
<EOL>n_children = len(obj_on_fs.get_multifile_children())<EOL>subtypes, key_type = _extract_collection_base_type(desired_type)<EOL>if isinstance(subtypes, tuple):<EOL><INDENT>if n_children != len(subtypes):<EOL><INDENT>raise FolderAndFilesStructureError.create_for_multifile_tuple(obj_on_fs, len(subtypes),<EOL>len(obj_on_fs.get_multifile_children()))<EOL><DEDENT><DEDENT>else:<EOL><INDENT>subtypes = [subtypes] * n_children<EOL><DEDENT>children_plan = OrderedDict()<EOL>for (child_name, child_fileobject), child_typ in zip(sorted(obj_on_fs.get_multifile_children().items()),<EOL>subtypes):<EOL><INDENT>t, child_parser = self.parser_finder.build_parser_for_fileobject_and_desiredtype(child_fileobject, <EOL>child_typ, logger)<EOL>children_plan[child_name] = child_parser.create_parsing_plan(t, child_fileobject, logger,<EOL>_main_call=False)<EOL><DEDENT>return children_plan<EOL>
Simply inspects the required type to find the base type expected for items of the collection,
and relies on the ParserFinder to find the parsing plan

:param obj_on_fs:
:param desired_type:
:param logger:
:return: