@Override
	protected void processLibrary(Program lib, String libName, FSRL libFsrl, ByteProvider provider,
			Queue<UnprocessedLibrary> unprocessed, int depth, LoadSpec loadSpec,
			List<Option> options, MessageLog log, TaskMonitor monitor)
			throws IOException, CancelledException {
		int size = loadSpec.getLanguageCompilerSpec().getLanguageDescription().getSize();
		ResourceFile existingExportsFile = LibraryLookupTable.getExistingExportsFile(libName, size);

		if (!shouldPerformOrdinalLookup(options)) {
			return;
		}

		// Create exports file if necessary
		if (existingExportsFile == null) {
			try {
				ResourceFile newExportsFile = LibraryLookupTable.createFile(lib, true, monitor);
				log.appendMsg("Created exports file: " + newExportsFile);
			}
			catch (IOException e) {
				log.appendMsg("Unable to create exports file for " + libFsrl);
			}
		}
		else {
			log.appendMsg("Using existing exports file: " + existingExportsFile);
			File localLibFile = getLocalFile(libFsrl);
			if (localLibFile != null &&
				!LibraryLookupTable.hasFileAndPathAndTimeStampMatch(localLibFile, size)) {
				log.appendMsg("WARNING: Existing exports file may not be an exact match.");
			}
		}
	}
An abstract {@link Loader} that provides support for programs that link to external libraries
with an ordinal mechanism.  Supports caching library lookup information to XML files.
Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractOrdinalSupportLoader.java