default public MemoryBlock createByteMappedBlock(String name, Address start,
			Address mappedAddress, long length, boolean overlay) throws LockException,
			MemoryConflictException, AddressOverflowException, IllegalArgumentException {
		return createByteMappedBlock(name, start, mappedAddress, length, null, overlay);
	}
Create a byte-mapped memory block and add it to this memory.  Each byte address
within the resulting memory block will correspond to a byte within the mapped
region specified by {@code mappedAddress} using a 1:1 byte-mapping.
<p>
Overlay Blocks: An overlay memory block may be created in two ways:
<ul>
<li>Specifying a {@code start} address within an existing overlay address space 
({@code overlay} parameter is ignored), or</li>
<li>Specifying a {@code start} address within a physical memory address space and passing
{@code overlay=true}.  This use case will force the creation of a new unique overlay 
address space.</li>
</ul>
@param name block name (See {@link Memory#isValidMemoryBlockName(String)} for
naming rules)
@param start start of the block
@param mappedAddress  start address in the source block for the
beginning of this block
@param length block length
@param overlay if true, the block will be created as an OVERLAY block.  If the {@code start}
address is a non-overlay memory address a new overlay address space will be created and the 
block will have a starting address at the same offset within the new overlay space.  If the
specified {@code start} address is an overlay address an overlay block will be created at
that overlay address.
@return new Bit Memory Block
@throws LockException if exclusive lock not in place (see haveLock())
@throws MemoryConflictException if the new block overlaps with a previous block
@throws AddressOverflowException if block specification exceeds bounds of address space
@throws IllegalArgumentException if invalid block name
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/mem/Memory.java