private String extractExternalName(Symbol sym, CallRecord callRecord) {
		String fullName = sym.getName(true);
		int ind = fullName.indexOf("::");
		String libraryName;
		if (ind >= 0) {
			libraryName = fullName.substring(0, ind);			// First namespace is name of library
			String tmpnm = fullName.substring(ind + 2);	// Cut off first namespace
			if (tmpnm.isEmpty()) {
				libraryName = "unknown";
				callRecord.funcname = fullName;
			}
			else if (libraryName.isEmpty()) {
				libraryName = "unknown";
				callRecord.funcname = tmpnm;
			}
			else {
				callRecord.funcname = tmpnm;
			}
			if (libraryName.equals(Library.UNKNOWN)) {
				libraryName = "unknown";
			}
		}
		else {
			libraryName = "unknown";
			callRecord.funcname = fullName;
		}
		return libraryName;
	}
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