@SuppressWarnings("unchecked")
	protected Map<String, ValStr<?>> generateDefaultLauncherArgs(
			Map<String, LaunchParameter<?>> params) {
		Map<String, ValStr<?>> map = new LinkedHashMap<>();
		for (Entry<String, LaunchParameter<?>> entry : params.entrySet()) {
			LaunchParameter<?> param = entry.getValue();
			map.put(entry.getKey(), ValStr.cast(Object.class, param.defaultValue()));
			if (param.name().startsWith(PREFIX_PARAM_EXTTOOL)) {
				String tool = param.name().substring(PREFIX_PARAM_EXTTOOL.length());
				List<String> names =
					program.getLanguage().getLanguageDescription().getExternalNames(tool);
				if (names != null && !names.isEmpty()) {
					String toolName = names.get(0);
					if (param.type() == String.class) {
						var paramStr = (LaunchParameter<String>) param;
						paramStr.set(map, ValStr.str(toolName));
					}
					else if (param.type() == PathIsFile.class) {
						var paramPIF = (LaunchParameter<PathIsFile>) param;
						paramPIF.set(map, new ValStr<>(PathIsFile.fromString(toolName), toolName));
					}
					else if (param.type() == PathIsDir.class) {
						var paramPID = (LaunchParameter<PathIsDir>) param;
						paramPID.set(map, new ValStr<>(PathIsDir.fromString(toolName), toolName));
					}
				}
			}
		}
		if (supportsImage() && program != null) {
			ImageParamSetter imageSetter = ImageParamSetter.get(imageParameter());
			imageSetter.setImage(map, program);
		}
		return map;
	}
Generate the default launcher arguments

<p>
It is not sufficient to simply take the defaults specified in the parameters. This must
populate the arguments necessary to launch the requested program.

@param params the parameters
@return the default arguments
Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/gui/tracermi/launcher/AbstractTraceRmiLaunchOffer.java