private MultiPartIterator(List<Part> parts) { this.parts = parts; if (parts.isEmpty()) { iterator = Stream.of(onlyBoundary.slice()).iterator(); } else { List<ByteBuffer> list = new ArrayList<>(); for (int i = 0; i < parts.size(); ++i) { Part part = parts.get(i); if (i == 0) list.add(firstBoundary.slice()); else list.add(middleBoundary.slice()); list.addAll(part.getByteBuffers()); } list.add(lastBoundary.slice()); iterator = list.iterator(); } }