@Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;

        if (obj instanceof S3CopyObjectOperation == false)
            return false;
        S3CopyObjectOperation other = (S3CopyObjectOperation) obj;
        if (other.getTargetResource() == null ^ this.getTargetResource() == null)
            return false;
        if (other.getTargetResource() != null && other.getTargetResource().equals(this.getTargetResource()) == false)
            return false;
        if (other.getCannedAccessControlList() == null ^ this.getCannedAccessControlList() == null)
            return false;
        if (other.getCannedAccessControlList() != null && other.getCannedAccessControlList().equals(this.getCannedAccessControlList()) == false)
            return false;
        if (other.getAccessControlGrants() == null ^ this.getAccessControlGrants() == null)
            return false;
        if (other.getAccessControlGrants() != null && other.getAccessControlGrants().equals(this.getAccessControlGrants()) == false)
            return false;
        if (other.getMetadataDirective() == null ^ this.getMetadataDirective() == null)
            return false;
        if (other.getMetadataDirective() != null && other.getMetadataDirective().equals(this.getMetadataDirective()) == false)
            return false;
        if (other.getModifiedSinceConstraint() == null ^ this.getModifiedSinceConstraint() == null)
            return false;
        if (other.getModifiedSinceConstraint() != null && other.getModifiedSinceConstraint().equals(this.getModifiedSinceConstraint()) == false)
            return false;
        if (other.getNewObjectMetadata() == null ^ this.getNewObjectMetadata() == null)
            return false;
        if (other.getNewObjectMetadata() != null && other.getNewObjectMetadata().equals(this.getNewObjectMetadata()) == false)
            return false;
        if (other.getNewObjectTagging() == null ^ this.getNewObjectTagging() == null)
            return false;
        if (other.getNewObjectTagging() != null && other.getNewObjectTagging().equals(this.getNewObjectTagging()) == false)
            return false;
        if (other.getRedirectLocation() == null ^ this.getRedirectLocation() == null)
            return false;
        if (other.getRedirectLocation() != null && other.getRedirectLocation().equals(this.getRedirectLocation()) == false)
            return false;
        if (other.getRequesterPays() == null ^ this.getRequesterPays() == null)
            return false;
        if (other.getRequesterPays() != null && other.getRequesterPays().equals(this.getRequesterPays()) == false)
            return false;
        if (other.getStorageClass() == null ^ this.getStorageClass() == null)
            return false;
        if (other.getStorageClass() != null && other.getStorageClass().equals(this.getStorageClass()) == false)
            return false;
        if (other.getUnModifiedSinceConstraint() == null ^ this.getUnModifiedSinceConstraint() == null)
            return false;
        if (other.getUnModifiedSinceConstraint() != null && other.getUnModifiedSinceConstraint().equals(this.getUnModifiedSinceConstraint()) == false)
            return false;
        if (other.getSSEAwsKmsKeyId() == null ^ this.getSSEAwsKmsKeyId() == null)
            return false;
        if (other.getSSEAwsKmsKeyId() != null && other.getSSEAwsKmsKeyId().equals(this.getSSEAwsKmsKeyId()) == false)
            return false;
        if (other.getTargetKeyPrefix() == null ^ this.getTargetKeyPrefix() == null)
            return false;
        if (other.getTargetKeyPrefix() != null && other.getTargetKeyPrefix().equals(this.getTargetKeyPrefix()) == false)
            return false;
        if (other.getObjectLockLegalHoldStatus() == null ^ this.getObjectLockLegalHoldStatus() == null)
            return false;
        if (other.getObjectLockLegalHoldStatus() != null && other.getObjectLockLegalHoldStatus().equals(this.getObjectLockLegalHoldStatus()) == false)
            return false;
        if (other.getObjectLockMode() == null ^ this.getObjectLockMode() == null)
            return false;
        if (other.getObjectLockMode() != null && other.getObjectLockMode().equals(this.getObjectLockMode()) == false)
            return false;
        if (other.getObjectLockRetainUntilDate() == null ^ this.getObjectLockRetainUntilDate() == null)
            return false;
        if (other.getObjectLockRetainUntilDate() != null && other.getObjectLockRetainUntilDate().equals(this.getObjectLockRetainUntilDate()) == false)
            return false;
        if (other.getBucketKeyEnabled() == null ^ this.getBucketKeyEnabled() == null)
            return false;
        if (other.getBucketKeyEnabled() != null && other.getBucketKeyEnabled().equals(this.getBucketKeyEnabled()) == false)
            return false;
        if (other.getChecksumAlgorithm() == null ^ this.getChecksumAlgorithm() == null)
            return false;
        if (other.getChecksumAlgorithm() != null && other.getChecksumAlgorithm().equals(this.getChecksumAlgorithm()) == false)
            return false;
        return true;
    }
Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
redacted from this string using a placeholder value.

@return A string representation of this object.

@see java.lang.Object#toString()
aws-java-sdk-s3control/src/main/java/com/amazonaws/services/s3control/model/S3CopyObjectOperation.java