public static ByteBuf wrappedBuffer(byte[] array) {
        if (array.length == 0) {
            return EMPTY_BUFFER;
        }
        return new UnpooledHeapByteBuf(ALLOC, array, array.length);
    }
@Test
    public void testWrappedBuffer() {
        ByteBuf buffer = wrappedBuffer(ByteBuffer.allocateDirect(16));
        assertEquals(16, buffer.capacity());
        buffer.release();

        assertEqualsAndRelease(
                wrappedBuffer(new byte[] { 1, 2, 3 }),
                wrappedBuffer(new byte[][] { new byte[] { 1, 2, 3 } }));

        assertEqualsAndRelease(
                wrappedBuffer(new byte[] { 1, 2, 3 }),
                wrappedBuffer(new byte[] { 1 }, new byte[] { 2 }, new byte[] { 3 }));

        assertEqualsAndRelease(wrappedBuffer(new byte[] { 1, 2, 3 }),
                wrappedBuffer(new ByteBuf[] { wrappedBuffer(new byte[] { 1, 2, 3 }) }));

        assertEqualsAndRelease(
                wrappedBuffer(new byte[] { 1, 2, 3 }),
                wrappedBuffer(wrappedBuffer(new byte[] { 1 }),
                        wrappedBuffer(new byte[] { 2 }), wrappedBuffer(new byte[] { 3 })));

        assertEqualsAndRelease(wrappedBuffer(new byte[] { 1, 2, 3 }),
                wrappedBuffer(new ByteBuffer[] { ByteBuffer.wrap(new byte[] { 1, 2, 3 }) }));

        assertEqualsAndRelease(wrappedBuffer(new byte[] { 1, 2, 3 }),
                wrappedBuffer(ByteBuffer.wrap(new byte[] { 1 }),
                ByteBuffer.wrap(new byte[] { 2 }), ByteBuffer.wrap(new byte[] { 3 })));
    }