class DynamicCompositeByteBuf {

    public long readLong() {
        checkReadableBytes0(8);
        ByteBuf first = buffers.peek();
        int firstLen = first.readableBytes();
        if (firstLen >= 8) {
            long res = first.readLong();
            readableBytes -= 8;
            if (firstLen == 8) {
                buffers.removeFirst().release();
            }
            return res;
        } else if (order() == ByteOrder.BIG_ENDIAN) {
            return (readInt() & 0xffffffffL) << 32 | readInt() & 0xffffffffL;
        } else {
            return readInt() & 0xFFFFFFFFL | (readInt() & 0xFFFFFFFFL) << 32;
        }
    }

    public  DynamicCompositeByteBuf();
    public  DynamicCompositeByteBuf(int capacity);
    public  DynamicCompositeByteBuf(ByteBuf buf);
    public  DynamicCompositeByteBuf(ByteBuf[] bufs, int offset, int len);

}