getFinalName = (
	moduleGraph,
	info,
	exportName,
	moduleToInfoMap,
	runtime,
	requestShortener,
	runtimeTemplate,
	neededNamespaceObjects,
	asCall,
	callContext,
	strictHarmonyModule,
	asiSafe
) => {
	const binding = getFinalBinding(
		moduleGraph,
		info,
		exportName,
		moduleToInfoMap,
		runtime,
		requestShortener,
		runtimeTemplate,
		neededNamespaceObjects,
		asCall,
		strictHarmonyModule,
		asiSafe
	);
	{
		const { ids, comment } = binding;
		let reference;
		let isPropertyAccess;
		if ("rawName" in binding) {
			reference = `${binding.rawName}${comment || ""}${propertyAccess(ids)}`;
			isPropertyAccess = ids.length > 0;
		} else {
			const { info, name: exportId } = binding;
			const name = info.internalNames.get(exportId);
			if (!name) {
				throw new Error(
					`The export "${exportId}" in "${info.module.readableIdentifier(
						requestShortener
					)}" has no internal name (existing names: ${
						Array.from(
							info.internalNames,
							([name, symbol]) => `${name}: ${symbol}`
						).join(", ") || "none"
					})`
				);
			}
			reference = `${name}${comment || ""}${propertyAccess(ids)}`;
			isPropertyAccess = ids.length > 1;
		}
		if (isPropertyAccess && asCall && callContext === false) {
			return asiSafe
				? `(0,${reference})`
				: asiSafe === false
					? `;(0,${reference})`
					: `/*#__PURE__*/Object(${reference})`;
		}
		return reference;
	}
}
@param {ModuleGraph} moduleGraph the module graph
@param {ModuleInfo} info module info
@param {string[]} exportName exportName
@param {Map<Module, ModuleInfo>} moduleToInfoMap moduleToInfoMap
@param {RuntimeSpec} runtime for which runtime
@param {RequestShortener} requestShortener the request shortener
@param {RuntimeTemplate} runtimeTemplate the runtime template
@param {Set<ConcatenatedModuleInfo>} neededNamespaceObjects modules for which a namespace object should be generated
@param {boolean} asCall asCall
@param {boolean | undefined} callContext callContext
@param {boolean | undefined} strictHarmonyModule strictHarmonyModule
@param {boolean | undefined} asiSafe asiSafe
@returns {string} the final name