@Override
	protected MemoryBlockDB createBlock(String name, Address startAddress, long length, int flags,
			List<SubMemoryBlock> splitBlocks) throws IOException {
		DBRecord blockRecord = createMemoryBlockRecord(name, startAddress, length, flags);
		long key = blockRecord.getKey();

		long startingOffset = 0;
		for (SubMemoryBlock subMemoryBlock : splitBlocks) {
			subMemoryBlock.setParentIdAndStartingOffset(key, startingOffset);
			startingOffset += subMemoryBlock.subBlockLength;
		}

		memBlockTable.putRecord(blockRecord);
		MemoryBlockDB newBlock = new MemoryBlockDB(this, blockRecord, splitBlocks);
		cacheNewBlock(newBlock);
		return newBlock;
	}
MemoryMap adapter for version 3.
This version introduces the concept of sub memory blocks and FileBytes
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/mem/MemoryMapDBAdapterV3.java