public void readBytesTo(byte[] buffer, int offset, int length) {
    Requires.nonNull(buffer, "buffer");
    Requires.positive(offset, "offset");
    Requires.positive(length, "length");

    ensureCanGrow(length);
    Unsafe.INSTANCE.copyMemory(
        null,
        address + position,
        buffer,
        Unsafe.BYTEARRAY_BASEOFFSET + offset * Unsafe.BYTEARRAY_INDEXSCALE,
        length);
    position += length;
  }