public QueryNearest generateQueryNearest(SFQueryInfo queryInfo, TaskMonitor monitor)
			throws QueryDatabaseException {
		QueryNearest result = queryInfo.buildQueryNearest();
		doSignatureGeneration(queryInfo.getFunctions(), monitor);
		FunctionSymbolIterator iter =
			new FunctionSymbolIterator(queryInfo.getFunctions().iterator());
		try {
			signatureGenerator.transferCachedFunctions(result.manage, iter,
				queryInfo.getPreFilter());
		}
		catch (LSHException e) {
			throw new QueryDatabaseException(e.getMessage());
		}
		return result;
	}
Given a list of functions to query, prepare the final QueryNearest object which will be marshalled to the
server.  This involves generating the signatures for each of the function and accumulating their
FunctionDescriptions
@param queryInfo   is the high-level form of query, with the list of FunctionSymbols and other parameters
@param monitor the task monitor
@return the QueryNearest object ready for the queryStaged method
@throws QueryDatabaseException if transferring functions fails
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/facade/SimilarFunctionQueryService.java