private void applyLibrarySymbols(Program program, MessageLog log, TaskMonitor monitor)
			throws CancelledException {
		monitor.setMessage("Applying information..." + program.getName());

		// Check based on the original program name, not on the name I gave this program
		int size = program.getLanguage().getLanguageDescription().getSize();

		LibrarySymbolTable symtab = LibraryLookupTable.getSymbolTable(
			new File(program.getExecutablePath()).getName(), size, log);
		if (symtab == null) {
			// now try based on the name given to the program
			symtab = LibraryLookupTable.getSymbolTable(program.getName(), size, log);
			if (symtab == null) {
				return;
			}
		}
		if (!isVersionMatch(program, symtab, log)) {
			return;
		}

		SymbolIterator iter =
			program.getSymbolTable().getSymbolIterator(SymbolUtilities.ORDINAL_PREFIX + "*", true);
		while (iter.hasNext()) {
			monitor.checkCancelled();
			Symbol ordSym = iter.next();
			if (!ordSym.getAddress().isMemoryAddress()) {
				continue;
			}
			if (!ordSym.getParentNamespace().equals(program.getGlobalNamespace())) {
				continue;
			}
			int ordinal = SymbolUtilities.getOrdinalValue(ordSym.getName());
			LibraryExportedSymbol les = symtab.getSymbol(ordinal);
			if (les == null || les.getName() == null) {
				continue;
			}
			try {
				Symbol nameSym =
					program.getSymbolTable().getGlobalSymbol(les.getName(), ordSym.getAddress());
				if (nameSym == null) {
					String name = les.getName();
					Symbol s = program.getSymbolTable()
							.createLabel(ordSym.getAddress(), name,
								program.getGlobalNamespace(), SourceType.IMPORTED);
					s.setPrimary();
				}
			}
			catch (InvalidInputException e) {
				log.appendMsg("Error creating label named " + les.getName() + " at address " +
					ordSym.getAddress() + ": " + e.getMessage());
			}
		}
	}
Applies the library symbol table to the {@link Program} being loaded. For example, if you 
load "mfc42.dll", it will create the named symbols along with the ordinals.

@param program The program being loaded.
@param log The message log.
@param monitor A cancelable task monitor.
@throws CancelledException if the user cancelled the load.
Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractOrdinalSupportLoader.java