def METHOD_NAME(self, file_handle: io.FileIO, virtual_file_path: dict, analyses: dict[str, dict]) -> dict:
    start_time = time.time()
    result = self.analyze(file_handle, virtual_file_path, analyses)
    summary = None
    tags = []
    if result is not None:
        summary = self.summarize(result)
        tags = self.get_tags(result, summary)
    # The dictionary as defined in the docs for FileObject.analyses_tags
    # Misses the root uid, which must be added by the scheduler
    tags_dict = {}
    for tag in tags:
        tag_dict = tag.dict()
        name = tag_dict.pop('name')
        tags_dict.update({name: tag_dict})
    # FIXME update generic_view/general_information.html when all plugins use the new this class
    return {
        'analysis_date': start_time,
        'plugin_version': str(self.metadata.version),
        'system_version': self.metadata.system_version,
        'summary': summary,
        'tags': tags_dict,
        'result': result.dict() if result else None,
    }