protected boolean goToExternalLinkage(Navigatable nav, ExternalLocation externalLoc,
			boolean popupAllowed) {
		if (externalLoc == null) {
			return false;
		}

		Symbol externalSym = externalLoc.getSymbol();
		Program program = externalSym.getProgram();

		Address[] externalLinkageAddresses =
			NavigationUtils.getExternalLinkageAddresses(program, externalSym.getAddress());
		if (externalLinkageAddresses.length == 0) {
			if (externalLoc.isFunction()) {
				tool.setStatusInfo("Failed to identify external linkage address for " +
					externalSym.getName(true) + ". Unable to perform navigation.", true);
			}
			return false;
		}
		if (externalLinkageAddresses.length > 1) {
			if (popupAllowed) {
				// popup list of all possible linkage locations
				AddressArrayTableModel model = new AddressArrayTableModel("Goto: ", tool, program,
					externalLinkageAddresses, null);
				TableService service = tool.getService(TableService.class);
				service.showTable("Goto " + externalSym.getName(true) + " linkage location",
					"Go To Results", model, "Go To", nav);
				return true;
			}
			tool.setStatusInfo(
				"Multiple external linkage addresses found for " + externalSym.getName(true), true);
		}
		else if (popupAllowed) {
			ProgramLocation location = nav.getLocation();
			if (location != null && externalLinkageAddresses[0].equals(location.getAddress())) {
				// If current location is the linkage location and popupAllowed, ignore
				// navigation option and attempt to navigate to external program
				return goToExternalLocation(nav, externalLoc, false);
			}
		}

		ProgramLocation location =
			getProgramLocationForAddress(externalLinkageAddresses[0], program);
		return goTo(nav, location, program);
	}
GoTo external address linkage location (pointer or thunk) within the current program which is
associated with the specified external location.
<p>
For those use cases which should not popup a window the popupAllowed option should be
<b>false</b>.
<p>
This method will generally cause navigation to a linkage location associated with the
specified external location. A linkage location is either a pointer to the external location
(identified by reference) or a thunk to the external location, provided the thunk does not
reference a linkage pointer. If more than one linkage location exists and popupAllowed is
<b>true</b>, a table will be displayed allowing the user to navigate to any of the linkage
locations. If navigation is initiated from the only known linkage location, and popupAllowed
is <b>true</b>, navigation to the external program will be attempted regardless of the
current {@link NavigationOptions#isGotoExternalProgramEnabled} setting.

@param nav Navigatable
@param externalLoc external location
@param popupAllowed if true a table may be displayed when multiple linkage locations exist,
           otherwise navigation to the first linkage location will be performed
@return true if navigation was successful or a list of possible linkage locations was
        displayed.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/gotoquery/GoToHelper.java