private boolean handleNamedRelationSearch(LibraryRecord libraryRecord,
			FunctionRecord functionRecord, ChildSymbol symbol, RelationType relType)
			throws CancelledException {
		List<FunctionRecord> list = fidDb.findFunctionsByLibraryAndName(libraryRecord, symbol.name);
		HashSet<Long> hashes = new HashSet<>();
		for (FunctionRecord relation : list) {
			monitor.checkCancelled();
			// If we have hash information about the symbol, use it as additional filter
			if (symbol.hashQuad != null &&
				symbol.hashQuad.getFullHash() != relation.getFullHash()) {
				continue;
			}
			hashes.add(relation.getSpecificHash());
		}
		if (hashes.size() == 0 && (!list.isEmpty())) {
			Msg.warn(FidServiceLibraryIngest.class,
				"direct relation " + symbol.name + "lost with hash filter");
		}
		else if (hashes.size() <= MAXIMUM_NUMBER_OF_NAME_RESOLUTION_RELATIONS) {
			for (FunctionRecord relative : list) {
				monitor.checkCancelled();
				// Continue to use any hash information as filter
				if (symbol.hashQuad != null &&
					symbol.hashQuad.getFullHash() != relative.getFullHash()) {
					continue;
				}
				fidDb.createRelation(functionRecord, relative, relType);
			}
		}
		else {
			Msg.warn(FidServiceLibraryIngest.class,
				"relation " + symbol.name + " unresolved; too many possibilities");
		}
		return !list.isEmpty();
	}
Tries to resolve an ambiguous named relation.  If not too many hashes are found, it will
add them all, because presence of one is a high indicator of match.  If too many are found,
the significance drops and none of the hashes are added (so a potential result isn't diluted).
@param libraryRecord the library to link against
@param functionRecord the function record
@param symbol the symbol to seek
@param relType is the RelationType of the link (INTER_LIBRARY or INTRA_LIBRARY)
@return if at least one relation was added
@throws CancelledException if the user cancels
Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/service/FidServiceLibraryIngest.java