docs: @Override
  	public final void get(DataOutput out, int offset, int length) throws IOException {
  		if (address <= addressLimit) {
  			if (heapMemory != null) {
  				out.write(heapMemory, offset, length);
  			}
  			else {
  				while (length >= 8) {
  					out.writeLong(getLongBigEndian(offset));
  					offset += 8;
  					length -= 8;
  				}
  
  				while (length > 0) {
  					out.writeByte(get(offset));
  					offset++;
  					length--;
  				}
  			}
  		}
  		else {
  			throw new IllegalStateException("segment has been freed");
  		}
  	}