text: public void NextSlice(){int nextIndex = ((buffer[limit] & 0xff) << 24) + ((buffer[1 + limit] & 0xff) << 16) + ((buffer[2 + limit] & 0xff) << 8) + (buffer[3 + limit] & 0xff);level = ByteBlockPool.NEXT_LEVEL_ARRAY[level];int newSize = ByteBlockPool.LEVEL_SIZE_ARRAY[level];bufferUpto = nextIndex / ByteBlockPool.BYTE_BLOCK_SIZE;BufferOffset = bufferUpto * ByteBlockPool.BYTE_BLOCK_SIZE;buffer = pool.Buffers[bufferUpto];upto = nextIndex & ByteBlockPool.BYTE_BLOCK_MASK;if (nextIndex + newSize >= EndIndex){Debug.Assert(EndIndex - nextIndex > 0);limit = EndIndex - BufferOffset;}else{limit = upto + newSize - 4;}}