/** ETag == Content-MD5 */
 @VisibleForTesting
 protected void addETagTo(HttpResponse from, MutableObjectMetadata metadata) {
   if (metadata.getETag() == null) {
     String eTagHeader = from.getFirstHeaderOrNull(S3Headers.AMZ_MD5);
     if (eTagHeader != null) {
       metadata.setETag(eTagHeader);
     }
   }
 }
 /**
  * parses the http response headers to create a new {@link
  * org.jclouds.aws.s3.domain.internal.MutableObjectMetadata} object.
  */
 public MutableObjectMetadata apply(HttpResponse from) {
   BlobMetadata base = blobMetadataParser.apply(from);
   MutableObjectMetadata to = blobToObjectMetadata.apply(base);
   addETagTo(from, to);
   to.setContentMD5(HttpUtils.fromHexString(to.getETag().replaceAll("\"", "")));
   to.setCacheControl(from.getFirstHeaderOrNull(HttpHeaders.CACHE_CONTROL));
   to.setContentDisposition(from.getFirstHeaderOrNull("Content-Disposition"));
   to.setContentEncoding(from.getFirstHeaderOrNull(HttpHeaders.CONTENT_ENCODING));
   return to;
 }