private void encodeExternalRef(Encoder encoder, Address addr, ExternalReference ref)
			throws IOException {
		// The decompiler model was to assume that the ExternalReference
		// object could resolve the physical address where the dll
		// function was getting loaded, just as a linker would do.
		// GHIDRA may not be able to do full linking so it maintains a special
		// External address (in an External AddressSpace) as a level
		// of indirection for letting the user map the dll themselves.
		// The ref.getExternalAddress() is this special address, which
		// is NOT a physical address. Right now the decompiler doesn't
		// care where the external function is mapped to, but it does
		// want a physical address which is unique.  So we currently use
		// the address of the reference to hang the function on, and make
		// no attempt to get a realistic linked address.  This works because
		// we never read bytes or look up code units at the address.
		HighSymbol externSymbol = new HighExternalSymbol(ref.getLabel(), addr, addr, dtmanage);
		encodeResult(encoder, externSymbol, null);
	}
Calculate the beginning and ending address of the biggest region around
addr that does not contain any symbol.

This was not working correctly and it is too difficult to find the
biggest region for which there is no codeunit, and where the volatile and
readonly properties don't vary

So now we assume that biggest hole we can find is just 1 byte

@param encoder is the stream encoder
@param addr is the Address around which to find region
@throws IOException for errors in the underlying stream
Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/DecompileCallback.java