def METHOD_NAME(
    self, service, version, language, config_path=None, artman_output_name=None
):
    # map the language to the artman argument and subdir of genfiles
    GENERATE_FLAG_LANGUAGE = {
        "python": ("python_gapic", "python"),
        "nodejs": ("nodejs_gapic", "js"),
        "ruby": ("ruby_gapic", "ruby"),
        "php": ("php_gapic", "php"),
        "java": ("java_discogapic", "java"),
    }
    if language not in GENERATE_FLAG_LANGUAGE:
        raise ValueError("provided language unsupported")
    gapic_language_arg, gen_language = GENERATE_FLAG_LANGUAGE[language]
    if self.discovery_artifact_manager is None:
        raise RuntimeError(
            f"Unable to generate {config_path}, the googleapis repository"
            "is unavailable."
        )
    # Run the code generator.
    # $ artman --config path/to/artman_api.yaml generate python_gapic
    if config_path is None:
        config_path = (
            Path("gapic/google") / service / f"artman_{service}_{version}.yaml"
        )
    elif Path(config_path).is_absolute():
        config_path = Path(config_path).relative_to("/")
    else:
        config_path = Path("gapic/google") / service / Path(config_path)
    if not (self.discovery_artifact_manager / config_path).exists():
        raise FileNotFoundError(
            f"Unable to find configuration yaml file: {config_path}."
        )
    logger.debug(f"Running generator for {config_path}.")
    output_root = artman.Artman().run(
        f"googleapis/artman:{artman.ARTMAN_VERSION}",
        self.discovery_artifact_manager,
        config_path,
        gapic_language_arg,
    )
    # Expect the output to be in the artman-genfiles directory.
    # example: /artman-genfiles/python/speech-v1
    if artman_output_name is None:
        artman_output_name = f"{service}-{version}"
    genfiles = output_root / gen_language / artman_output_name
    if not genfiles.exists():
        raise FileNotFoundError(
            f"Unable to find generated output of artman: {genfiles}."
        )
    logger.success(f"Generated code into {genfiles}.")
    _tracked_paths.add(genfiles)
    return genfiles