private ExecutableRecord findSingleExecutable(ExeSpecifier specifier,
			DescriptionManager manager) throws LSHException, ElasticException {
		if (specifier.exemd5 != null && specifier.exemd5.length() != 0) {
			JsonObject row = queryMd5ExeMatch(specifier.exemd5);
			if (row == null) {
				return null;
			}
			return makeExecutableRecord(manager, row);
		}
		if (StringUtils.isEmpty(specifier.exename)) {
			throw new LSHException("ExeSpecifier must provide either md5 or name");
		}
		return querySingleExecutable(manager, specifier.exename, specifier.arch,
			specifier.execompname);
	}
Query for a single executable given uniquely specifying information (ExeSpecifier).
The exe document is retrieved from the database and parsed into an ExecutableRecord object.
@param specifier is the uniquely specifying info about the executable
@param manager is container for the final ExecutableRecord
@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