private boolean checkForExternalJump(Program program, Reference reference, TaskMonitor monitor)
			throws CancelledException {
		// Check any direct jumps into the EXTERNAL memory section
		//   These don't return!
		Address toAddr = reference.getToAddress();
		if (!program.getMemory().isExternalBlockAddress(toAddr)) {
			return false;
		}
		Address fromAddr = reference.getFromAddress();
		Instruction instr = program.getListing().getInstructionAt(fromAddr);

		// override flow
		if (instr != null && instr.getFlowType().isJump()) {
			instr.setFlowOverride(FlowOverride.CALL_RETURN);
			// Get rid of any bad disassembly bookmark
			AddressSet set = new AddressSet(toAddr);
			program.getBookmarkManager()
					.removeBookmarks(set, BookmarkType.ERROR, Disassembler.ERROR_BOOKMARK_CATEGORY,
						monitor);
		}

		// make sure function created at destination
		Function func = program.getFunctionManager().getFunctionAt(toAddr);
		if (func == null) {
			CreateFunctionCmd createFuncCmd = new CreateFunctionCmd(null, toAddr,
				new AddressSet(toAddr, toAddr), SourceType.ANALYSIS);
			createFuncCmd.applyTo(program);
		}
		return true;
	}
Check for any jumps to Externals (manufactured labels).
Any externals directly jumped to should be looked at as a call.

Note: this shouldn't affect jumps in thunks, but beware...
@param monitor
@throws CancelledException
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/OperandReferenceAnalyzer.java