text: public long copyUsingLengthPrefix(BytesRef bytes) {if (bytes.length >= 32768) {throw new IllegalArgumentException("max length is 32767 (got " + bytes.length + ")");}if (upto + bytes.length + 2 > blockSize) {if (bytes.length + 2 > blockSize) {throw new IllegalArgumentException("block size " + blockSize + " is too small to store length " + bytes.length + " bytes");}if (currentBlock != null) {addBlock(currentBlock);}currentBlock = new byte[blockSize];upto = 0;}final long pointer = getPointer();if (bytes.length < 128) {currentBlock[upto++] = (byte) bytes.length;} else {currentBlock[upto++] = (byte) (0x80 | (bytes.length >> 8));currentBlock[upto++] = (byte) (bytes.length & 0xff);}System.arraycopy(bytes.bytes, bytes.offset, currentBlock, upto, bytes.length);upto += bytes.length;return pointer;}