private void fillinExecutableCategories() {
		if (categories == null) {
			return;
		}
		List<CategoryRecord> catrecs = new ArrayList<CategoryRecord>();
		Options progoptions = program.getOptions(Program.PROGRAM_INFO);
		for (String cat : categories) {	// Search for each of the categories we want to record
			String curproperty = cat;
			int count = 0;
			while (progoptions.contains(curproperty)) {
				Object optionobject = progoptions.getObject(curproperty, null);
				if (optionobject instanceof String) {
					CategoryRecord rec = new CategoryRecord(cat, (String) optionobject);
					catrecs.add(rec);
				}
				else {
					break;
				}
				count += 1;
				curproperty = cat + '_' + Integer.toString(count);
			}
		}
		if (!catrecs.isEmpty()) {
			manager.setExeCategories(exerec, catrecs);
		}
	}
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