@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        WriteGetObjectResponseRequest that = (WriteGetObjectResponseRequest) o;

        if (requestRoute != null ? !requestRoute.equals(that.requestRoute) : that.requestRoute != null) return false;
        if (requestToken != null ? !requestToken.equals(that.requestToken) : that.requestToken != null) return false;
        if (statusCode != null ? !statusCode.equals(that.statusCode) : that.statusCode != null) return false;
        if (errorCode != null ? !errorCode.equals(that.errorCode) : that.errorCode != null) return false;
        if (errorMessage != null ? !errorMessage.equals(that.errorMessage) : that.errorMessage != null) return false;
        if (contentType != null ? !contentType.equals(that.contentType) : that.contentType != null) return false;
        if (acceptRanges != null ? !acceptRanges.equals(that.acceptRanges) : that.acceptRanges != null) return false;
        if (cacheControl != null ? !cacheControl.equals(that.cacheControl) : that.cacheControl != null) return false;
        if (contentDisposition != null ? !contentDisposition.equals(that.contentDisposition) : that.contentDisposition != null)
            return false;
        if (contentEncoding != null ? !contentEncoding.equals(that.contentEncoding) : that.contentEncoding != null)
            return false;
        if (contentLanguage != null ? !contentLanguage.equals(that.contentLanguage) : that.contentLanguage != null)
            return false;
        if (contentLength != null ? !contentLength.equals(that.contentLength) : that.contentLength != null)
            return false;
        if (contentRange != null ? !contentRange.equals(that.contentRange) : that.contentRange != null) return false;
        if (deleteMarker != null ? !deleteMarker.equals(that.deleteMarker) : that.deleteMarker != null) return false;
        if (eTag != null ? !eTag.equals(that.eTag) : that.eTag != null) return false;
        if (expires != null ? !expires.equals(that.expires) : that.expires != null) return false;
        if (expiration != null ? !expiration.equals(that.expiration) : that.expiration != null) return false;
        if (lastModified != null ? !lastModified.equals(that.lastModified) : that.lastModified != null) return false;
        if (missingMeta != null ? !missingMeta.equals(that.missingMeta) : that.missingMeta != null) return false;
        if (objectLockMode != null ? !objectLockMode.equals(that.objectLockMode) : that.objectLockMode != null)
            return false;
        if (objectLockLegalHoldStatus != null ? !objectLockLegalHoldStatus.equals(that.objectLockLegalHoldStatus) : that.objectLockLegalHoldStatus != null)
            return false;
        if (objectLockRetainUntilDate != null ? !objectLockRetainUntilDate.equals(that.objectLockRetainUntilDate) : that.objectLockRetainUntilDate != null)
            return false;
        if (partsCount != null ? !partsCount.equals(that.partsCount) : that.partsCount != null) return false;
        if (replicationStatus != null ? !replicationStatus.equals(that.replicationStatus) : that.replicationStatus != null)
            return false;
        if (requestCharged != null ? !requestCharged.equals(that.requestCharged) : that.requestCharged != null)
            return false;
        if (restore != null ? !restore.equals(that.restore) : that.restore != null) return false;
        if (serverSideEncryption != null ? !serverSideEncryption.equals(that.serverSideEncryption) : that.serverSideEncryption != null)
            return false;
        if (sseCustomerAlgorithm != null ? !sseCustomerAlgorithm.equals(that.sseCustomerAlgorithm) : that.sseCustomerAlgorithm != null)
            return false;
        if (sseKMSKeyId != null ? !sseKMSKeyId.equals(that.sseKMSKeyId) : that.sseKMSKeyId != null) return false;
        if (sseCustomerKeyMD5 != null ? !sseCustomerKeyMD5.equals(that.sseCustomerKeyMD5) : that.sseCustomerKeyMD5 != null)
            return false;
        if (storageClass != null ? !storageClass.equals(that.storageClass) : that.storageClass != null) return false;
        if (tagCount != null ? !tagCount.equals(that.tagCount) : that.tagCount != null) return false;
        if (versionId != null ? !versionId.equals(that.versionId) : that.versionId != null) return false;
        if (bucketKeyEnabled != null ? !bucketKeyEnabled.equals(that.bucketKeyEnabled) : that.bucketKeyEnabled != null)
            return false;
        if (metadata != null ? !metadata.equals(that.metadata) : that.metadata != null) return false;
        if (inputStream != null ? !inputStream.equals(that.inputStream) : that.inputStream != null) return false;
        return file != null ? file.equals(that.file) : that.file == null;
    }
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