private FunctionDescription queryByNameAddress(DescriptionManager manager,
			ExecutableRecord exeRecord, String functionName, long address, boolean fillInSignatures)
			throws ElasticException {
		RowKeyElastic eKey = (RowKeyElastic) exeRecord.getRowId();
		String exeId = eKey.generateExeIdString();
		JsonObject doc = queryFuncNameAddress(exeId, functionName, address);
		if (doc == null) {
			return null;
		}
		FunctionDescription funcDesc = convertDescriptionRow(doc, exeRecord, manager, null);
		if (fillInSignatures) {
			List<FunctionDescription> vecres = new ArrayList<>();
			vecres.add(funcDesc);
			queryAssociatedSignatures(vecres, manager);
		}
		return funcDesc;
	}
Given an ExecutableRecord, function name, and address, query for
the matching FunctionDescription.
@param manager is the container for the FunctionDescription
@param exeRecord is the given executable
@param functionName is the function name
@param address is the function address
@param fillInSignatures is true if the SignatureRecord should be filled in
@return the recovered FunctionDescription or null if not found
@throws ElasticException for communication problems with the server
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/elastic/ElasticDatabase.java