private ExecutableRecord findSingleExeWithMap(ExeSpecifier specifier,
			DescriptionManager manager, TreeMap<ExeSpecifier, ExecutableRecord> nameMap)
			throws LSHException, ElasticException {
		ExecutableRecord erec = nameMap.get(specifier);
		if (erec != null) {
			return erec;
		}
		erec = findSingleExecutable(specifier, manager);
		nameMap.put(specifier, erec);			// Cache ExecutableRecord in map, even if its null
		return erec;
	}
Query for a single executable given uniquely specifying information (ExeSpecifier).
A cache map is checked first for a previously recovered ExecutableRecord object.
If not in the cache, the database is searched. If the executable is found, the ExecutableRecord
is parsed from the database document, put into the cache, and returned to the user.
@param specifier is the uniquely specifying info about the executable
@param manager is container for the final ExecutableRecord
@param nameMap is the cache of previously recovered records
@return the matching ExecutableRecord or null if none is found
@throws LSHException if there are problems adding the queried record to the container
@throws ElasticException for communication problems with the server
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/elastic/ElasticDatabase.java