@Test
	public void testActionGoToExternalLinkage() throws Exception {
		createMappedTraceAndProgram();

		AddressSpace ss = program.getAddressFactory().getDefaultAddressSpace();

		try (Transaction tx = program.openTransaction("Add EXTERNAL and ref")) {
			Function func = program.getExternalManager()
					.addExtLocation("lib", "testExtFunc", null, SourceType.IMPORTED)
					.createFunction();
			// This is the same construct as imported from a PE's IAT
			Address dataAddr = ss.getAddress(0x00600123);
			Data data = program.getListing().createData(dataAddr, PointerDataType.dataType);
			data.addMnemonicReference(func.getEntryPoint(), RefType.EXTERNAL_REF,
				SourceType.IMPORTED);
		}

		waitForProgram(program);
		traceManager.activateTrace(tb.trace);
		waitForSwing();

		assertTrue(listingProvider.actionGoTo.isEnabled());

		performAction(listingProvider.actionGoTo, false);
		DebuggerGoToDialog dialog1 = waitForDialogComponent(DebuggerGoToDialog.class);
		runSwing(() -> {
			dialog1.setOffset("testExtFunc");
			dialog1.okCallback();
		});
		waitForPass(
			() -> assertEquals(tb.addr(0x00400123), listingProvider.getLocation().getAddress()));
	}
Because goToDyn has to retry, it can generate many read requests. Turn off auto-read and
then flush out any pending reads, so that all the tasks can complete.
Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProviderTest.java