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

        if (obj instanceof Statement == false)
            return false;
        Statement other = (Statement) obj;
        if (other.getByteMatchStatement() == null ^ this.getByteMatchStatement() == null)
            return false;
        if (other.getByteMatchStatement() != null && other.getByteMatchStatement().equals(this.getByteMatchStatement()) == false)
            return false;
        if (other.getSqliMatchStatement() == null ^ this.getSqliMatchStatement() == null)
            return false;
        if (other.getSqliMatchStatement() != null && other.getSqliMatchStatement().equals(this.getSqliMatchStatement()) == false)
            return false;
        if (other.getXssMatchStatement() == null ^ this.getXssMatchStatement() == null)
            return false;
        if (other.getXssMatchStatement() != null && other.getXssMatchStatement().equals(this.getXssMatchStatement()) == false)
            return false;
        if (other.getSizeConstraintStatement() == null ^ this.getSizeConstraintStatement() == null)
            return false;
        if (other.getSizeConstraintStatement() != null && other.getSizeConstraintStatement().equals(this.getSizeConstraintStatement()) == false)
            return false;
        if (other.getGeoMatchStatement() == null ^ this.getGeoMatchStatement() == null)
            return false;
        if (other.getGeoMatchStatement() != null && other.getGeoMatchStatement().equals(this.getGeoMatchStatement()) == false)
            return false;
        if (other.getRuleGroupReferenceStatement() == null ^ this.getRuleGroupReferenceStatement() == null)
            return false;
        if (other.getRuleGroupReferenceStatement() != null && other.getRuleGroupReferenceStatement().equals(this.getRuleGroupReferenceStatement()) == false)
            return false;
        if (other.getIPSetReferenceStatement() == null ^ this.getIPSetReferenceStatement() == null)
            return false;
        if (other.getIPSetReferenceStatement() != null && other.getIPSetReferenceStatement().equals(this.getIPSetReferenceStatement()) == false)
            return false;
        if (other.getRegexPatternSetReferenceStatement() == null ^ this.getRegexPatternSetReferenceStatement() == null)
            return false;
        if (other.getRegexPatternSetReferenceStatement() != null
                && other.getRegexPatternSetReferenceStatement().equals(this.getRegexPatternSetReferenceStatement()) == false)
            return false;
        if (other.getRateBasedStatement() == null ^ this.getRateBasedStatement() == null)
            return false;
        if (other.getRateBasedStatement() != null && other.getRateBasedStatement().equals(this.getRateBasedStatement()) == false)
            return false;
        if (other.getAndStatement() == null ^ this.getAndStatement() == null)
            return false;
        if (other.getAndStatement() != null && other.getAndStatement().equals(this.getAndStatement()) == false)
            return false;
        if (other.getOrStatement() == null ^ this.getOrStatement() == null)
            return false;
        if (other.getOrStatement() != null && other.getOrStatement().equals(this.getOrStatement()) == false)
            return false;
        if (other.getNotStatement() == null ^ this.getNotStatement() == null)
            return false;
        if (other.getNotStatement() != null && other.getNotStatement().equals(this.getNotStatement()) == false)
            return false;
        if (other.getManagedRuleGroupStatement() == null ^ this.getManagedRuleGroupStatement() == null)
            return false;
        if (other.getManagedRuleGroupStatement() != null && other.getManagedRuleGroupStatement().equals(this.getManagedRuleGroupStatement()) == false)
            return false;
        if (other.getLabelMatchStatement() == null ^ this.getLabelMatchStatement() == null)
            return false;
        if (other.getLabelMatchStatement() != null && other.getLabelMatchStatement().equals(this.getLabelMatchStatement()) == false)
            return false;
        if (other.getRegexMatchStatement() == null ^ this.getRegexMatchStatement() == null)
            return false;
        if (other.getRegexMatchStatement() != null && other.getRegexMatchStatement().equals(this.getRegexMatchStatement()) == 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-wafv2/src/main/java/com/amazonaws/services/wafv2/model/Statement.java