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();
   }
 }