private boolean checkMemRefs(Navigatable navigatable, CodeUnit codeUnit,
			OperandFieldLocation loc, ServiceProvider serviceProvider) {

		Address refAddr = loc.getRefAddress();
		if (refAddr == null || !refAddr.isMemoryAddress()) {
			return false;
		}

		Reference[] refs = codeUnit.getOperandReferences(loc.getOperandIndex());
		Address[] addrs = getAddressesForReferences(refs, codeUnit, serviceProvider);
		if (addrs.length == 0) {
			return false;
		}

		if (addrs.length > 1) {
			List<OutgoingReferenceEndpoint> outgoingReferences = new ArrayList<>();
			for (int i = 0; i < refs.length; i++) {
				Reference ref = refs[i];
				boolean offcut = ReferenceUtils.isOffcut(codeUnit.getProgram(), ref.getToAddress());
				outgoingReferences.add(new OutgoingReferenceEndpoint(ref, addrs[i], offcut));
			}

			IncomingReferencesTableModel model = new IncomingReferencesTableModel("Operand",
				serviceProvider, codeUnit.getProgram(), outgoingReferences, null);
			TableService service = serviceProvider.getService(TableService.class);

			Navigatable nav = NavigationUtils.getActiveNavigatable();
			String addressString = codeUnit.getMinAddress().toString();
			service.showTable("Operand References for " + addressString, "Operands", model,
				"References", nav);
			return true;
		}

		// 1 address found
		Address gotoAddr = addrs[0];
		if (gotoAddr == null) {
			return false;
		}

		GoToService goToService = serviceProvider.getService(GoToService.class);
		return goToService.goTo(navigatable, codeUnit.getProgram(), gotoAddr,
			codeUnit.getAddress());
	}
Navigate to the variable, when directly supplied by the field location

@param navigatable the navigatable to which we should navigate
@param loc the source location
@param goToService the GoTo service
@return true if we decide to attempt navigation
Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/OperandFieldMouseHandler.java