public synchronized byte[] getDirect(final long loc) {
		long blockNum = Long.divideUnsigned(loc, BLOCK_SIZE);
		int blockOffset = (int) Long.remainderUnsigned(loc, BLOCK_SIZE);
		if (blockOffset != 0) {
			throw new IllegalArgumentException("Offset must be at block boundary");
		}
		return blocks.computeIfAbsent(blockNum, n -> new byte[BLOCK_SIZE]);
	}
Copy a range of data from the semisparse array into the given byte array

@see #getData(long, byte[], int, int)
@param loc the index to begin copying data out
@param data the array to copy data into
Ghidra/Framework/Emulation/src/main/java/ghidra/generic/util/datastruct/SemisparseByteArray.java