def find_multifile_object_children(self, parent_location, no_errors: bool = False) -> Dict[str, str]:
<EOL>if not isdir(parent_location):<EOL><INDENT>if no_errors:<EOL><INDENT>return dict()<EOL><DEDENT>else:<EOL><INDENT>raise ValueError('<STR_LIT>' + parent_location + '<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT><DEDENT>else:<EOL><INDENT>all_subfolders = [dir_ for dir_ in listdir(parent_location) if isdir(join(parent_location, dir_))]<EOL>items = {item_name: join(parent_location, item_name) for item_name in all_subfolders}<EOL>items.update({<EOL>item_name: join(parent_location, item_name)<EOL>for item_name in [file_name[<NUM_LIT:0>:file_name.rindex(EXT_SEPARATOR)]<EOL>for file_name in listdir(parent_location)<EOL>if isfile(join(parent_location, file_name))<EOL>and EXT_SEPARATOR in file_name]<EOL>})<EOL><DEDENT>return items<EOL>
Implementation of the parent abstract method.

In this mode, root_path should be a valid folder, and each item is a subfolder (multifile) or a file
(singlefile):

    location/
    |-singlefile_sub_item1.<ext>
    |-singlefile_sub_item2.<ext>
    |-multifile_sub_item3/
      |- ...

:param parent_location: the absolute file prefix of the parent item. it may be a folder (non-flat mode)
or a folder + a file name prefix (flat mode)
:param no_errors: a boolean used in internal recursive calls in order to catch errors. Should not be changed by
users.
:return: a dictionary of {item_name : item_prefix}