@Override
    public int hashCode() {
        int result = requestRoute != null ? requestRoute.hashCode() : 0;
        result = 31 * result + (requestToken != null ? requestToken.hashCode() : 0);
        result = 31 * result + (statusCode != null ? statusCode.hashCode() : 0);
        result = 31 * result + (errorCode != null ? errorCode.hashCode() : 0);
        result = 31 * result + (errorMessage != null ? errorMessage.hashCode() : 0);
        result = 31 * result + (contentType != null ? contentType.hashCode() : 0);
        result = 31 * result + (acceptRanges != null ? acceptRanges.hashCode() : 0);
        result = 31 * result + (cacheControl != null ? cacheControl.hashCode() : 0);
        result = 31 * result + (contentDisposition != null ? contentDisposition.hashCode() : 0);
        result = 31 * result + (contentEncoding != null ? contentEncoding.hashCode() : 0);
        result = 31 * result + (contentLanguage != null ? contentLanguage.hashCode() : 0);
        result = 31 * result + (contentLength != null ? contentLength.hashCode() : 0);
        result = 31 * result + (contentRange != null ? contentRange.hashCode() : 0);
        result = 31 * result + (deleteMarker != null ? deleteMarker.hashCode() : 0);
        result = 31 * result + (eTag != null ? eTag.hashCode() : 0);
        result = 31 * result + (expires != null ? expires.hashCode() : 0);
        result = 31 * result + (expiration != null ? expiration.hashCode() : 0);
        result = 31 * result + (lastModified != null ? lastModified.hashCode() : 0);
        result = 31 * result + (missingMeta != null ? missingMeta.hashCode() : 0);
        result = 31 * result + (objectLockMode != null ? objectLockMode.hashCode() : 0);
        result = 31 * result + (objectLockLegalHoldStatus != null ? objectLockLegalHoldStatus.hashCode() : 0);
        result = 31 * result + (objectLockRetainUntilDate != null ? objectLockRetainUntilDate.hashCode() : 0);
        result = 31 * result + (partsCount != null ? partsCount.hashCode() : 0);
        result = 31 * result + (replicationStatus != null ? replicationStatus.hashCode() : 0);
        result = 31 * result + (requestCharged != null ? requestCharged.hashCode() : 0);
        result = 31 * result + (restore != null ? restore.hashCode() : 0);
        result = 31 * result + (serverSideEncryption != null ? serverSideEncryption.hashCode() : 0);
        result = 31 * result + (sseCustomerAlgorithm != null ? sseCustomerAlgorithm.hashCode() : 0);
        result = 31 * result + (sseKMSKeyId != null ? sseKMSKeyId.hashCode() : 0);
        result = 31 * result + (sseCustomerKeyMD5 != null ? sseCustomerKeyMD5.hashCode() : 0);
        result = 31 * result + (storageClass != null ? storageClass.hashCode() : 0);
        result = 31 * result + (tagCount != null ? tagCount.hashCode() : 0);
        result = 31 * result + (versionId != null ? versionId.hashCode() : 0);
        result = 31 * result + (bucketKeyEnabled != null ? bucketKeyEnabled.hashCode() : 0);
        result = 31 * result + (metadata != null ? metadata.hashCode() : 0);
        result = 31 * result + (inputStream != null ? inputStream.hashCode() : 0);
        result = 31 * result + (file != null ? file.hashCode() : 0);
        return result;
    }
A map of metadata to store with the object in S3.
aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/model/WriteGetObjectResponseRequest.java