def METHOD_NAME(
    self, file_paths: list[Path], extraction_dir: Path, parent: FileObject
) -> list[FileObject]:
    extracted_files = {}
    for path in file_paths:
        if file_is_empty(path):
            continue
        current_file = FileObject(file_path=str(path))
        current_virtual_path = get_relative_object_path(path, extraction_dir)
        current_file.temporary_data['parent_fo_type'] = get_file_type_from_path(parent.file_path)['mime']
        if current_file.uid not in extracted_files:
            # the same file can be contained multiple times in one archive -> only the VFP needs an update
            self.unpacking_locks.set_unpacking_lock(current_file.uid)
            self.file_storage_system.store_file(current_file)
            current_file.parent_firmware_uids.add(parent.root_uid)
            extracted_files[current_file.uid] = current_file
        extracted_files[current_file.uid].virtual_file_path.setdefault(parent.uid, []).append(current_virtual_path)
    extracted_files.pop(parent.uid, None)  # the same file should not be unpacked from itself
    return list(extracted_files.values())