/*
 * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */
package com.amazonaws.services.simpleemailv2.model;

import java.io.Serializable;
import javax.annotation.Generated;

/**
 * <p>
 * A list of details about the email-sending capabilities of your Amazon SES account in the current Amazon Web Services
 * Region.
 * </p>
 * 
 * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/sesv2-2019-09-27/GetAccount" target="_top">AWS API
 *      Documentation</a>
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class GetAccountResult extends com.amazonaws.AmazonWebServiceResult<com.amazonaws.ResponseMetadata> implements Serializable, Cloneable {

    /**
     * <p>
     * Indicates whether or not the automatic warm-up feature is enabled for dedicated IP addresses that are associated
     * with your account.
     * </p>
     */
    private Boolean dedicatedIpAutoWarmupEnabled;
    /**
     * <p>
     * The reputation status of your Amazon SES account. The status can be one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <code>HEALTHY</code> – There are no reputation-related issues that currently impact your account.
     * </p>
     * </li>
     * <li>
     * <p>
     * <code>PROBATION</code> – We've identified potential issues with your Amazon SES account. We're placing your
     * account under review while you work on correcting these issues.
     * </p>
     * </li>
     * <li>
     * <p>
     * <code>SHUTDOWN</code> – Your account's ability to send email is currently paused because of an issue with the
     * email sent from your account. When you correct the issue, you can contact us and request that your account's
     * ability to send email is resumed.
     * </p>
     * </li>
     * </ul>
     */
    private String enforcementStatus;
    /**
     * <p>
     * Indicates whether or not your account has production access in the current Amazon Web Services Region.
     * </p>
     * <p>
     * If the value is <code>false</code>, then your account is in the <i>sandbox</i>. When your account is in the
     * sandbox, you can only send email to verified identities. Additionally, the maximum number of emails you can send
     * in a 24-hour period (your sending quota) is 200, and the maximum number of emails you can send per second (your
     * maximum sending rate) is 1.
     * </p>
     * <p>
     * If the value is <code>true</code>, then your account has production access. When your account has production
     * access, you can send email to any address. The sending quota and maximum sending rate for your account vary based
     * on your specific use case.
     * </p>
     */
    private Boolean productionAccessEnabled;
    /**
     * <p>
     * An object that contains information about the per-day and per-second sending limits for your Amazon SES account
     * in the current Amazon Web Services Region.
     * </p>
     */
    private SendQuota sendQuota;
    /**
     * <p>
     * Indicates whether or not email sending is enabled for your Amazon SES account in the current Amazon Web Services
     * Region.
     * </p>
     */
    private Boolean sendingEnabled;
    /**
     * <p>
     * An object that contains information about the email address suppression preferences for your account in the
     * current Amazon Web Services Region.
     * </p>
     */
    private SuppressionAttributes suppressionAttributes;
    /**
     * <p>
     * An object that defines your account details.
     * </p>
     */
    private AccountDetails details;
    /**
     * <p>
     * The VDM attributes that apply to your Amazon SES account.
     * </p>
     */
    private VdmAttributes vdmAttributes;

    /**
     * <p>
     * Indicates whether or not the automatic warm-up feature is enabled for dedicated IP addresses that are associated
     * with your account.
     * </p>
     * 
     * @param dedicatedIpAutoWarmupEnabled
     *        Indicates whether or not the automatic warm-up feature is enabled for dedicated IP addresses that are
     *        associated with your account.
     */

    public void setDedicatedIpAutoWarmupEnabled(Boolean dedicatedIpAutoWarmupEnabled) {
        this.dedicatedIpAutoWarmupEnabled = dedicatedIpAutoWarmupEnabled;
    }

    /**
     * <p>
     * Indicates whether or not the automatic warm-up feature is enabled for dedicated IP addresses that are associated
     * with your account.
     * </p>
     * 
     * @return Indicates whether or not the automatic warm-up feature is enabled for dedicated IP addresses that are
     *         associated with your account.
     */

    public Boolean getDedicatedIpAutoWarmupEnabled() {
        return this.dedicatedIpAutoWarmupEnabled;
    }

    /**
     * <p>
     * Indicates whether or not the automatic warm-up feature is enabled for dedicated IP addresses that are associated
     * with your account.
     * </p>
     * 
     * @param dedicatedIpAutoWarmupEnabled
     *        Indicates whether or not the automatic warm-up feature is enabled for dedicated IP addresses that are
     *        associated with your account.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public GetAccountResult withDedicatedIpAutoWarmupEnabled(Boolean dedicatedIpAutoWarmupEnabled) {
        setDedicatedIpAutoWarmupEnabled(dedicatedIpAutoWarmupEnabled);
        return this;
    }

    /**
     * <p>
     * Indicates whether or not the automatic warm-up feature is enabled for dedicated IP addresses that are associated
     * with your account.
     * </p>
     * 
     * @return Indicates whether or not the automatic warm-up feature is enabled for dedicated IP addresses that are
     *         associated with your account.
     */

    public Boolean isDedicatedIpAutoWarmupEnabled() {
        return this.dedicatedIpAutoWarmupEnabled;
    }

    /**
     * <p>
     * The reputation status of your Amazon SES account. The status can be one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <code>HEALTHY</code> – There are no reputation-related issues that currently impact your account.
     * </p>
     * </li>
     * <li>
     * <p>
     * <code>PROBATION</code> – We've identified potential issues with your Amazon SES account. We're placing your
     * account under review while you work on correcting these issues.
     * </p>
     * </li>
     * <li>
     * <p>
     * <code>SHUTDOWN</code> – Your account's ability to send email is currently paused because of an issue with the
     * email sent from your account. When you correct the issue, you can contact us and request that your account's
     * ability to send email is resumed.
     * </p>
     * </li>
     * </ul>
     * 
     * @param enforcementStatus
     *        The reputation status of your Amazon SES account. The status can be one of the following:</p>
     *        <ul>
     *        <li>
     *        <p>
     *        <code>HEALTHY</code> – There are no reputation-related issues that currently impact your account.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <code>PROBATION</code> – We've identified potential issues with your Amazon SES account. We're placing
     *        your account under review while you work on correcting these issues.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <code>SHUTDOWN</code> – Your account's ability to send email is currently paused because of an issue with
     *        the email sent from your account. When you correct the issue, you can contact us and request that your
     *        account's ability to send email is resumed.
     *        </p>
     *        </li>
     */

    public void setEnforcementStatus(String enforcementStatus) {
        this.enforcementStatus = enforcementStatus;
    }

    /**
     * <p>
     * The reputation status of your Amazon SES account. The status can be one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <code>HEALTHY</code> – There are no reputation-related issues that currently impact your account.
     * </p>
     * </li>
     * <li>
     * <p>
     * <code>PROBATION</code> – We've identified potential issues with your Amazon SES account. We're placing your
     * account under review while you work on correcting these issues.
     * </p>
     * </li>
     * <li>
     * <p>
     * <code>SHUTDOWN</code> – Your account's ability to send email is currently paused because of an issue with the
     * email sent from your account. When you correct the issue, you can contact us and request that your account's
     * ability to send email is resumed.
     * </p>
     * </li>
     * </ul>
     * 
     * @return The reputation status of your Amazon SES account. The status can be one of the following:</p>
     *         <ul>
     *         <li>
     *         <p>
     *         <code>HEALTHY</code> – There are no reputation-related issues that currently impact your account.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <code>PROBATION</code> – We've identified potential issues with your Amazon SES account. We're placing
     *         your account under review while you work on correcting these issues.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <code>SHUTDOWN</code> – Your account's ability to send email is currently paused because of an issue with
     *         the email sent from your account. When you correct the issue, you can contact us and request that your
     *         account's ability to send email is resumed.
     *         </p>
     *         </li>
     */

    public String getEnforcementStatus() {
        return this.enforcementStatus;
    }

    /**
     * <p>
     * The reputation status of your Amazon SES account. The status can be one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <code>HEALTHY</code> – There are no reputation-related issues that currently impact your account.
     * </p>
     * </li>
     * <li>
     * <p>
     * <code>PROBATION</code> – We've identified potential issues with your Amazon SES account. We're placing your
     * account under review while you work on correcting these issues.
     * </p>
     * </li>
     * <li>
     * <p>
     * <code>SHUTDOWN</code> – Your account's ability to send email is currently paused because of an issue with the
     * email sent from your account. When you correct the issue, you can contact us and request that your account's
     * ability to send email is resumed.
     * </p>
     * </li>
     * </ul>
     * 
     * @param enforcementStatus
     *        The reputation status of your Amazon SES account. The status can be one of the following:</p>
     *        <ul>
     *        <li>
     *        <p>
     *        <code>HEALTHY</code> – There are no reputation-related issues that currently impact your account.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <code>PROBATION</code> – We've identified potential issues with your Amazon SES account. We're placing
     *        your account under review while you work on correcting these issues.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <code>SHUTDOWN</code> – Your account's ability to send email is currently paused because of an issue with
     *        the email sent from your account. When you correct the issue, you can contact us and request that your
     *        account's ability to send email is resumed.
     *        </p>
     *        </li>
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public GetAccountResult withEnforcementStatus(String enforcementStatus) {
        setEnforcementStatus(enforcementStatus);
        return this;
    }

    /**
     * <p>
     * Indicates whether or not your account has production access in the current Amazon Web Services Region.
     * </p>
     * <p>
     * If the value is <code>false</code>, then your account is in the <i>sandbox</i>. When your account is in the
     * sandbox, you can only send email to verified identities. Additionally, the maximum number of emails you can send
     * in a 24-hour period (your sending quota) is 200, and the maximum number of emails you can send per second (your
     * maximum sending rate) is 1.
     * </p>
     * <p>
     * If the value is <code>true</code>, then your account has production access. When your account has production
     * access, you can send email to any address. The sending quota and maximum sending rate for your account vary based
     * on your specific use case.
     * </p>
     * 
     * @param productionAccessEnabled
     *        Indicates whether or not your account has production access in the current Amazon Web Services Region.</p>
     *        <p>
     *        If the value is <code>false</code>, then your account is in the <i>sandbox</i>. When your account is in
     *        the sandbox, you can only send email to verified identities. Additionally, the maximum number of emails
     *        you can send in a 24-hour period (your sending quota) is 200, and the maximum number of emails you can
     *        send per second (your maximum sending rate) is 1.
     *        </p>
     *        <p>
     *        If the value is <code>true</code>, then your account has production access. When your account has
     *        production access, you can send email to any address. The sending quota and maximum sending rate for your
     *        account vary based on your specific use case.
     */

    public void setProductionAccessEnabled(Boolean productionAccessEnabled) {
        this.productionAccessEnabled = productionAccessEnabled;
    }

    /**
     * <p>
     * Indicates whether or not your account has production access in the current Amazon Web Services Region.
     * </p>
     * <p>
     * If the value is <code>false</code>, then your account is in the <i>sandbox</i>. When your account is in the
     * sandbox, you can only send email to verified identities. Additionally, the maximum number of emails you can send
     * in a 24-hour period (your sending quota) is 200, and the maximum number of emails you can send per second (your
     * maximum sending rate) is 1.
     * </p>
     * <p>
     * If the value is <code>true</code>, then your account has production access. When your account has production
     * access, you can send email to any address. The sending quota and maximum sending rate for your account vary based
     * on your specific use case.
     * </p>
     * 
     * @return Indicates whether or not your account has production access in the current Amazon Web Services
     *         Region.</p>
     *         <p>
     *         If the value is <code>false</code>, then your account is in the <i>sandbox</i>. When your account is in
     *         the sandbox, you can only send email to verified identities. Additionally, the maximum number of emails
     *         you can send in a 24-hour period (your sending quota) is 200, and the maximum number of emails you can
     *         send per second (your maximum sending rate) is 1.
     *         </p>
     *         <p>
     *         If the value is <code>true</code>, then your account has production access. When your account has
     *         production access, you can send email to any address. The sending quota and maximum sending rate for your
     *         account vary based on your specific use case.
     */

    public Boolean getProductionAccessEnabled() {
        return this.productionAccessEnabled;
    }

    /**
     * <p>
     * Indicates whether or not your account has production access in the current Amazon Web Services Region.
     * </p>
     * <p>
     * If the value is <code>false</code>, then your account is in the <i>sandbox</i>. When your account is in the
     * sandbox, you can only send email to verified identities. Additionally, the maximum number of emails you can send
     * in a 24-hour period (your sending quota) is 200, and the maximum number of emails you can send per second (your
     * maximum sending rate) is 1.
     * </p>
     * <p>
     * If the value is <code>true</code>, then your account has production access. When your account has production
     * access, you can send email to any address. The sending quota and maximum sending rate for your account vary based
     * on your specific use case.
     * </p>
     * 
     * @param productionAccessEnabled
     *        Indicates whether or not your account has production access in the current Amazon Web Services Region.</p>
     *        <p>
     *        If the value is <code>false</code>, then your account is in the <i>sandbox</i>. When your account is in
     *        the sandbox, you can only send email to verified identities. Additionally, the maximum number of emails
     *        you can send in a 24-hour period (your sending quota) is 200, and the maximum number of emails you can
     *        send per second (your maximum sending rate) is 1.
     *        </p>
     *        <p>
     *        If the value is <code>true</code>, then your account has production access. When your account has
     *        production access, you can send email to any address. The sending quota and maximum sending rate for your
     *        account vary based on your specific use case.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public GetAccountResult withProductionAccessEnabled(Boolean productionAccessEnabled) {
        setProductionAccessEnabled(productionAccessEnabled);
        return this;
    }

    /**
     * <p>
     * Indicates whether or not your account has production access in the current Amazon Web Services Region.
     * </p>
     * <p>
     * If the value is <code>false</code>, then your account is in the <i>sandbox</i>. When your account is in the
     * sandbox, you can only send email to verified identities. Additionally, the maximum number of emails you can send
     * in a 24-hour period (your sending quota) is 200, and the maximum number of emails you can send per second (your
     * maximum sending rate) is 1.
     * </p>
     * <p>
     * If the value is <code>true</code>, then your account has production access. When your account has production
     * access, you can send email to any address. The sending quota and maximum sending rate for your account vary based
     * on your specific use case.
     * </p>
     * 
     * @return Indicates whether or not your account has production access in the current Amazon Web Services
     *         Region.</p>
     *         <p>
     *         If the value is <code>false</code>, then your account is in the <i>sandbox</i>. When your account is in
     *         the sandbox, you can only send email to verified identities. Additionally, the maximum number of emails
     *         you can send in a 24-hour period (your sending quota) is 200, and the maximum number of emails you can
     *         send per second (your maximum sending rate) is 1.
     *         </p>
     *         <p>
     *         If the value is <code>true</code>, then your account has production access. When your account has
     *         production access, you can send email to any address. The sending quota and maximum sending rate for your
     *         account vary based on your specific use case.
     */

    public Boolean isProductionAccessEnabled() {
        return this.productionAccessEnabled;
    }

    /**
     * <p>
     * An object that contains information about the per-day and per-second sending limits for your Amazon SES account
     * in the current Amazon Web Services Region.
     * </p>
     * 
     * @param sendQuota
     *        An object that contains information about the per-day and per-second sending limits for your Amazon SES
     *        account in the current Amazon Web Services Region.
     */

    public void setSendQuota(SendQuota sendQuota) {
        this.sendQuota = sendQuota;
    }

    /**
     * <p>
     * An object that contains information about the per-day and per-second sending limits for your Amazon SES account
     * in the current Amazon Web Services Region.
     * </p>
     * 
     * @return An object that contains information about the per-day and per-second sending limits for your Amazon SES
     *         account in the current Amazon Web Services Region.
     */

    public SendQuota getSendQuota() {
        return this.sendQuota;
    }

    /**
     * <p>
     * An object that contains information about the per-day and per-second sending limits for your Amazon SES account
     * in the current Amazon Web Services Region.
     * </p>
     * 
     * @param sendQuota
     *        An object that contains information about the per-day and per-second sending limits for your Amazon SES
     *        account in the current Amazon Web Services Region.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public GetAccountResult withSendQuota(SendQuota sendQuota) {
        setSendQuota(sendQuota);
        return this;
    }

    /**
     * <p>
     * Indicates whether or not email sending is enabled for your Amazon SES account in the current Amazon Web Services
     * Region.
     * </p>
     * 
     * @param sendingEnabled
     *        Indicates whether or not email sending is enabled for your Amazon SES account in the current Amazon Web
     *        Services Region.
     */

    public void setSendingEnabled(Boolean sendingEnabled) {
        this.sendingEnabled = sendingEnabled;
    }

    /**
     * <p>
     * Indicates whether or not email sending is enabled for your Amazon SES account in the current Amazon Web Services
     * Region.
     * </p>
     * 
     * @return Indicates whether or not email sending is enabled for your Amazon SES account in the current Amazon Web
     *         Services Region.
     */

    public Boolean getSendingEnabled() {
        return this.sendingEnabled;
    }

    /**
     * <p>
     * Indicates whether or not email sending is enabled for your Amazon SES account in the current Amazon Web Services
     * Region.
     * </p>
     * 
     * @param sendingEnabled
     *        Indicates whether or not email sending is enabled for your Amazon SES account in the current Amazon Web
     *        Services Region.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public GetAccountResult withSendingEnabled(Boolean sendingEnabled) {
        setSendingEnabled(sendingEnabled);
        return this;
    }

    /**
     * <p>
     * Indicates whether or not email sending is enabled for your Amazon SES account in the current Amazon Web Services
     * Region.
     * </p>
     * 
     * @return Indicates whether or not email sending is enabled for your Amazon SES account in the current Amazon Web
     *         Services Region.
     */

    public Boolean isSendingEnabled() {
        return this.sendingEnabled;
    }

    /**
     * <p>
     * An object that contains information about the email address suppression preferences for your account in the
     * current Amazon Web Services Region.
     * </p>
     * 
     * @param suppressionAttributes
     *        An object that contains information about the email address suppression preferences for your account in
     *        the current Amazon Web Services Region.
     */

    public void setSuppressionAttributes(SuppressionAttributes suppressionAttributes) {
        this.suppressionAttributes = suppressionAttributes;
    }

    /**
     * <p>
     * An object that contains information about the email address suppression preferences for your account in the
     * current Amazon Web Services Region.
     * </p>
     * 
     * @return An object that contains information about the email address suppression preferences for your account in
     *         the current Amazon Web Services Region.
     */

    public SuppressionAttributes getSuppressionAttributes() {
        return this.suppressionAttributes;
    }

    /**
     * <p>
     * An object that contains information about the email address suppression preferences for your account in the
     * current Amazon Web Services Region.
     * </p>
     * 
     * @param suppressionAttributes
     *        An object that contains information about the email address suppression preferences for your account in
     *        the current Amazon Web Services Region.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public GetAccountResult withSuppressionAttributes(SuppressionAttributes suppressionAttributes) {
        setSuppressionAttributes(suppressionAttributes);
        return this;
    }

    /**
     * <p>
     * An object that defines your account details.
     * </p>
     * 
     * @param details
     *        An object that defines your account details.
     */

    public void setDetails(AccountDetails details) {
        this.details = details;
    }

    /**
     * <p>
     * An object that defines your account details.
     * </p>
     * 
     * @return An object that defines your account details.
     */

    public AccountDetails getDetails() {
        return this.details;
    }

    /**
     * <p>
     * An object that defines your account details.
     * </p>
     * 
     * @param details
     *        An object that defines your account details.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public GetAccountResult withDetails(AccountDetails details) {
        setDetails(details);
        return this;
    }

    /**
     * <p>
     * The VDM attributes that apply to your Amazon SES account.
     * </p>
     * 
     * @param vdmAttributes
     *        The VDM attributes that apply to your Amazon SES account.
     */

    public void setVdmAttributes(VdmAttributes vdmAttributes) {
        this.vdmAttributes = vdmAttributes;
    }

    /**
     * <p>
     * The VDM attributes that apply to your Amazon SES account.
     * </p>
     * 
     * @return The VDM attributes that apply to your Amazon SES account.
     */

    public VdmAttributes getVdmAttributes() {
        return this.vdmAttributes;
    }

    /**
     * <p>
     * The VDM attributes that apply to your Amazon SES account.
     * </p>
     * 
     * @param vdmAttributes
     *        The VDM attributes that apply to your Amazon SES account.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public GetAccountResult withVdmAttributes(VdmAttributes vdmAttributes) {
        setVdmAttributes(vdmAttributes);
        return this;
    }

    /**
     * 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()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getDedicatedIpAutoWarmupEnabled() != null)
            sb.append("DedicatedIpAutoWarmupEnabled: ").append(getDedicatedIpAutoWarmupEnabled()).append(",");
        if (getEnforcementStatus() != null)
            sb.append("EnforcementStatus: ").append(getEnforcementStatus()).append(",");
        if (getProductionAccessEnabled() != null)
            sb.append("ProductionAccessEnabled: ").append(getProductionAccessEnabled()).append(",");
        if (getSendQuota() != null)
            sb.append("SendQuota: ").append(getSendQuota()).append(",");
        if (getSendingEnabled() != null)
            sb.append("SendingEnabled: ").append(getSendingEnabled()).append(",");
        if (getSuppressionAttributes() != null)
            sb.append("SuppressionAttributes: ").append(getSuppressionAttributes()).append(",");
        if (getDetails() != null)
            sb.append("Details: ").append(getDetails()).append(",");
        if (getVdmAttributes() != null)
            sb.append("VdmAttributes: ").append(getVdmAttributes());
        sb.append("}");
        return sb.toString();
    }

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

        if (obj instanceof GetAccountResult == false)
            return false;
        GetAccountResult other = (GetAccountResult) obj;
        if (other.getDedicatedIpAutoWarmupEnabled() == null ^ this.getDedicatedIpAutoWarmupEnabled() == null)
            return false;
        if (other.getDedicatedIpAutoWarmupEnabled() != null && other.getDedicatedIpAutoWarmupEnabled().equals(this.getDedicatedIpAutoWarmupEnabled()) == false)
            return false;
        if (other.getEnforcementStatus() == null ^ this.getEnforcementStatus() == null)
            return false;
        if (other.getEnforcementStatus() != null && other.getEnforcementStatus().equals(this.getEnforcementStatus()) == false)
            return false;
        if (other.getProductionAccessEnabled() == null ^ this.getProductionAccessEnabled() == null)
            return false;
        if (other.getProductionAccessEnabled() != null && other.getProductionAccessEnabled().equals(this.getProductionAccessEnabled()) == false)
            return false;
        if (other.getSendQuota() == null ^ this.getSendQuota() == null)
            return false;
        if (other.getSendQuota() != null && other.getSendQuota().equals(this.getSendQuota()) == false)
            return false;
        if (other.getSendingEnabled() == null ^ this.getSendingEnabled() == null)
            return false;
        if (other.getSendingEnabled() != null && other.getSendingEnabled().equals(this.getSendingEnabled()) == false)
            return false;
        if (other.getSuppressionAttributes() == null ^ this.getSuppressionAttributes() == null)
            return false;
        if (other.getSuppressionAttributes() != null && other.getSuppressionAttributes().equals(this.getSuppressionAttributes()) == false)
            return false;
        if (other.getDetails() == null ^ this.getDetails() == null)
            return false;
        if (other.getDetails() != null && other.getDetails().equals(this.getDetails()) == false)
            return false;
        if (other.getVdmAttributes() == null ^ this.getVdmAttributes() == null)
            return false;
        if (other.getVdmAttributes() != null && other.getVdmAttributes().equals(this.getVdmAttributes()) == false)
            return false;
        return true;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;

        hashCode = prime * hashCode + ((getDedicatedIpAutoWarmupEnabled() == null) ? 0 : getDedicatedIpAutoWarmupEnabled().hashCode());
        hashCode = prime * hashCode + ((getEnforcementStatus() == null) ? 0 : getEnforcementStatus().hashCode());
        hashCode = prime * hashCode + ((getProductionAccessEnabled() == null) ? 0 : getProductionAccessEnabled().hashCode());
        hashCode = prime * hashCode + ((getSendQuota() == null) ? 0 : getSendQuota().hashCode());
        hashCode = prime * hashCode + ((getSendingEnabled() == null) ? 0 : getSendingEnabled().hashCode());
        hashCode = prime * hashCode + ((getSuppressionAttributes() == null) ? 0 : getSuppressionAttributes().hashCode());
        hashCode = prime * hashCode + ((getDetails() == null) ? 0 : getDetails().hashCode());
        hashCode = prime * hashCode + ((getVdmAttributes() == null) ? 0 : getVdmAttributes().hashCode());
        return hashCode;
    }

    @Override
    public GetAccountResult clone() {
        try {
            return (GetAccountResult) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
        }
    }

}