public void openProgram(Program prog, String nmover, String archover, String compover,
			String repo, String path) throws LSHException {
		program = prog;

		if (nmover == null) {
			nmover = program.getDomainFile().getName();
		}
		if (archover == null) {
			archover = program.getLanguageID().getIdAsString();
		}
		if (compover == null) {
			compover = program.getCompilerSpec().getCompilerSpecID().getIdAsString();
		}

		String md5string = prog.getExecutableMD5();
		if ((md5string == null) || (md5string.length() < 10)) {
			md5string = generateMetadataMD5(nmover, compover, archover);
		}
		Date progDate = fillinDate();
		manager = new DescriptionManager();
		exerec = manager.newExecutableRecord(md5string, nmover, compover, archover, progDate, repo,
			path, null);
		singletask = null;		// Throw out any old decompiler process
		fmanage = program.getFunctionManager();
		fillinExecutableCategories();
	}
Prepare to collect signatures for a new program, essentially by starting up a new decompiler process
and creating an ExecutableRecord
@param prog is the program to prepare for
@param nmover if not null, overrides the "name" of the executable
@param archover if not null, overrides the "architecture" of the executable
@param compover if not null, overrides the "compiler" used to build the executable
@param repo the repository containing the executable
@param path the path (within the repo) where the executable can be found
@throws LSHException if a new executable record cannot be created
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/GenSignatures.java