private void encodeHole(Encoder encoder, AddressSpace spc, long first, long last,
			int mutability) throws IOException {
		encoder.openElement(ELEM_HOLE);
		if (mutability == MutabilitySettingsDefinition.CONSTANT) {
			encoder.writeBool(ATTRIB_READONLY, true);
		}
		else if (mutability == MutabilitySettingsDefinition.VOLATILE) {
			encoder.writeBool(ATTRIB_VOLATILE, true);
		}
		encoder.writeSpace(ATTRIB_SPACE, spc);
		encoder.writeUnsignedInteger(ATTRIB_FIRST, first);
		encoder.writeUnsignedInteger(ATTRIB_LAST, last);
		encoder.closeElement(ELEM_HOLE);
	}
This function deals with the vagaries of the getMappedSymbols
interface when the queried address is in the body of a function.
Basically, if the address is the entry point of the function, all the
function data is sent. Otherwise a hole is sent back of the biggest
contiguous block in the body of the function containing the queried
address

@param encoder is the stream encoder
@param func Function whose body contains the address
@param addr The queried address
@param includeDefaultNames true if default parameter names should be
           included
@throws IOException for errors in the underlying stream
Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/DecompileCallback.java