DynamicCompositeByteBuf { public long readLongLE() { checkReadableBytes0(8); ByteBuf first = buffers.peek(); int firstLen = first.readableBytes(); if (firstLen >= 8) { long res = first.readLongLE(); readableBytes -= 8; if (firstLen == 8) { buffers.removeFirst().release(); } return res; } else if (order() == ByteOrder.BIG_ENDIAN) { return readIntLE() & 0xffffffffL | (readIntLE() & 0xffffffffL) << 32; } else { return (readIntLE() & 0xffffffffL) << 32 | readIntLE() & 0xffffffffL; } } DynamicCompositeByteBuf();  DynamicCompositeByteBuf(int capacity);  DynamicCompositeByteBuf(ByteBuf buf);  DynamicCompositeByteBuf(ByteBuf[] bufs, int offset, int len); int readableBytes(); boolean isEmpty(); boolean hasArray(); byte[] array(); int arrayOffset(); int readerIndex(); boolean isReadable(); ByteBuf nettyByteBuf(); void addBuffer(ByteBuf buffer); ByteBuf readRetainedSlice(int length); ByteBuf retainedSlice(int length); void skipBytes(int length); DynamicCompositeByteBuf readBytes(byte[] dst); DynamicCompositeByteBuf readBytes(byte[] dst, int dstIndex, int length); byte readByte(); short readUnsignedByte(); short readShort(); short readShortLE(); int readUnsignedShort(); int readUnsignedShortLE(); int readInt(); int readIntLE(); long readLong(); long readLongLE(); char readChar(); float readFloat(); float readFloatLE(); double readDouble(); double readDoubleLE(); ByteOrder order(); void release(); @Override String toString();  }
@Test public void testReadLongLE() { DynamicCompositeByteBuf compositeByteBuf = new DynamicCompositeByteBuf(); ByteBuf buf = Unpooled.buffer(8); buf.writeLongLE(234L); compositeByteBuf.addBuffer(buf); Assert.assertTrue(compositeByteBuf.readLongLE() == 234L); }