@Override
	public boolean fieldElementClicked(Object clickedObject, Navigatable navigatable,
			ProgramLocation location, MouseEvent mouseEvent, ServiceProvider serviceProvider) {

		if (mouseEvent.getClickCount() != 2 || mouseEvent.getButton() != MouseEvent.BUTTON1) {
			return false;
		}
		
		GoToService goToService = serviceProvider.getService(GoToService.class);
		if (goToService == null) {
			return false;
		}
		
		Program program = location.getProgram();
		
		Address gotoAddr = null;
		if (location instanceof FunctionNameFieldLocation) {
			FunctionNameFieldLocation fieldLocation = (FunctionNameFieldLocation) location;
			
			Function refFunction = program.getFunctionManager().getFunctionAt(
					fieldLocation.getFunctionAddress());
			if (refFunction != null) {
				Function thunkedFunction = refFunction.getThunkedFunction(false);
				if (thunkedFunction != null) {
					gotoAddr = thunkedFunction.getEntryPoint();
				}
			}
		}
		else {
			ThunkedFunctionFieldLocation fieldLocation = (ThunkedFunctionFieldLocation) location;
			gotoAddr = fieldLocation.getRefAddress();
		}
		if (gotoAddr == null) {
			return false;
		}
		if (gotoAddr.isExternalAddress()) {
			// handle navigation to external function
			Symbol externalSym = program.getSymbolTable().getPrimarySymbol(gotoAddr);
			if (externalSym == null) {
				return false;
			}
			ExternalManager externalMgr = program.getExternalManager();
			ExternalLocation extLoc = externalMgr.getExternalLocation(externalSym);
			return goToService.goToExternalLocation(extLoc, false);
		}
		return goToService.goTo(navigatable, gotoAddr);
	}
A handler to process {@link OperandFieldLocation} mouse clicks.
Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/ThunkedFunctionFieldMouseHandler.java