code: private List<PartETag> collectPartETags() {
  
  		final List<PartETag> partETags = new ArrayList<PartETag>();
  		for (Future<PartETag> future : futures) {
  			try {
  				partETags.add(future.get());
  			} catch (Exception e) {
  				throw new SdkClientException("Unable to copy part: "
  						+ e.getCause().getMessage(), e.getCause());
  			}
  		}
  		return partETags;
  	}
docs: Collects the Part ETags for initiating the complete multi-part copy
  request. This is blocking as it waits until all the upload part threads
  complete.