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

        if (obj instanceof RecoveryInstanceFailback == false)
            return false;
        RecoveryInstanceFailback other = (RecoveryInstanceFailback) obj;
        if (other.getAgentLastSeenByServiceDateTime() == null ^ this.getAgentLastSeenByServiceDateTime() == null)
            return false;
        if (other.getAgentLastSeenByServiceDateTime() != null
                && other.getAgentLastSeenByServiceDateTime().equals(this.getAgentLastSeenByServiceDateTime()) == false)
            return false;
        if (other.getElapsedReplicationDuration() == null ^ this.getElapsedReplicationDuration() == null)
            return false;
        if (other.getElapsedReplicationDuration() != null && other.getElapsedReplicationDuration().equals(this.getElapsedReplicationDuration()) == false)
            return false;
        if (other.getFailbackClientID() == null ^ this.getFailbackClientID() == null)
            return false;
        if (other.getFailbackClientID() != null && other.getFailbackClientID().equals(this.getFailbackClientID()) == false)
            return false;
        if (other.getFailbackClientLastSeenByServiceDateTime() == null ^ this.getFailbackClientLastSeenByServiceDateTime() == null)
            return false;
        if (other.getFailbackClientLastSeenByServiceDateTime() != null
                && other.getFailbackClientLastSeenByServiceDateTime().equals(this.getFailbackClientLastSeenByServiceDateTime()) == false)
            return false;
        if (other.getFailbackInitiationTime() == null ^ this.getFailbackInitiationTime() == null)
            return false;
        if (other.getFailbackInitiationTime() != null && other.getFailbackInitiationTime().equals(this.getFailbackInitiationTime()) == false)
            return false;
        if (other.getFailbackJobID() == null ^ this.getFailbackJobID() == null)
            return false;
        if (other.getFailbackJobID() != null && other.getFailbackJobID().equals(this.getFailbackJobID()) == false)
            return false;
        if (other.getFailbackLaunchType() == null ^ this.getFailbackLaunchType() == null)
            return false;
        if (other.getFailbackLaunchType() != null && other.getFailbackLaunchType().equals(this.getFailbackLaunchType()) == false)
            return false;
        if (other.getFailbackToOriginalServer() == null ^ this.getFailbackToOriginalServer() == null)
            return false;
        if (other.getFailbackToOriginalServer() != null && other.getFailbackToOriginalServer().equals(this.getFailbackToOriginalServer()) == false)
            return false;
        if (other.getFirstByteDateTime() == null ^ this.getFirstByteDateTime() == null)
            return false;
        if (other.getFirstByteDateTime() != null && other.getFirstByteDateTime().equals(this.getFirstByteDateTime()) == false)
            return false;
        if (other.getState() == null ^ this.getState() == null)
            return false;
        if (other.getState() != null && other.getState().equals(this.getState()) == 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-drs/src/main/java/com/amazonaws/services/drs/model/RecoveryInstanceFailback.java