private void populateLibrary(DomainFolder folder) {
		ArrayList<DomainFile> programs = new ArrayList<>();
		try {
			findPrograms(programs, folder);

			FidPopulateResult result = service.createNewLibraryFromPrograms(fidDb,
				currentLibraryName, currentLibraryVersion, currentLibraryVariant, programs, null,
				languageID, null, commonSymbols, TaskMonitor.DUMMY);
			reporter.report(result);
		}
		catch (CancelledException e) {
			isCancelled = true;
		}
		catch (MemoryAccessException e) {
			Msg.showError(this, null, "Unexpected memory access exception",
				"Please notify the Ghidra team:", e);
		}
		catch (VersionException e) {
			Msg.showError(this, null, "Version Exception",
				"One of the programs in your domain folder cannot be upgraded: " + e.getMessage());
		}
		catch (IllegalStateException e) {
			Msg.showError(this, null, "Illegal State Exception",
				"Unknown error: " + e.getMessage());
		}
		catch (IOException e) {
			Msg.showError(this, null, "FidDb IOException", "Please notify the Ghidra team:", e);
		}
	}
Recursively finds all domain objects that are program files under a domain folder.
@param programs the "return" value; found programs are placed in this collection
@param myFolder the domain folder to search
@throws CancelledException if the user cancels
Ghidra/Features/FunctionID/ghidra_scripts/CreateMultipleLibraries.java