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

        if (obj instanceof Contact == false)
            return false;
        Contact other = (Contact) obj;
        if (other.getArn() == null ^ this.getArn() == null)
            return false;
        if (other.getArn() != null && other.getArn().equals(this.getArn()) == false)
            return false;
        if (other.getId() == null ^ this.getId() == null)
            return false;
        if (other.getId() != null && other.getId().equals(this.getId()) == false)
            return false;
        if (other.getInitialContactId() == null ^ this.getInitialContactId() == null)
            return false;
        if (other.getInitialContactId() != null && other.getInitialContactId().equals(this.getInitialContactId()) == false)
            return false;
        if (other.getPreviousContactId() == null ^ this.getPreviousContactId() == null)
            return false;
        if (other.getPreviousContactId() != null && other.getPreviousContactId().equals(this.getPreviousContactId()) == false)
            return false;
        if (other.getInitiationMethod() == null ^ this.getInitiationMethod() == null)
            return false;
        if (other.getInitiationMethod() != null && other.getInitiationMethod().equals(this.getInitiationMethod()) == false)
            return false;
        if (other.getName() == null ^ this.getName() == null)
            return false;
        if (other.getName() != null && other.getName().equals(this.getName()) == false)
            return false;
        if (other.getDescription() == null ^ this.getDescription() == null)
            return false;
        if (other.getDescription() != null && other.getDescription().equals(this.getDescription()) == false)
            return false;
        if (other.getChannel() == null ^ this.getChannel() == null)
            return false;
        if (other.getChannel() != null && other.getChannel().equals(this.getChannel()) == false)
            return false;
        if (other.getQueueInfo() == null ^ this.getQueueInfo() == null)
            return false;
        if (other.getQueueInfo() != null && other.getQueueInfo().equals(this.getQueueInfo()) == false)
            return false;
        if (other.getAgentInfo() == null ^ this.getAgentInfo() == null)
            return false;
        if (other.getAgentInfo() != null && other.getAgentInfo().equals(this.getAgentInfo()) == false)
            return false;
        if (other.getInitiationTimestamp() == null ^ this.getInitiationTimestamp() == null)
            return false;
        if (other.getInitiationTimestamp() != null && other.getInitiationTimestamp().equals(this.getInitiationTimestamp()) == false)
            return false;
        if (other.getDisconnectTimestamp() == null ^ this.getDisconnectTimestamp() == null)
            return false;
        if (other.getDisconnectTimestamp() != null && other.getDisconnectTimestamp().equals(this.getDisconnectTimestamp()) == false)
            return false;
        if (other.getLastUpdateTimestamp() == null ^ this.getLastUpdateTimestamp() == null)
            return false;
        if (other.getLastUpdateTimestamp() != null && other.getLastUpdateTimestamp().equals(this.getLastUpdateTimestamp()) == false)
            return false;
        if (other.getLastPausedTimestamp() == null ^ this.getLastPausedTimestamp() == null)
            return false;
        if (other.getLastPausedTimestamp() != null && other.getLastPausedTimestamp().equals(this.getLastPausedTimestamp()) == false)
            return false;
        if (other.getLastResumedTimestamp() == null ^ this.getLastResumedTimestamp() == null)
            return false;
        if (other.getLastResumedTimestamp() != null && other.getLastResumedTimestamp().equals(this.getLastResumedTimestamp()) == false)
            return false;
        if (other.getTotalPauseCount() == null ^ this.getTotalPauseCount() == null)
            return false;
        if (other.getTotalPauseCount() != null && other.getTotalPauseCount().equals(this.getTotalPauseCount()) == false)
            return false;
        if (other.getTotalPauseDurationInSeconds() == null ^ this.getTotalPauseDurationInSeconds() == null)
            return false;
        if (other.getTotalPauseDurationInSeconds() != null && other.getTotalPauseDurationInSeconds().equals(this.getTotalPauseDurationInSeconds()) == false)
            return false;
        if (other.getScheduledTimestamp() == null ^ this.getScheduledTimestamp() == null)
            return false;
        if (other.getScheduledTimestamp() != null && other.getScheduledTimestamp().equals(this.getScheduledTimestamp()) == false)
            return false;
        if (other.getRelatedContactId() == null ^ this.getRelatedContactId() == null)
            return false;
        if (other.getRelatedContactId() != null && other.getRelatedContactId().equals(this.getRelatedContactId()) == false)
            return false;
        if (other.getWisdomInfo() == null ^ this.getWisdomInfo() == null)
            return false;
        if (other.getWisdomInfo() != null && other.getWisdomInfo().equals(this.getWisdomInfo()) == false)
            return false;
        if (other.getQueueTimeAdjustmentSeconds() == null ^ this.getQueueTimeAdjustmentSeconds() == null)
            return false;
        if (other.getQueueTimeAdjustmentSeconds() != null && other.getQueueTimeAdjustmentSeconds().equals(this.getQueueTimeAdjustmentSeconds()) == false)
            return false;
        if (other.getQueuePriority() == null ^ this.getQueuePriority() == null)
            return false;
        if (other.getQueuePriority() != null && other.getQueuePriority().equals(this.getQueuePriority()) == false)
            return false;
        if (other.getTags() == null ^ this.getTags() == null)
            return false;
        if (other.getTags() != null && other.getTags().equals(this.getTags()) == false)
            return false;
        if (other.getConnectedToSystemTimestamp() == null ^ this.getConnectedToSystemTimestamp() == null)
            return false;
        if (other.getConnectedToSystemTimestamp() != null && other.getConnectedToSystemTimestamp().equals(this.getConnectedToSystemTimestamp()) == false)
            return false;
        if (other.getRoutingCriteria() == null ^ this.getRoutingCriteria() == null)
            return false;
        if (other.getRoutingCriteria() != null && other.getRoutingCriteria().equals(this.getRoutingCriteria()) == false)
            return false;
        if (other.getCustomer() == null ^ this.getCustomer() == null)
            return false;
        if (other.getCustomer() != null && other.getCustomer().equals(this.getCustomer()) == false)
            return false;
        if (other.getCampaign() == null ^ this.getCampaign() == null)
            return false;
        if (other.getCampaign() != null && other.getCampaign().equals(this.getCampaign()) == false)
            return false;
        if (other.getAnsweringMachineDetectionStatus() == null ^ this.getAnsweringMachineDetectionStatus() == null)
            return false;
        if (other.getAnsweringMachineDetectionStatus() != null
                && other.getAnsweringMachineDetectionStatus().equals(this.getAnsweringMachineDetectionStatus()) == false)
            return false;
        if (other.getCustomerVoiceActivity() == null ^ this.getCustomerVoiceActivity() == null)
            return false;
        if (other.getCustomerVoiceActivity() != null && other.getCustomerVoiceActivity().equals(this.getCustomerVoiceActivity()) == false)
            return false;
        if (other.getQualityMetrics() == null ^ this.getQualityMetrics() == null)
            return false;
        if (other.getQualityMetrics() != null && other.getQualityMetrics().equals(this.getQualityMetrics()) == false)
            return false;
        if (other.getDisconnectDetails() == null ^ this.getDisconnectDetails() == null)
            return false;
        if (other.getDisconnectDetails() != null && other.getDisconnectDetails().equals(this.getDisconnectDetails()) == false)
            return false;
        if (other.getSegmentAttributes() == null ^ this.getSegmentAttributes() == null)
            return false;
        if (other.getSegmentAttributes() != null && other.getSegmentAttributes().equals(this.getSegmentAttributes()) == 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-connect/src/main/java/com/amazonaws/services/connect/model/Contact.java