synchronized static LibrarySymbolTable getSymbolTable(String dllName, int size,
			MessageLog log) {
		String cacheKey = LibrarySymbolTable.getCacheKey(dllName, size);
		LibrarySymbolTable symTab = cacheMap.get(cacheKey);
		if (symTab != null) {
			if (log != null) {
				log.appendMsg("Applying cached symbols from " + dllName);
			}
			return symTab;
		}

		// look in resources of pre-parsed .dll's
		ResourceFile file = getExistingExportsFile(dllName, size);
		if (file != null) {
			if (log != null) {
				log.appendMsg("Applying " + file);
			}
			try {
				symTab = new LibrarySymbolTable(file, size);
				cacheMap.put(symTab.getCacheKey(), symTab);
				return symTab;
			}
			catch (IOException e) {
				Msg.error(LibraryLookupTable.class, "Error reading " + file + ": " + e.getMessage(),
					e);
			}
		}

		ResourceFile existingOrdinalFile = getExistingOrdinalFile(dllName, size);
		if (existingOrdinalFile != null) {
			if (log != null) {
				log.appendMsg("Applying " + file);
			}
			symTab = new LibrarySymbolTable(dllName, size);
			symTab.applyOrdinalFile(existingOrdinalFile, true);
			cacheMap.put(symTab.getCacheKey(), symTab);
			return symTab;
		}

		return null;
	}
Get the symbol table associated with the DLL name.  If not previously
generated for the given dllName, it will be constructed from a .exports
file found within the 'symbols' resource area.  If a .exports file
is not found a similarly named .ord file will be used if found.  The 
.exports file is a Ghidra XML file formatted file, while the .ord file
is produced with the Visual Studio DUMPBIN /EXPORTS command.  The default 
resource area is located within the directory
<pre>
  Ghidra/Features/Base/data/symbols/[win32|win64]
</pre>
Alternatively, a user specific resource directory may be used which 
is located at 
<pre>{@code
  <user settings>/symbols/[win32|win64]
}</pre>
The cacheMap is a static cache which always returns the same
instance for a given DLL name.

@param dllName The DLL name (including extension)
@param size The architecture size of the DLL (e.g., 32 or 64).
@param log The message log (could be null)
@return LibrarySymbolTable associated with dllName
Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/LibraryLookupTable.java