class ByteBufferInputStream extends InputStream {

    static InputStream of(final ByteBuffer byteBuffer) {
        if (byteBuffer.hasArray()) {
            return new ByteArrayInputStream(
                    byteBuffer.array(),
                    byteBuffer.arrayOffset() + byteBuffer.position(),
                    byteBuffer.limit());
        }
        return new ByteBufferInputStream(byteBuffer);
    }

    private  ByteBufferInputStream(final ByteBuffer byteBuffer);

}