public FidPopulateResult createNewLibraryFromPrograms(FidDB fidDb, String libraryFamilyName,
			String libraryVersion, String libraryVariant, List<DomainFile> programDomainFiles,
			Predicate<Pair<Function, FidHashQuad>> functionFilter, LanguageID languageId,
			List<LibraryRecord> linkLibraries, List<String> commonSymbols, TaskMonitor monitor)
			throws MemoryAccessException, VersionException, CancelledException,
			IllegalStateException, IOException {
		FidServiceLibraryIngest ingest = new FidServiceLibraryIngest(fidDb, this, libraryFamilyName,
			libraryVersion, libraryVariant, programDomainFiles, functionFilter, languageId,
			linkLibraries, monitor);
		ingest.markCommonChildReferences(commonSymbols);
		return ingest.create();
	}
Extracts function hashes from a list of programs (domain files) and
puts them into the scratch library.
@param fidDb the database to populate
@param libraryFamilyName the library family name
@param libraryVersion the library version
@param libraryVariant the library variant
@param programDomainFiles the domain files to use when populating the library
@param functionFilter a filter to possibly reject functions from the library
@param languageId the ghidra language id to filter on, or null
@param linkLibraries libraries to search for (internally) unresolved symbols
@param commonSymbols is a list of symbols for which relationships are not generated
@param monitor a task monitor
@throws MemoryAccessException if bytes are unavailable for a function body
@throws VersionException if any program cannot be opened without an upgrade
@throws CancelledException if the user cancels
@throws IOException if something goes wrong reading bytes in the domain file
Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/service/FidService.java