private int recoverAttributes(Function func) {
		int flags = 0;
		BookmarkManager bookmarkManager = program.getBookmarkManager();
		Bookmark[] bookmarks = bookmarkManager.getBookmarks(func.getEntryPoint());
		for (Bookmark bookmark : bookmarks) {
			Integer val = attributes.get(bookmark.getCategory());
			if (val != null) {
				flags |= val.intValue();
			}
		}
		Set<FunctionTag> tags = func.getTags();
		for (FunctionTag tag : tags) {
			Integer val = attributes.get(tag.getName());
			if (val != null) {
				flags |= val.intValue();
			}
		}
		return flags;
	}
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