public static PowerShellScriptTraceRmiLaunchOffer create(TraceRmiLauncherServicePlugin plugin,
			Program program, File script) throws FileNotFoundException {
		ScriptAttributesParser parser = new ScriptAttributesParser() {
			@Override
			protected boolean ignoreLine(int lineNo, String line) {
				return line.isBlank();
			}

			@Override
			protected String removeDelimiter(String line) {
				String stripped = line.stripLeading();
				if (!stripped.startsWith(REM)) {
					return null;
				}
				return stripped.substring(REM_LEN);
			}
		};
		ScriptAttributes attrs = parser.parseFile(script);
		return new PowerShellScriptTraceRmiLaunchOffer(plugin, program, script,
			"PS1_FILE:" + script.getName(), attrs);
	}
Create a launch offer from the given PowerShell file.

@param plugin the launcher service plugin
@param program the current program, usually the target image. In general, this should be used
           for at least two purposes. 1) To populate the default command line. 2) To ensure
           the target image is mapped in the resulting target trace.
@param script the PowerShell file that implements this offer
@return the offer
@throws FileNotFoundException if the batch file does not exist
Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/gui/tracermi/launcher/PowerShellScriptTraceRmiLaunchOffer.java