async def METHOD_NAME(request: KotlincPluginsRequest) -> KotlincPlugins:
    # Fetch all the artifacts
    coarsened_targets = await Get(
        CoarsenedTargets, Addresses(target.address for target in request.artifacts)
    )
    fallible_artifacts = await MultiGet(
        Get(
            FallibleClasspathEntry,
            CoursierFetchRequest(ct, resolve=request.resolve),
        )
        for ct in coarsened_targets
    )
    artifacts = FallibleClasspathEntry.if_all_succeeded(fallible_artifacts)
    if artifacts is None:
        failed = [i for i in fallible_artifacts if i.exit_code != 0]
        raise Exception(f"Fetching local kotlinc plugins failed: {failed}")
    entries = list(ClasspathEntry.closure(artifacts))
    merged_classpath_digest = await Get(Digest, MergeDigests(entry.digest for entry in entries))
    merged = ClasspathEntry.merge(merged_classpath_digest, entries)
    ids = tuple(_plugin_id(target) for target in request.plugins)
    plugin_args = FrozenDict(
        {
            _plugin_id(plugin): tuple(plugin[KotlincPluginArgsField].value or [])
            for plugin in request.plugins
        }
    )
    return KotlincPlugins(ids=ids, classpath=merged, plugin_args=plugin_args)