code: @Override
      public InitiateMultipartUploadResult initiateMultipartUpload(
              InitiateMultipartUploadRequest req) {
          boolean isCreateEncryptionMaterial = true;
          if (req instanceof EncryptedInitiateMultipartUploadRequest) {
              EncryptedInitiateMultipartUploadRequest cryptoReq = 
                      (EncryptedInitiateMultipartUploadRequest) req;
              isCreateEncryptionMaterial = cryptoReq.isCreateEncryptionMaterial();
          }
          return isCreateEncryptionMaterial
               ? crypto.initiateMultipartUploadSecurely(req)
               : super.initiateMultipartUpload(req)
               ;
      }
docs: {@inheritDoc}
  <p>
  Use {@link EncryptedInitiateMultipartUploadRequest} to specify materialsDescription for the EncryptionMaterials to be used for this request.
  AmazonS3EncryptionClient would use {@link EncryptionMaterialsProvider#getEncryptionMaterials(java.util.Map)} to retrieve encryption materials
  corresponding to the materialsDescription specified in the current request.
  </p>