public void get(ByteBuffer dst) {
        if (dst == null) {
            throw new NullPointerException();
        }

        for (ByteBuffer data: this.queue) {
            // data pos/lim must not be modified
            data = data.slice();

            if (data.remaining() > dst.remaining()) {
                data.limit(dst.remaining());
                dst.put(data);
                break;
            }

            dst.put(data);

            if (!dst.hasRemaining()) {
                break;
            }
        }
    }