content: /*
   * Legal Entity Management API
   *
   * The version of the OpenAPI document: 4
   *
   *
   * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
   * https://openapi-generator.tech
   * Do not edit the class manually.
   */
  
  package com.adyen.model.legalentitymanagement;
  
  import com.fasterxml.jackson.annotation.JsonCreator;
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  import com.fasterxml.jackson.annotation.JsonValue;
  import com.fasterxml.jackson.core.JsonProcessingException;
  import java.util.*;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.List;
  import java.util.logging.Logger;
  
  /** Organization */
  @JsonPropertyOrder({
    Organization.JSON_PROPERTY_COUNTRY_OF_GOVERNING_LAW,
    Organization.JSON_PROPERTY_DATE_OF_INCORPORATION,
    Organization.JSON_PROPERTY_DATE_OF_INITIATION_OF_LEGAL_PROCEEDING,
    Organization.JSON_PROPERTY_DESCRIPTION,
    Organization.JSON_PROPERTY_DOING_BUSINESS_AS,
    Organization.JSON_PROPERTY_DOING_BUSINESS_AS_ABSENT,
    Organization.JSON_PROPERTY_ECONOMIC_SECTOR,
    Organization.JSON_PROPERTY_EMAIL,
    Organization.JSON_PROPERTY_FINANCIAL_REPORTS,
    Organization.JSON_PROPERTY_GLOBAL_LEGAL_ENTITY_IDENTIFIER,
    Organization.JSON_PROPERTY_HEAD_OFFICE_INDICATOR,
    Organization.JSON_PROPERTY_INSTITUTIONAL_SECTOR,
    Organization.JSON_PROPERTY_LEGAL_FORM,
    Organization.JSON_PROPERTY_LEGAL_NAME,
    Organization.JSON_PROPERTY_PHONE,
    Organization.JSON_PROPERTY_PRINCIPAL_PLACE_OF_BUSINESS,
    Organization.JSON_PROPERTY_REGISTERED_ADDRESS,
    Organization.JSON_PROPERTY_REGISTRATION_NUMBER,
    Organization.JSON_PROPERTY_REGISTRATION_NUMBER_ABSENT,
    Organization.JSON_PROPERTY_STATUS_OF_LEGAL_PROCEEDING,
    Organization.JSON_PROPERTY_STOCK_DATA,
    Organization.JSON_PROPERTY_SUPPORT,
    Organization.JSON_PROPERTY_TAX_INFORMATION,
    Organization.JSON_PROPERTY_TAX_REPORTING_CLASSIFICATION,
    Organization.JSON_PROPERTY_TYPE,
    Organization.JSON_PROPERTY_VAT_ABSENCE_REASON,
    Organization.JSON_PROPERTY_VAT_NUMBER,
    Organization.JSON_PROPERTY_WEB_DATA
  })
  public class Organization {
    public static final String JSON_PROPERTY_COUNTRY_OF_GOVERNING_LAW = "countryOfGoverningLaw";
    private String countryOfGoverningLaw;
  
    public static final String JSON_PROPERTY_DATE_OF_INCORPORATION = "dateOfIncorporation";
    private String dateOfIncorporation;
  
    public static final String JSON_PROPERTY_DATE_OF_INITIATION_OF_LEGAL_PROCEEDING =
        "dateOfInitiationOfLegalProceeding";
    private String dateOfInitiationOfLegalProceeding;
  
    public static final String JSON_PROPERTY_DESCRIPTION = "description";
    private String description;
  
    public static final String JSON_PROPERTY_DOING_BUSINESS_AS = "doingBusinessAs";
    private String doingBusinessAs;
  
    public static final String JSON_PROPERTY_DOING_BUSINESS_AS_ABSENT = "doingBusinessAsAbsent";
    private Boolean doingBusinessAsAbsent;
  
    public static final String JSON_PROPERTY_ECONOMIC_SECTOR = "economicSector";
    private String economicSector;
  
    public static final String JSON_PROPERTY_EMAIL = "email";
    private String email;
  
    public static final String JSON_PROPERTY_FINANCIAL_REPORTS = "financialReports";
    private List<FinancialReport> financialReports;
  
    public static final String JSON_PROPERTY_GLOBAL_LEGAL_ENTITY_IDENTIFIER =
        "globalLegalEntityIdentifier";
    private String globalLegalEntityIdentifier;
  
    public static final String JSON_PROPERTY_HEAD_OFFICE_INDICATOR = "headOfficeIndicator";
    private Boolean headOfficeIndicator;
  
    /** The institutional sector the organization operates within. */
    public enum InstitutionalSectorEnum {
      NONFINANCIALCORPORATION(String.valueOf("nonFinancialCorporation")),
  
      CENTRALBANK(String.valueOf("centralBank")),
  
      CREDITINSTITUTIONS(String.valueOf("creditInstitutions")),
  
      DEPOSITTAKINGCORPORATIONS(String.valueOf("depositTakingCorporations")),
  
      MONEYMARKETFUNDS(String.valueOf("moneyMarketFunds")),
  
      NONMMFINVESTMENTFUNDS(String.valueOf("nonMMFInvestmentFunds")),
  
      FINANCIALVEHICLECORPORATION(String.valueOf("financialVehicleCorporation")),
  
      OTHERFINANCIALINTERMEDIARIES(String.valueOf("otherFinancialIntermediaries")),
  
      FINANCIALAUXILIARIES(String.valueOf("financialAuxiliaries")),
  
      CAPTIVEFINANCIALINSTITUTIONSANDMONEYLENDERS(
          String.valueOf("captiveFinancialInstitutionsAndMoneyLenders")),
  
      INSURANCECORPORATIONS(String.valueOf("insuranceCorporations")),
  
      PENSIONFUNDS(String.valueOf("pensionFunds")),
  
      CENTRALGOVERNMENT(String.valueOf("centralGovernment")),
  
      STATEGOVERNMENT(String.valueOf("stateGovernment")),
  
      LOCALGOVERNMENT(String.valueOf("localGovernment")),
  
      SOCIALSECURITYFUNDS(String.valueOf("socialSecurityFunds")),
  
      NONPROFITINSTITUTIONSSERVINGHOUSEHOLDS(
          String.valueOf("nonProfitInstitutionsServingHouseholds"));
  
      private static final Logger LOG = Logger.getLogger(InstitutionalSectorEnum.class.getName());
  
      private String value;
  
      InstitutionalSectorEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static InstitutionalSectorEnum fromValue(String value) {
        for (InstitutionalSectorEnum b : InstitutionalSectorEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "InstitutionalSectorEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(InstitutionalSectorEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_INSTITUTIONAL_SECTOR = "institutionalSector";
    private InstitutionalSectorEnum institutionalSector;
  
    public static final String JSON_PROPERTY_LEGAL_FORM = "legalForm";
    private String legalForm;
  
    public static final String JSON_PROPERTY_LEGAL_NAME = "legalName";
    private String legalName;
  
    public static final String JSON_PROPERTY_PHONE = "phone";
    private PhoneNumber phone;
  
    public static final String JSON_PROPERTY_PRINCIPAL_PLACE_OF_BUSINESS = "principalPlaceOfBusiness";
    private Address principalPlaceOfBusiness;
  
    public static final String JSON_PROPERTY_REGISTERED_ADDRESS = "registeredAddress";
    private Address registeredAddress;
  
    public static final String JSON_PROPERTY_REGISTRATION_NUMBER = "registrationNumber";
    private String registrationNumber;
  
    public static final String JSON_PROPERTY_REGISTRATION_NUMBER_ABSENT = "registrationNumberAbsent";
    private Boolean registrationNumberAbsent;
  
    /**
     * The status of any current or past legal action taken against the legal entity. Possible values:
     * **noLegalActionsTaken**, **underJudicialAdministration**, **bankruptcyInsolvency**,
     * **otherLegalMeasures** If the value of this field is **noLegalActionsTaken**, then
     * &#x60;dateOfInitiationOfLegalProceeding&#x60; is not required. Otherwise, it is required.
     */
    public enum StatusOfLegalProceedingEnum {
      NOLEGALACTIONSTAKEN(String.valueOf("noLegalActionsTaken")),
  
      UNDERJUDICIALADMINISTRATION(String.valueOf("underJudicialAdministration")),
  
      BANKRUPTCYINSOLVENCY(String.valueOf("bankruptcyInsolvency")),
  
      OTHERLEGALMEASURES(String.valueOf("otherLegalMeasures"));
  
      private static final Logger LOG = Logger.getLogger(StatusOfLegalProceedingEnum.class.getName());
  
      private String value;
  
      StatusOfLegalProceedingEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static StatusOfLegalProceedingEnum fromValue(String value) {
        for (StatusOfLegalProceedingEnum b : StatusOfLegalProceedingEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "StatusOfLegalProceedingEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(StatusOfLegalProceedingEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_STATUS_OF_LEGAL_PROCEEDING = "statusOfLegalProceeding";
    private StatusOfLegalProceedingEnum statusOfLegalProceeding;
  
    public static final String JSON_PROPERTY_STOCK_DATA = "stockData";
    private StockData stockData;
  
    public static final String JSON_PROPERTY_SUPPORT = "support";
    private Support support;
  
    public static final String JSON_PROPERTY_TAX_INFORMATION = "taxInformation";
    private List<TaxInformation> taxInformation;
  
    public static final String JSON_PROPERTY_TAX_REPORTING_CLASSIFICATION =
        "taxReportingClassification";
    private TaxReportingClassification taxReportingClassification;
  
    /**
     * Type of organization. Possible values: **associationIncorporated**,
     * **governmentalOrganization**, **listedPublicCompany**, **nonProfit**,
     * **partnershipIncorporated**, **privateCompany**.
     */
    public enum TypeEnum {
      ASSOCIATIONINCORPORATED(String.valueOf("associationIncorporated")),
  
      GOVERNMENTALORGANIZATION(String.valueOf("governmentalOrganization")),
  
      LISTEDPUBLICCOMPANY(String.valueOf("listedPublicCompany")),
  
      NONPROFIT(String.valueOf("nonProfit")),
  
      PARTNERSHIPINCORPORATED(String.valueOf("partnershipIncorporated")),
  
      PRIVATECOMPANY(String.valueOf("privateCompany"));
  
      private static final Logger LOG = Logger.getLogger(TypeEnum.class.getName());
  
      private String value;
  
      TypeEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static TypeEnum fromValue(String value) {
        for (TypeEnum b : TypeEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "TypeEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(TypeEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_TYPE = "type";
    private TypeEnum type;
  
    /**
     * The reason the organization has not provided a VAT number. Possible values:
     * **industryExemption**, **belowTaxThreshold**.
     */
    public enum VatAbsenceReasonEnum {
      INDUSTRYEXEMPTION(String.valueOf("industryExemption")),
  
      BELOWTAXTHRESHOLD(String.valueOf("belowTaxThreshold"));
  
      private static final Logger LOG = Logger.getLogger(VatAbsenceReasonEnum.class.getName());
  
      private String value;
  
      VatAbsenceReasonEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static VatAbsenceReasonEnum fromValue(String value) {
        for (VatAbsenceReasonEnum b : VatAbsenceReasonEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "VatAbsenceReasonEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(VatAbsenceReasonEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_VAT_ABSENCE_REASON = "vatAbsenceReason";
    private VatAbsenceReasonEnum vatAbsenceReason;
  
    public static final String JSON_PROPERTY_VAT_NUMBER = "vatNumber";
    private String vatNumber;
  
    public static final String JSON_PROPERTY_WEB_DATA = "webData";
    private WebData webData;
  
    public Organization() {}
  
    /**
     * The two-character [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
     * country code of the governing country.
     *
     * @param countryOfGoverningLaw The two-character [ISO 3166-1
     *     alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the governing
     *     country.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization countryOfGoverningLaw(String countryOfGoverningLaw) {
      this.countryOfGoverningLaw = countryOfGoverningLaw;
      return this;
    }
  
    /**
     * The two-character [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
     * country code of the governing country.
     *
     * @return countryOfGoverningLaw The two-character [ISO 3166-1
     *     alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the governing
     *     country.
     */
    @JsonProperty(JSON_PROPERTY_COUNTRY_OF_GOVERNING_LAW)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getCountryOfGoverningLaw() {
      return countryOfGoverningLaw;
    }
  
    /**
     * The two-character [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
     * country code of the governing country.
     *
     * @param countryOfGoverningLaw The two-character [ISO 3166-1
     *     alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the governing
     *     country.
     */
    @JsonProperty(JSON_PROPERTY_COUNTRY_OF_GOVERNING_LAW)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setCountryOfGoverningLaw(String countryOfGoverningLaw) {
      this.countryOfGoverningLaw = countryOfGoverningLaw;
    }
  
    /**
     * The date when the organization was incorporated in YYYY-MM-DD format.
     *
     * @param dateOfIncorporation The date when the organization was incorporated in YYYY-MM-DD
     *     format.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization dateOfIncorporation(String dateOfIncorporation) {
      this.dateOfIncorporation = dateOfIncorporation;
      return this;
    }
  
    /**
     * The date when the organization was incorporated in YYYY-MM-DD format.
     *
     * @return dateOfIncorporation The date when the organization was incorporated in YYYY-MM-DD
     *     format.
     */
    @JsonProperty(JSON_PROPERTY_DATE_OF_INCORPORATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getDateOfIncorporation() {
      return dateOfIncorporation;
    }
  
    /**
     * The date when the organization was incorporated in YYYY-MM-DD format.
     *
     * @param dateOfIncorporation The date when the organization was incorporated in YYYY-MM-DD
     *     format.
     */
    @JsonProperty(JSON_PROPERTY_DATE_OF_INCORPORATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setDateOfIncorporation(String dateOfIncorporation) {
      this.dateOfIncorporation = dateOfIncorporation;
    }
  
    /**
     * Required if the value of &#x60;statusOfLegalProceeding&#x60; is one of the following:
     * **underJudicialAdministration**, **bankruptcyInsolvency**, **otherLegalMeasures** The date at
     * which a legal proceeding was initiated, in **YYYY-MM-DD** format. Example: **2000-02-12**
     *
     * @param dateOfInitiationOfLegalProceeding Required if the value of
     *     &#x60;statusOfLegalProceeding&#x60; is one of the following:
     *     **underJudicialAdministration**, **bankruptcyInsolvency**, **otherLegalMeasures** The date
     *     at which a legal proceeding was initiated, in **YYYY-MM-DD** format. Example:
     *     **2000-02-12**
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization dateOfInitiationOfLegalProceeding(String dateOfInitiationOfLegalProceeding) {
      this.dateOfInitiationOfLegalProceeding = dateOfInitiationOfLegalProceeding;
      return this;
    }
  
    /**
     * Required if the value of &#x60;statusOfLegalProceeding&#x60; is one of the following:
     * **underJudicialAdministration**, **bankruptcyInsolvency**, **otherLegalMeasures** The date at
     * which a legal proceeding was initiated, in **YYYY-MM-DD** format. Example: **2000-02-12**
     *
     * @return dateOfInitiationOfLegalProceeding Required if the value of
     *     &#x60;statusOfLegalProceeding&#x60; is one of the following:
     *     **underJudicialAdministration**, **bankruptcyInsolvency**, **otherLegalMeasures** The date
     *     at which a legal proceeding was initiated, in **YYYY-MM-DD** format. Example:
     *     **2000-02-12**
     */
    @JsonProperty(JSON_PROPERTY_DATE_OF_INITIATION_OF_LEGAL_PROCEEDING)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getDateOfInitiationOfLegalProceeding() {
      return dateOfInitiationOfLegalProceeding;
    }
  
    /**
     * Required if the value of &#x60;statusOfLegalProceeding&#x60; is one of the following:
     * **underJudicialAdministration**, **bankruptcyInsolvency**, **otherLegalMeasures** The date at
     * which a legal proceeding was initiated, in **YYYY-MM-DD** format. Example: **2000-02-12**
     *
     * @param dateOfInitiationOfLegalProceeding Required if the value of
     *     &#x60;statusOfLegalProceeding&#x60; is one of the following:
     *     **underJudicialAdministration**, **bankruptcyInsolvency**, **otherLegalMeasures** The date
     *     at which a legal proceeding was initiated, in **YYYY-MM-DD** format. Example:
     *     **2000-02-12**
     */
    @JsonProperty(JSON_PROPERTY_DATE_OF_INITIATION_OF_LEGAL_PROCEEDING)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setDateOfInitiationOfLegalProceeding(String dateOfInitiationOfLegalProceeding) {
      this.dateOfInitiationOfLegalProceeding = dateOfInitiationOfLegalProceeding;
    }
  
    /**
     * Your description for the organization.
     *
     * @param description Your description for the organization.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization description(String description) {
      this.description = description;
      return this;
    }
  
    /**
     * Your description for the organization.
     *
     * @return description Your description for the organization.
     */
    @JsonProperty(JSON_PROPERTY_DESCRIPTION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getDescription() {
      return description;
    }
  
    /**
     * Your description for the organization.
     *
     * @param description Your description for the organization.
     */
    @JsonProperty(JSON_PROPERTY_DESCRIPTION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setDescription(String description) {
      this.description = description;
    }
  
    /**
     * The organization&#39;s trading name, if different from the registered legal name.
     *
     * @param doingBusinessAs The organization&#39;s trading name, if different from the registered
     *     legal name.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization doingBusinessAs(String doingBusinessAs) {
      this.doingBusinessAs = doingBusinessAs;
      return this;
    }
  
    /**
     * The organization&#39;s trading name, if different from the registered legal name.
     *
     * @return doingBusinessAs The organization&#39;s trading name, if different from the registered
     *     legal name.
     */
    @JsonProperty(JSON_PROPERTY_DOING_BUSINESS_AS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getDoingBusinessAs() {
      return doingBusinessAs;
    }
  
    /**
     * The organization&#39;s trading name, if different from the registered legal name.
     *
     * @param doingBusinessAs The organization&#39;s trading name, if different from the registered
     *     legal name.
     */
    @JsonProperty(JSON_PROPERTY_DOING_BUSINESS_AS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setDoingBusinessAs(String doingBusinessAs) {
      this.doingBusinessAs = doingBusinessAs;
    }
  
    /**
     * Set this to **true** if the organization or legal arrangement does not have a &#x60;Doing
     * business as&#x60; name.
     *
     * @param doingBusinessAsAbsent Set this to **true** if the organization or legal arrangement does
     *     not have a &#x60;Doing business as&#x60; name.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization doingBusinessAsAbsent(Boolean doingBusinessAsAbsent) {
      this.doingBusinessAsAbsent = doingBusinessAsAbsent;
      return this;
    }
  
    /**
     * Set this to **true** if the organization or legal arrangement does not have a &#x60;Doing
     * business as&#x60; name.
     *
     * @return doingBusinessAsAbsent Set this to **true** if the organization or legal arrangement
     *     does not have a &#x60;Doing business as&#x60; name.
     */
    @JsonProperty(JSON_PROPERTY_DOING_BUSINESS_AS_ABSENT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Boolean getDoingBusinessAsAbsent() {
      return doingBusinessAsAbsent;
    }
  
    /**
     * Set this to **true** if the organization or legal arrangement does not have a &#x60;Doing
     * business as&#x60; name.
     *
     * @param doingBusinessAsAbsent Set this to **true** if the organization or legal arrangement does
     *     not have a &#x60;Doing business as&#x60; name.
     */
    @JsonProperty(JSON_PROPERTY_DOING_BUSINESS_AS_ABSENT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setDoingBusinessAsAbsent(Boolean doingBusinessAsAbsent) {
      this.doingBusinessAsAbsent = doingBusinessAsAbsent;
    }
  
    /**
     * The sector of the economy the legal entity operates within, represented by a 2-4 digit code
     * that may include a \&quot;.\&quot;. Example: 45.11 You can locate economic sector codes for
     * your area by referencing codes defined by the NACE (Nomenclature of Economic Activities) used
     * in the European Union.
     *
     * @param economicSector The sector of the economy the legal entity operates within, represented
     *     by a 2-4 digit code that may include a \&quot;.\&quot;. Example: 45.11 You can locate
     *     economic sector codes for your area by referencing codes defined by the NACE (Nomenclature
     *     of Economic Activities) used in the European Union.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization economicSector(String economicSector) {
      this.economicSector = economicSector;
      return this;
    }
  
    /**
     * The sector of the economy the legal entity operates within, represented by a 2-4 digit code
     * that may include a \&quot;.\&quot;. Example: 45.11 You can locate economic sector codes for
     * your area by referencing codes defined by the NACE (Nomenclature of Economic Activities) used
     * in the European Union.
     *
     * @return economicSector The sector of the economy the legal entity operates within, represented
     *     by a 2-4 digit code that may include a \&quot;.\&quot;. Example: 45.11 You can locate
     *     economic sector codes for your area by referencing codes defined by the NACE (Nomenclature
     *     of Economic Activities) used in the European Union.
     */
    @JsonProperty(JSON_PROPERTY_ECONOMIC_SECTOR)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEconomicSector() {
      return economicSector;
    }
  
    /**
     * The sector of the economy the legal entity operates within, represented by a 2-4 digit code
     * that may include a \&quot;.\&quot;. Example: 45.11 You can locate economic sector codes for
     * your area by referencing codes defined by the NACE (Nomenclature of Economic Activities) used
     * in the European Union.
     *
     * @param economicSector The sector of the economy the legal entity operates within, represented
     *     by a 2-4 digit code that may include a \&quot;.\&quot;. Example: 45.11 You can locate
     *     economic sector codes for your area by referencing codes defined by the NACE (Nomenclature
     *     of Economic Activities) used in the European Union.
     */
    @JsonProperty(JSON_PROPERTY_ECONOMIC_SECTOR)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEconomicSector(String economicSector) {
      this.economicSector = economicSector;
    }
  
    /**
     * The email address of the legal entity.
     *
     * @param email The email address of the legal entity.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization email(String email) {
      this.email = email;
      return this;
    }
  
    /**
     * The email address of the legal entity.
     *
     * @return email The email address of the legal entity.
     */
    @JsonProperty(JSON_PROPERTY_EMAIL)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEmail() {
      return email;
    }
  
    /**
     * The email address of the legal entity.
     *
     * @param email The email address of the legal entity.
     */
    @JsonProperty(JSON_PROPERTY_EMAIL)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEmail(String email) {
      this.email = email;
    }
  
    /**
     * The financial report information of the organization.
     *
     * @param financialReports The financial report information of the organization.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization financialReports(List<FinancialReport> financialReports) {
      this.financialReports = financialReports;
      return this;
    }
  
    public Organization addFinancialReportsItem(FinancialReport financialReportsItem) {
      if (this.financialReports == null) {
        this.financialReports = new ArrayList<>();
      }
      this.financialReports.add(financialReportsItem);
      return this;
    }
  
    /**
     * The financial report information of the organization.
     *
     * @return financialReports The financial report information of the organization.
     */
    @JsonProperty(JSON_PROPERTY_FINANCIAL_REPORTS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public List<FinancialReport> getFinancialReports() {
      return financialReports;
    }
  
    /**
     * The financial report information of the organization.
     *
     * @param financialReports The financial report information of the organization.
     */
    @JsonProperty(JSON_PROPERTY_FINANCIAL_REPORTS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setFinancialReports(List<FinancialReport> financialReports) {
      this.financialReports = financialReports;
    }
  
    /**
     * The global legal entity identifier for the organization.
     *
     * @param globalLegalEntityIdentifier The global legal entity identifier for the organization.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization globalLegalEntityIdentifier(String globalLegalEntityIdentifier) {
      this.globalLegalEntityIdentifier = globalLegalEntityIdentifier;
      return this;
    }
  
    /**
     * The global legal entity identifier for the organization.
     *
     * @return globalLegalEntityIdentifier The global legal entity identifier for the organization.
     */
    @JsonProperty(JSON_PROPERTY_GLOBAL_LEGAL_ENTITY_IDENTIFIER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getGlobalLegalEntityIdentifier() {
      return globalLegalEntityIdentifier;
    }
  
    /**
     * The global legal entity identifier for the organization.
     *
     * @param globalLegalEntityIdentifier The global legal entity identifier for the organization.
     */
    @JsonProperty(JSON_PROPERTY_GLOBAL_LEGAL_ENTITY_IDENTIFIER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setGlobalLegalEntityIdentifier(String globalLegalEntityIdentifier) {
      this.globalLegalEntityIdentifier = globalLegalEntityIdentifier;
    }
  
    /**
     * Indicates that the registered business address is also the company&#39;s headquarters.
     *
     * @param headOfficeIndicator Indicates that the registered business address is also the
     *     company&#39;s headquarters.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization headOfficeIndicator(Boolean headOfficeIndicator) {
      this.headOfficeIndicator = headOfficeIndicator;
      return this;
    }
  
    /**
     * Indicates that the registered business address is also the company&#39;s headquarters.
     *
     * @return headOfficeIndicator Indicates that the registered business address is also the
     *     company&#39;s headquarters.
     */
    @JsonProperty(JSON_PROPERTY_HEAD_OFFICE_INDICATOR)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Boolean getHeadOfficeIndicator() {
      return headOfficeIndicator;
    }
  
    /**
     * Indicates that the registered business address is also the company&#39;s headquarters.
     *
     * @param headOfficeIndicator Indicates that the registered business address is also the
     *     company&#39;s headquarters.
     */
    @JsonProperty(JSON_PROPERTY_HEAD_OFFICE_INDICATOR)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setHeadOfficeIndicator(Boolean headOfficeIndicator) {
      this.headOfficeIndicator = headOfficeIndicator;
    }
  
    /**
     * The institutional sector the organization operates within.
     *
     * @param institutionalSector The institutional sector the organization operates within.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization institutionalSector(InstitutionalSectorEnum institutionalSector) {
      this.institutionalSector = institutionalSector;
      return this;
    }
  
    /**
     * The institutional sector the organization operates within.
     *
     * @return institutionalSector The institutional sector the organization operates within.
     */
    @JsonProperty(JSON_PROPERTY_INSTITUTIONAL_SECTOR)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public InstitutionalSectorEnum getInstitutionalSector() {
      return institutionalSector;
    }
  
    /**
     * The institutional sector the organization operates within.
     *
     * @param institutionalSector The institutional sector the organization operates within.
     */
    @JsonProperty(JSON_PROPERTY_INSTITUTIONAL_SECTOR)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setInstitutionalSector(InstitutionalSectorEnum institutionalSector) {
      this.institutionalSector = institutionalSector;
    }
  
    /**
     * The type of business entity as defined in the national legal system. Use a legal form listed
     * within the accepted legal forms compiled by the Central Bank of Europe.
     *
     * @param legalForm The type of business entity as defined in the national legal system. Use a
     *     legal form listed within the accepted legal forms compiled by the Central Bank of Europe.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization legalForm(String legalForm) {
      this.legalForm = legalForm;
      return this;
    }
  
    /**
     * The type of business entity as defined in the national legal system. Use a legal form listed
     * within the accepted legal forms compiled by the Central Bank of Europe.
     *
     * @return legalForm The type of business entity as defined in the national legal system. Use a
     *     legal form listed within the accepted legal forms compiled by the Central Bank of Europe.
     */
    @JsonProperty(JSON_PROPERTY_LEGAL_FORM)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getLegalForm() {
      return legalForm;
    }
  
    /**
     * The type of business entity as defined in the national legal system. Use a legal form listed
     * within the accepted legal forms compiled by the Central Bank of Europe.
     *
     * @param legalForm The type of business entity as defined in the national legal system. Use a
     *     legal form listed within the accepted legal forms compiled by the Central Bank of Europe.
     */
    @JsonProperty(JSON_PROPERTY_LEGAL_FORM)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setLegalForm(String legalForm) {
      this.legalForm = legalForm;
    }
  
    /**
     * The organization&#39;s legal name.
     *
     * @param legalName The organization&#39;s legal name.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization legalName(String legalName) {
      this.legalName = legalName;
      return this;
    }
  
    /**
     * The organization&#39;s legal name.
     *
     * @return legalName The organization&#39;s legal name.
     */
    @JsonProperty(JSON_PROPERTY_LEGAL_NAME)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getLegalName() {
      return legalName;
    }
  
    /**
     * The organization&#39;s legal name.
     *
     * @param legalName The organization&#39;s legal name.
     */
    @JsonProperty(JSON_PROPERTY_LEGAL_NAME)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setLegalName(String legalName) {
      this.legalName = legalName;
    }
  
    /**
     * phone
     *
     * @param phone
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization phone(PhoneNumber phone) {
      this.phone = phone;
      return this;
    }
  
    /**
     * Get phone
     *
     * @return phone
     */
    @JsonProperty(JSON_PROPERTY_PHONE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public PhoneNumber getPhone() {
      return phone;
    }
  
    /**
     * phone
     *
     * @param phone
     */
    @JsonProperty(JSON_PROPERTY_PHONE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setPhone(PhoneNumber phone) {
      this.phone = phone;
    }
  
    /**
     * principalPlaceOfBusiness
     *
     * @param principalPlaceOfBusiness
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization principalPlaceOfBusiness(Address principalPlaceOfBusiness) {
      this.principalPlaceOfBusiness = principalPlaceOfBusiness;
      return this;
    }
  
    /**
     * Get principalPlaceOfBusiness
     *
     * @return principalPlaceOfBusiness
     */
    @JsonProperty(JSON_PROPERTY_PRINCIPAL_PLACE_OF_BUSINESS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Address getPrincipalPlaceOfBusiness() {
      return principalPlaceOfBusiness;
    }
  
    /**
     * principalPlaceOfBusiness
     *
     * @param principalPlaceOfBusiness
     */
    @JsonProperty(JSON_PROPERTY_PRINCIPAL_PLACE_OF_BUSINESS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setPrincipalPlaceOfBusiness(Address principalPlaceOfBusiness) {
      this.principalPlaceOfBusiness = principalPlaceOfBusiness;
    }
  
    /**
     * registeredAddress
     *
     * @param registeredAddress
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization registeredAddress(Address registeredAddress) {
      this.registeredAddress = registeredAddress;
      return this;
    }
  
    /**
     * Get registeredAddress
     *
     * @return registeredAddress
     */
    @JsonProperty(JSON_PROPERTY_REGISTERED_ADDRESS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Address getRegisteredAddress() {
      return registeredAddress;
    }
  
    /**
     * registeredAddress
     *
     * @param registeredAddress
     */
    @JsonProperty(JSON_PROPERTY_REGISTERED_ADDRESS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setRegisteredAddress(Address registeredAddress) {
      this.registeredAddress = registeredAddress;
    }
  
    /**
     * The organization&#39;s registration number.
     *
     * @param registrationNumber The organization&#39;s registration number.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization registrationNumber(String registrationNumber) {
      this.registrationNumber = registrationNumber;
      return this;
    }
  
    /**
     * The organization&#39;s registration number.
     *
     * @return registrationNumber The organization&#39;s registration number.
     */
    @JsonProperty(JSON_PROPERTY_REGISTRATION_NUMBER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getRegistrationNumber() {
      return registrationNumber;
    }
  
    /**
     * The organization&#39;s registration number.
     *
     * @param registrationNumber The organization&#39;s registration number.
     */
    @JsonProperty(JSON_PROPERTY_REGISTRATION_NUMBER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setRegistrationNumber(String registrationNumber) {
      this.registrationNumber = registrationNumber;
    }
  
    /**
     * Set this to **true** if the organization does not have a registration number available. Only
     * applicable for organizations in New Zealand, and incorporated partnerships and government
     * organizations in Australia.
     *
     * @param registrationNumberAbsent Set this to **true** if the organization does not have a
     *     registration number available. Only applicable for organizations in New Zealand, and
     *     incorporated partnerships and government organizations in Australia.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization registrationNumberAbsent(Boolean registrationNumberAbsent) {
      this.registrationNumberAbsent = registrationNumberAbsent;
      return this;
    }
  
    /**
     * Set this to **true** if the organization does not have a registration number available. Only
     * applicable for organizations in New Zealand, and incorporated partnerships and government
     * organizations in Australia.
     *
     * @return registrationNumberAbsent Set this to **true** if the organization does not have a
     *     registration number available. Only applicable for organizations in New Zealand, and
     *     incorporated partnerships and government organizations in Australia.
     */
    @JsonProperty(JSON_PROPERTY_REGISTRATION_NUMBER_ABSENT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Boolean getRegistrationNumberAbsent() {
      return registrationNumberAbsent;
    }
  
    /**
     * Set this to **true** if the organization does not have a registration number available. Only
     * applicable for organizations in New Zealand, and incorporated partnerships and government
     * organizations in Australia.
     *
     * @param registrationNumberAbsent Set this to **true** if the organization does not have a
     *     registration number available. Only applicable for organizations in New Zealand, and
     *     incorporated partnerships and government organizations in Australia.
     */
    @JsonProperty(JSON_PROPERTY_REGISTRATION_NUMBER_ABSENT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setRegistrationNumberAbsent(Boolean registrationNumberAbsent) {
      this.registrationNumberAbsent = registrationNumberAbsent;
    }
  
    /**
     * The status of any current or past legal action taken against the legal entity. Possible values:
     * **noLegalActionsTaken**, **underJudicialAdministration**, **bankruptcyInsolvency**,
     * **otherLegalMeasures** If the value of this field is **noLegalActionsTaken**, then
     * &#x60;dateOfInitiationOfLegalProceeding&#x60; is not required. Otherwise, it is required.
     *
     * @param statusOfLegalProceeding The status of any current or past legal action taken against the
     *     legal entity. Possible values: **noLegalActionsTaken**, **underJudicialAdministration**,
     *     **bankruptcyInsolvency**, **otherLegalMeasures** If the value of this field is
     *     **noLegalActionsTaken**, then &#x60;dateOfInitiationOfLegalProceeding&#x60; is not
     *     required. Otherwise, it is required.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization statusOfLegalProceeding(StatusOfLegalProceedingEnum statusOfLegalProceeding) {
      this.statusOfLegalProceeding = statusOfLegalProceeding;
      return this;
    }
  
    /**
     * The status of any current or past legal action taken against the legal entity. Possible values:
     * **noLegalActionsTaken**, **underJudicialAdministration**, **bankruptcyInsolvency**,
     * **otherLegalMeasures** If the value of this field is **noLegalActionsTaken**, then
     * &#x60;dateOfInitiationOfLegalProceeding&#x60; is not required. Otherwise, it is required.
     *
     * @return statusOfLegalProceeding The status of any current or past legal action taken against
     *     the legal entity. Possible values: **noLegalActionsTaken**,
     *     **underJudicialAdministration**, **bankruptcyInsolvency**, **otherLegalMeasures** If the
     *     value of this field is **noLegalActionsTaken**, then
     *     &#x60;dateOfInitiationOfLegalProceeding&#x60; is not required. Otherwise, it is required.
     */
    @JsonProperty(JSON_PROPERTY_STATUS_OF_LEGAL_PROCEEDING)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public StatusOfLegalProceedingEnum getStatusOfLegalProceeding() {
      return statusOfLegalProceeding;
    }
  
    /**
     * The status of any current or past legal action taken against the legal entity. Possible values:
     * **noLegalActionsTaken**, **underJudicialAdministration**, **bankruptcyInsolvency**,
     * **otherLegalMeasures** If the value of this field is **noLegalActionsTaken**, then
     * &#x60;dateOfInitiationOfLegalProceeding&#x60; is not required. Otherwise, it is required.
     *
     * @param statusOfLegalProceeding The status of any current or past legal action taken against the
     *     legal entity. Possible values: **noLegalActionsTaken**, **underJudicialAdministration**,
     *     **bankruptcyInsolvency**, **otherLegalMeasures** If the value of this field is
     *     **noLegalActionsTaken**, then &#x60;dateOfInitiationOfLegalProceeding&#x60; is not
     *     required. Otherwise, it is required.
     */
    @JsonProperty(JSON_PROPERTY_STATUS_OF_LEGAL_PROCEEDING)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setStatusOfLegalProceeding(StatusOfLegalProceedingEnum statusOfLegalProceeding) {
      this.statusOfLegalProceeding = statusOfLegalProceeding;
    }
  
    /**
     * stockData
     *
     * @param stockData
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization stockData(StockData stockData) {
      this.stockData = stockData;
      return this;
    }
  
    /**
     * Get stockData
     *
     * @return stockData
     */
    @JsonProperty(JSON_PROPERTY_STOCK_DATA)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public StockData getStockData() {
      return stockData;
    }
  
    /**
     * stockData
     *
     * @param stockData
     */
    @JsonProperty(JSON_PROPERTY_STOCK_DATA)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setStockData(StockData stockData) {
      this.stockData = stockData;
    }
  
    /**
     * support
     *
     * @param support
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization support(Support support) {
      this.support = support;
      return this;
    }
  
    /**
     * Get support
     *
     * @return support
     */
    @JsonProperty(JSON_PROPERTY_SUPPORT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Support getSupport() {
      return support;
    }
  
    /**
     * support
     *
     * @param support
     */
    @JsonProperty(JSON_PROPERTY_SUPPORT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setSupport(Support support) {
      this.support = support;
    }
  
    /**
     * The tax information of the organization.
     *
     * @param taxInformation The tax information of the organization.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization taxInformation(List<TaxInformation> taxInformation) {
      this.taxInformation = taxInformation;
      return this;
    }
  
    public Organization addTaxInformationItem(TaxInformation taxInformationItem) {
      if (this.taxInformation == null) {
        this.taxInformation = new ArrayList<>();
      }
      this.taxInformation.add(taxInformationItem);
      return this;
    }
  
    /**
     * The tax information of the organization.
     *
     * @return taxInformation The tax information of the organization.
     */
    @JsonProperty(JSON_PROPERTY_TAX_INFORMATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public List<TaxInformation> getTaxInformation() {
      return taxInformation;
    }
  
    /**
     * The tax information of the organization.
     *
     * @param taxInformation The tax information of the organization.
     */
    @JsonProperty(JSON_PROPERTY_TAX_INFORMATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setTaxInformation(List<TaxInformation> taxInformation) {
      this.taxInformation = taxInformation;
    }
  
    /**
     * taxReportingClassification
     *
     * @param taxReportingClassification
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization taxReportingClassification(
        TaxReportingClassification taxReportingClassification) {
      this.taxReportingClassification = taxReportingClassification;
      return this;
    }
  
    /**
     * Get taxReportingClassification
     *
     * @return taxReportingClassification
     */
    @JsonProperty(JSON_PROPERTY_TAX_REPORTING_CLASSIFICATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public TaxReportingClassification getTaxReportingClassification() {
      return taxReportingClassification;
    }
  
    /**
     * taxReportingClassification
     *
     * @param taxReportingClassification
     */
    @JsonProperty(JSON_PROPERTY_TAX_REPORTING_CLASSIFICATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setTaxReportingClassification(TaxReportingClassification taxReportingClassification) {
      this.taxReportingClassification = taxReportingClassification;
    }
  
    /**
     * Type of organization. Possible values: **associationIncorporated**,
     * **governmentalOrganization**, **listedPublicCompany**, **nonProfit**,
     * **partnershipIncorporated**, **privateCompany**.
     *
     * @param type Type of organization. Possible values: **associationIncorporated**,
     *     **governmentalOrganization**, **listedPublicCompany**, **nonProfit**,
     *     **partnershipIncorporated**, **privateCompany**.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization type(TypeEnum type) {
      this.type = type;
      return this;
    }
  
    /**
     * Type of organization. Possible values: **associationIncorporated**,
     * **governmentalOrganization**, **listedPublicCompany**, **nonProfit**,
     * **partnershipIncorporated**, **privateCompany**.
     *
     * @return type Type of organization. Possible values: **associationIncorporated**,
     *     **governmentalOrganization**, **listedPublicCompany**, **nonProfit**,
     *     **partnershipIncorporated**, **privateCompany**.
     */
    @JsonProperty(JSON_PROPERTY_TYPE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public TypeEnum getType() {
      return type;
    }
  
    /**
     * Type of organization. Possible values: **associationIncorporated**,
     * **governmentalOrganization**, **listedPublicCompany**, **nonProfit**,
     * **partnershipIncorporated**, **privateCompany**.
     *
     * @param type Type of organization. Possible values: **associationIncorporated**,
     *     **governmentalOrganization**, **listedPublicCompany**, **nonProfit**,
     *     **partnershipIncorporated**, **privateCompany**.
     */
    @JsonProperty(JSON_PROPERTY_TYPE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setType(TypeEnum type) {
      this.type = type;
    }
  
    /**
     * The reason the organization has not provided a VAT number. Possible values:
     * **industryExemption**, **belowTaxThreshold**.
     *
     * @param vatAbsenceReason The reason the organization has not provided a VAT number. Possible
     *     values: **industryExemption**, **belowTaxThreshold**.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization vatAbsenceReason(VatAbsenceReasonEnum vatAbsenceReason) {
      this.vatAbsenceReason = vatAbsenceReason;
      return this;
    }
  
    /**
     * The reason the organization has not provided a VAT number. Possible values:
     * **industryExemption**, **belowTaxThreshold**.
     *
     * @return vatAbsenceReason The reason the organization has not provided a VAT number. Possible
     *     values: **industryExemption**, **belowTaxThreshold**.
     */
    @JsonProperty(JSON_PROPERTY_VAT_ABSENCE_REASON)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public VatAbsenceReasonEnum getVatAbsenceReason() {
      return vatAbsenceReason;
    }
  
    /**
     * The reason the organization has not provided a VAT number. Possible values:
     * **industryExemption**, **belowTaxThreshold**.
     *
     * @param vatAbsenceReason The reason the organization has not provided a VAT number. Possible
     *     values: **industryExemption**, **belowTaxThreshold**.
     */
    @JsonProperty(JSON_PROPERTY_VAT_ABSENCE_REASON)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setVatAbsenceReason(VatAbsenceReasonEnum vatAbsenceReason) {
      this.vatAbsenceReason = vatAbsenceReason;
    }
  
    /**
     * The organization&#39;s VAT number.
     *
     * @param vatNumber The organization&#39;s VAT number.
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization vatNumber(String vatNumber) {
      this.vatNumber = vatNumber;
      return this;
    }
  
    /**
     * The organization&#39;s VAT number.
     *
     * @return vatNumber The organization&#39;s VAT number.
     */
    @JsonProperty(JSON_PROPERTY_VAT_NUMBER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getVatNumber() {
      return vatNumber;
    }
  
    /**
     * The organization&#39;s VAT number.
     *
     * @param vatNumber The organization&#39;s VAT number.
     */
    @JsonProperty(JSON_PROPERTY_VAT_NUMBER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setVatNumber(String vatNumber) {
      this.vatNumber = vatNumber;
    }
  
    /**
     * webData
     *
     * @param webData
     * @return the current {@code Organization} instance, allowing for method chaining
     */
    public Organization webData(WebData webData) {
      this.webData = webData;
      return this;
    }
  
    /**
     * Get webData
     *
     * @return webData
     */
    @JsonProperty(JSON_PROPERTY_WEB_DATA)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public WebData getWebData() {
      return webData;
    }
  
    /**
     * webData
     *
     * @param webData
     */
    @JsonProperty(JSON_PROPERTY_WEB_DATA)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setWebData(WebData webData) {
      this.webData = webData;
    }
  
    /** Return true if this Organization object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      Organization organization = (Organization) o;
      return Objects.equals(this.countryOfGoverningLaw, organization.countryOfGoverningLaw)
          && Objects.equals(this.dateOfIncorporation, organization.dateOfIncorporation)
          && Objects.equals(
              this.dateOfInitiationOfLegalProceeding, organization.dateOfInitiationOfLegalProceeding)
          && Objects.equals(this.description, organization.description)
          && Objects.equals(this.doingBusinessAs, organization.doingBusinessAs)
          && Objects.equals(this.doingBusinessAsAbsent, organization.doingBusinessAsAbsent)
          && Objects.equals(this.economicSector, organization.economicSector)
          && Objects.equals(this.email, organization.email)
          && Objects.equals(this.financialReports, organization.financialReports)
          && Objects.equals(
              this.globalLegalEntityIdentifier, organization.globalLegalEntityIdentifier)
          && Objects.equals(this.headOfficeIndicator, organization.headOfficeIndicator)
          && Objects.equals(this.institutionalSector, organization.institutionalSector)
          && Objects.equals(this.legalForm, organization.legalForm)
          && Objects.equals(this.legalName, organization.legalName)
          && Objects.equals(this.phone, organization.phone)
          && Objects.equals(this.principalPlaceOfBusiness, organization.principalPlaceOfBusiness)
          && Objects.equals(this.registeredAddress, organization.registeredAddress)
          && Objects.equals(this.registrationNumber, organization.registrationNumber)
          && Objects.equals(this.registrationNumberAbsent, organization.registrationNumberAbsent)
          && Objects.equals(this.statusOfLegalProceeding, organization.statusOfLegalProceeding)
          && Objects.equals(this.stockData, organization.stockData)
          && Objects.equals(this.support, organization.support)
          && Objects.equals(this.taxInformation, organization.taxInformation)
          && Objects.equals(this.taxReportingClassification, organization.taxReportingClassification)
          && Objects.equals(this.type, organization.type)
          && Objects.equals(this.vatAbsenceReason, organization.vatAbsenceReason)
          && Objects.equals(this.vatNumber, organization.vatNumber)
          && Objects.equals(this.webData, organization.webData);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(
          countryOfGoverningLaw,
          dateOfIncorporation,
          dateOfInitiationOfLegalProceeding,
          description,
          doingBusinessAs,
          doingBusinessAsAbsent,
          economicSector,
          email,
          financialReports,
          globalLegalEntityIdentifier,
          headOfficeIndicator,
          institutionalSector,
          legalForm,
          legalName,
          phone,
          principalPlaceOfBusiness,
          registeredAddress,
          registrationNumber,
          registrationNumberAbsent,
          statusOfLegalProceeding,
          stockData,
          support,
          taxInformation,
          taxReportingClassification,
          type,
          vatAbsenceReason,
          vatNumber,
          webData);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class Organization {\n");
      sb.append("    countryOfGoverningLaw: ")
          .append(toIndentedString(countryOfGoverningLaw))
          .append("\n");
      sb.append("    dateOfIncorporation: ")
          .append(toIndentedString(dateOfIncorporation))
          .append("\n");
      sb.append("    dateOfInitiationOfLegalProceeding: ")
          .append(toIndentedString(dateOfInitiationOfLegalProceeding))
          .append("\n");
      sb.append("    description: ").append(toIndentedString(description)).append("\n");
      sb.append("    doingBusinessAs: ").append(toIndentedString(doingBusinessAs)).append("\n");
      sb.append("    doingBusinessAsAbsent: ")
          .append(toIndentedString(doingBusinessAsAbsent))
          .append("\n");
      sb.append("    economicSector: ").append(toIndentedString(economicSector)).append("\n");
      sb.append("    email: ").append(toIndentedString(email)).append("\n");
      sb.append("    financialReports: ").append(toIndentedString(financialReports)).append("\n");
      sb.append("    globalLegalEntityIdentifier: ")
          .append(toIndentedString(globalLegalEntityIdentifier))
          .append("\n");
      sb.append("    headOfficeIndicator: ")
          .append(toIndentedString(headOfficeIndicator))
          .append("\n");
      sb.append("    institutionalSector: ")
          .append(toIndentedString(institutionalSector))
          .append("\n");
      sb.append("    legalForm: ").append(toIndentedString(legalForm)).append("\n");
      sb.append("    legalName: ").append(toIndentedString(legalName)).append("\n");
      sb.append("    phone: ").append(toIndentedString(phone)).append("\n");
      sb.append("    principalPlaceOfBusiness: ")
          .append(toIndentedString(principalPlaceOfBusiness))
          .append("\n");
      sb.append("    registeredAddress: ").append(toIndentedString(registeredAddress)).append("\n");
      sb.append("    registrationNumber: ").append(toIndentedString(registrationNumber)).append("\n");
      sb.append("    registrationNumberAbsent: ")
          .append(toIndentedString(registrationNumberAbsent))
          .append("\n");
      sb.append("    statusOfLegalProceeding: ")
          .append(toIndentedString(statusOfLegalProceeding))
          .append("\n");
      sb.append("    stockData: ").append(toIndentedString(stockData)).append("\n");
      sb.append("    support: ").append(toIndentedString(support)).append("\n");
      sb.append("    taxInformation: ").append(toIndentedString(taxInformation)).append("\n");
      sb.append("    taxReportingClassification: ")
          .append(toIndentedString(taxReportingClassification))
          .append("\n");
      sb.append("    type: ").append(toIndentedString(type)).append("\n");
      sb.append("    vatAbsenceReason: ").append(toIndentedString(vatAbsenceReason)).append("\n");
      sb.append("    vatNumber: ").append(toIndentedString(vatNumber)).append("\n");
      sb.append("    webData: ").append(toIndentedString(webData)).append("\n");
      sb.append("}");
      return sb.toString();
    }
  
    /**
     * Convert the given object to string with each line indented by 4 spaces (except the first line).
     */
    private String toIndentedString(Object o) {
      if (o == null) {
        return "null";
      }
      return o.toString().replace("\n", "\n    ");
    }
  
    /**
     * Create an instance of Organization given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of Organization
     * @throws JsonProcessingException if the JSON string is invalid with respect to Organization
     */
    public static Organization fromJson(String jsonString) throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, Organization.class);
    }
  
    /**
     * Convert an instance of Organization to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  