docs: public void setPartETags(List<PartETag> partETags) {
          checkNotNull(partETags, "partETags should not be null.");
          for (int i = 0; i < partETags.size(); ++i) {
              PartETag partETag = partETags.get(i);
              checkNotNull(partETag, "partETags[%s] should not be null.", i);
              int partNumber = partETag.getPartNumber();
              checkArgument(partNumber > 0, "partNumber should be positive. partETags[%s].partNumber:%s", i, partNumber);
              checkNotNull(partETag.getETag(), "partETags[%s].eTag should not be null.", i);
          }
          Collections.sort(partETags, new Comparator<PartETag>() {
              @Override
              public int compare(PartETag tag1, PartETag tag2) {
                  return tag1.getPartNumber() - tag2.getPartNumber();
              }
          });
          int lastPartNumber = 0;
          for (int i = 0; i < partETags.size(); ++i) {
              int partNumber = partETags.get(i).getPartNumber();
              checkArgument(partNumber != lastPartNumber, "Duplicated partNumber %s.", partNumber);
              lastPartNumber = partNumber;
          }
          this.partETags = partETags;
      }