@Override
	public String toString() {
		StringBuilder buf = new StringBuilder(blockName);
		buf.append(':');
		if (overlay) {
			buf.append("overlay");
		}
		buf.append(" start_address=");
		buf.append(addressString);
		if (initialized) {
			buf.append(", initialized ");
		}
		else if (bitMappedAddress != null) {
			buf.append(", bit_mapped_address=");
			buf.append(bitMappedAddress);
		}
		else if (byteMappedAddress != null) {
			buf.append(", byte_mapped_address=");
			buf.append(byteMappedAddress);
			if (byteMappingScheme != null) {
				buf.append('/');
				buf.append(byteMappingScheme.toString());
			}
		}
		else {
			buf.append(", uninitialized");
		}
		buf.append(", length=0x");
		buf.append(Integer.toHexString(length));
		return buf.toString();
	}
Create memory block within specified program based upon this block specification.
@param program target program
@throws LockException if program does not have exclusive access required when adding memory blocks.
@throws MemoryConflictException if this specification conflicts with an existing memory block in program
@throws AddressOverflowException if memory space constraints are violated by block specification
@throws InvalidAddressException if address defined by this block specification is invalid
for the specified program.  May also indicate an improperly formatted address attribute.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/processors/generic/MemoryBlockDefinition.java