static MemoryMapDBAdapter findReadOnlyAdapter(DBHandle handle, MemoryMapDB memMap)
			throws VersionException, IOException {
		try {
			return new MemoryMapDBAdapterV2(handle, memMap);
		}
		catch (VersionException e) {
			// try next oldest version
		}
		try {
			return new MemoryMapDBAdapterV1(handle, memMap);
		}
		catch (VersionException e) {
			// try next oldest version
		}
		return new MemoryMapDBAdapterV0(handle, memMap);
	}
Subblock record long data2 usage:
<ul>
<li>{@link BufferSubMemoryBlock} - (not used) 0</li>
<li>{@link FileBytesSubMemoryBlock} - starting byte offset within file bytes buffer</li>
<li>{@link ByteMappedSubMemoryBlock} - encoded mapped source address</li>
<li>{@link BitMappedSubMemoryBlock} - encoded mapped source address</li>
<li>{@link UninitializedSubMemoryBlock} - (not used) 0</li>
</ul>
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/mem/MemoryMapDBAdapter.java