private CallRecord fillinProperties(Address addr) {
		CallRecord callRecord = new CallRecord();
		Function func = fmanage.getReferencedFunction(addr);
		Symbol rootSymbol = null;
		Address rootAddr = null;
		boolean hasbody = false;
		if (func == null) {							// Found no function at all
			SymbolTable symtab = program.getSymbolTable();
			rootSymbol = symtab.getPrimarySymbol(addr);		// Look for any primary symbol
		}
		else {
			if (func.isThunk()) {						// Function looks like a thunk
				func = func.getThunkedFunction(true);
			}
			rootAddr = func.getEntryPoint();
			rootSymbol = func.getSymbol();
			if (!func.isExternal()) {
				hasbody = hasBody(rootAddr);
			}
		}
		if (hasbody) {	// Internal call
			callRecord.exerec = exerec;		// Within the same executable
			callRecord.address = rootAddr.getOffset();
			callRecord.funcname = rootSymbol.getName(true);
		}
		else {	// Treat as external call
			callRecord.address = -1;		// Address not available, indicate an external call
			String libraryName;
			if (rootSymbol == null) {
				libraryName = "unknown";
				callRecord.funcname = "func_" + Long.toHexString(addr.getOffset());	// Make up a name				
			}
			else {
				libraryName = extractExternalName(rootSymbol, callRecord);
			}
			try {
				callRecord.exerec =
					manager.newExecutableLibrary(libraryName, exerec.getArchitecture(), null);
			}
			catch (LSHException e) {
				callRecord.exerec = exerec;		// If we couldn't create a library executable, use original executable
			}
		}
		return callRecord;
	}
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