@Override
  protected void validate() throws IllegalArgumentException, MalformedURLException {
    super.validate();

    if (params.getFiles().isEmpty())
      throw new IllegalArgumentException("You have to add at least one file to upload");
  }
 @Override
 public MultipartUploadRequest setUsesFixedLengthStreamingMode(boolean fixedLength) {
   super.setUsesFixedLengthStreamingMode(fixedLength);
   return this;
 }
 @Override
 public MultipartUploadRequest setCustomUserAgent(String customUserAgent) {
   super.setCustomUserAgent(customUserAgent);
   return this;
 }
 @Override
 public MultipartUploadRequest setMaxRetries(int maxRetries) {
   super.setMaxRetries(maxRetries);
   return this;
 }
 @Override
 public MultipartUploadRequest addArrayParameter(String paramName, List<String> list) {
   super.addArrayParameter(paramName, list);
   return this;
 }
 @Override
 public MultipartUploadRequest setMethod(String method) {
   super.setMethod(method);
   return this;
 }
 @Override
 public MultipartUploadRequest addArrayParameter(String paramName, String... array) {
   super.addArrayParameter(paramName, array);
   return this;
 }
 @Override
 public MultipartUploadRequest addParameter(String paramName, String paramValue) {
   super.addParameter(paramName, paramValue);
   return this;
 }
 @Override
 public MultipartUploadRequest addHeader(String headerName, String headerValue) {
   super.addHeader(headerName, headerValue);
   return this;
 }
 @Override
 public MultipartUploadRequest setAutoDeleteFilesAfterSuccessfulUpload(boolean autoDeleteFiles) {
   super.setAutoDeleteFilesAfterSuccessfulUpload(autoDeleteFiles);
   return this;
 }
 // override all the supported builder methods by calling the super method and returning this
 @Override
 public MultipartUploadRequest setNotificationConfig(UploadNotificationConfig config) {
   super.setNotificationConfig(config);
   return this;
 }