/*
 * Adyen Checkout API
 *
 * The version of the OpenAPI document: 70
 * 
 *
 * 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.checkout;

import java.util.Objects;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.core.JsonProcessingException;


/**
 * ResponseAdditionalDataInstallments
 */
@JsonPropertyOrder({
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_INSTALLMENT_TYPE,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_ANNUAL_PERCENTAGE_RATE,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_FIRST_INSTALLMENT_AMOUNT,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_INSTALLMENT_FEE,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_INTEREST_RATE,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_MAXIMUM_NUMBER_OF_INSTALLMENTS,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_MINIMUM_NUMBER_OF_INSTALLMENTS,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_NUMBER_OF_INSTALLMENTS,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_SUBSEQUENT_INSTALLMENT_AMOUNT,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_TOTAL_AMOUNT_DUE,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_PAYMENT_OPTIONS,
  ResponseAdditionalDataInstallments.JSON_PROPERTY_INSTALLMENTS_VALUE
})

public class ResponseAdditionalDataInstallments {
  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_INSTALLMENT_TYPE = "installmentPaymentData.installmentType";
  private String installmentPaymentDataInstallmentType;

  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_ANNUAL_PERCENTAGE_RATE = "installmentPaymentData.option[itemNr].annualPercentageRate";
  private String installmentPaymentDataOptionItemNrAnnualPercentageRate;

  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_FIRST_INSTALLMENT_AMOUNT = "installmentPaymentData.option[itemNr].firstInstallmentAmount";
  private String installmentPaymentDataOptionItemNrFirstInstallmentAmount;

  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_INSTALLMENT_FEE = "installmentPaymentData.option[itemNr].installmentFee";
  private String installmentPaymentDataOptionItemNrInstallmentFee;

  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_INTEREST_RATE = "installmentPaymentData.option[itemNr].interestRate";
  private String installmentPaymentDataOptionItemNrInterestRate;

  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_MAXIMUM_NUMBER_OF_INSTALLMENTS = "installmentPaymentData.option[itemNr].maximumNumberOfInstallments";
  private String installmentPaymentDataOptionItemNrMaximumNumberOfInstallments;

  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_MINIMUM_NUMBER_OF_INSTALLMENTS = "installmentPaymentData.option[itemNr].minimumNumberOfInstallments";
  private String installmentPaymentDataOptionItemNrMinimumNumberOfInstallments;

  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_NUMBER_OF_INSTALLMENTS = "installmentPaymentData.option[itemNr].numberOfInstallments";
  private String installmentPaymentDataOptionItemNrNumberOfInstallments;

  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_SUBSEQUENT_INSTALLMENT_AMOUNT = "installmentPaymentData.option[itemNr].subsequentInstallmentAmount";
  private String installmentPaymentDataOptionItemNrSubsequentInstallmentAmount;

  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_TOTAL_AMOUNT_DUE = "installmentPaymentData.option[itemNr].totalAmountDue";
  private String installmentPaymentDataOptionItemNrTotalAmountDue;

  public static final String JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_PAYMENT_OPTIONS = "installmentPaymentData.paymentOptions";
  private String installmentPaymentDataPaymentOptions;

  public static final String JSON_PROPERTY_INSTALLMENTS_VALUE = "installments.value";
  private String installmentsValue;

  public ResponseAdditionalDataInstallments() { 
  }

  public ResponseAdditionalDataInstallments installmentPaymentDataInstallmentType(String installmentPaymentDataInstallmentType) {
    this.installmentPaymentDataInstallmentType = installmentPaymentDataInstallmentType;
    return this;
  }

   /**
   * Type of installment. The value of &#x60;installmentType&#x60; should be **IssuerFinanced**.
   * @return installmentPaymentDataInstallmentType
  **/
  @ApiModelProperty(value = "Type of installment. The value of `installmentType` should be **IssuerFinanced**.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_INSTALLMENT_TYPE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataInstallmentType() {
    return installmentPaymentDataInstallmentType;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_INSTALLMENT_TYPE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataInstallmentType(String installmentPaymentDataInstallmentType) {
    this.installmentPaymentDataInstallmentType = installmentPaymentDataInstallmentType;
  }


  public ResponseAdditionalDataInstallments installmentPaymentDataOptionItemNrAnnualPercentageRate(String installmentPaymentDataOptionItemNrAnnualPercentageRate) {
    this.installmentPaymentDataOptionItemNrAnnualPercentageRate = installmentPaymentDataOptionItemNrAnnualPercentageRate;
    return this;
  }

   /**
   * Annual interest rate.
   * @return installmentPaymentDataOptionItemNrAnnualPercentageRate
  **/
  @ApiModelProperty(value = "Annual interest rate.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_ANNUAL_PERCENTAGE_RATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataOptionItemNrAnnualPercentageRate() {
    return installmentPaymentDataOptionItemNrAnnualPercentageRate;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_ANNUAL_PERCENTAGE_RATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataOptionItemNrAnnualPercentageRate(String installmentPaymentDataOptionItemNrAnnualPercentageRate) {
    this.installmentPaymentDataOptionItemNrAnnualPercentageRate = installmentPaymentDataOptionItemNrAnnualPercentageRate;
  }


  public ResponseAdditionalDataInstallments installmentPaymentDataOptionItemNrFirstInstallmentAmount(String installmentPaymentDataOptionItemNrFirstInstallmentAmount) {
    this.installmentPaymentDataOptionItemNrFirstInstallmentAmount = installmentPaymentDataOptionItemNrFirstInstallmentAmount;
    return this;
  }

   /**
   * First Installment Amount in minor units.
   * @return installmentPaymentDataOptionItemNrFirstInstallmentAmount
  **/
  @ApiModelProperty(value = "First Installment Amount in minor units.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_FIRST_INSTALLMENT_AMOUNT)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataOptionItemNrFirstInstallmentAmount() {
    return installmentPaymentDataOptionItemNrFirstInstallmentAmount;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_FIRST_INSTALLMENT_AMOUNT)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataOptionItemNrFirstInstallmentAmount(String installmentPaymentDataOptionItemNrFirstInstallmentAmount) {
    this.installmentPaymentDataOptionItemNrFirstInstallmentAmount = installmentPaymentDataOptionItemNrFirstInstallmentAmount;
  }


  public ResponseAdditionalDataInstallments installmentPaymentDataOptionItemNrInstallmentFee(String installmentPaymentDataOptionItemNrInstallmentFee) {
    this.installmentPaymentDataOptionItemNrInstallmentFee = installmentPaymentDataOptionItemNrInstallmentFee;
    return this;
  }

   /**
   * Installment fee amount in minor units.
   * @return installmentPaymentDataOptionItemNrInstallmentFee
  **/
  @ApiModelProperty(value = "Installment fee amount in minor units.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_INSTALLMENT_FEE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataOptionItemNrInstallmentFee() {
    return installmentPaymentDataOptionItemNrInstallmentFee;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_INSTALLMENT_FEE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataOptionItemNrInstallmentFee(String installmentPaymentDataOptionItemNrInstallmentFee) {
    this.installmentPaymentDataOptionItemNrInstallmentFee = installmentPaymentDataOptionItemNrInstallmentFee;
  }


  public ResponseAdditionalDataInstallments installmentPaymentDataOptionItemNrInterestRate(String installmentPaymentDataOptionItemNrInterestRate) {
    this.installmentPaymentDataOptionItemNrInterestRate = installmentPaymentDataOptionItemNrInterestRate;
    return this;
  }

   /**
   * Interest rate for the installment period.
   * @return installmentPaymentDataOptionItemNrInterestRate
  **/
  @ApiModelProperty(value = "Interest rate for the installment period.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_INTEREST_RATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataOptionItemNrInterestRate() {
    return installmentPaymentDataOptionItemNrInterestRate;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_INTEREST_RATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataOptionItemNrInterestRate(String installmentPaymentDataOptionItemNrInterestRate) {
    this.installmentPaymentDataOptionItemNrInterestRate = installmentPaymentDataOptionItemNrInterestRate;
  }


  public ResponseAdditionalDataInstallments installmentPaymentDataOptionItemNrMaximumNumberOfInstallments(String installmentPaymentDataOptionItemNrMaximumNumberOfInstallments) {
    this.installmentPaymentDataOptionItemNrMaximumNumberOfInstallments = installmentPaymentDataOptionItemNrMaximumNumberOfInstallments;
    return this;
  }

   /**
   * Maximum number of installments possible for this payment.
   * @return installmentPaymentDataOptionItemNrMaximumNumberOfInstallments
  **/
  @ApiModelProperty(value = "Maximum number of installments possible for this payment.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_MAXIMUM_NUMBER_OF_INSTALLMENTS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataOptionItemNrMaximumNumberOfInstallments() {
    return installmentPaymentDataOptionItemNrMaximumNumberOfInstallments;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_MAXIMUM_NUMBER_OF_INSTALLMENTS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataOptionItemNrMaximumNumberOfInstallments(String installmentPaymentDataOptionItemNrMaximumNumberOfInstallments) {
    this.installmentPaymentDataOptionItemNrMaximumNumberOfInstallments = installmentPaymentDataOptionItemNrMaximumNumberOfInstallments;
  }


  public ResponseAdditionalDataInstallments installmentPaymentDataOptionItemNrMinimumNumberOfInstallments(String installmentPaymentDataOptionItemNrMinimumNumberOfInstallments) {
    this.installmentPaymentDataOptionItemNrMinimumNumberOfInstallments = installmentPaymentDataOptionItemNrMinimumNumberOfInstallments;
    return this;
  }

   /**
   * Minimum number of installments possible for this payment.
   * @return installmentPaymentDataOptionItemNrMinimumNumberOfInstallments
  **/
  @ApiModelProperty(value = "Minimum number of installments possible for this payment.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_MINIMUM_NUMBER_OF_INSTALLMENTS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataOptionItemNrMinimumNumberOfInstallments() {
    return installmentPaymentDataOptionItemNrMinimumNumberOfInstallments;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_MINIMUM_NUMBER_OF_INSTALLMENTS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataOptionItemNrMinimumNumberOfInstallments(String installmentPaymentDataOptionItemNrMinimumNumberOfInstallments) {
    this.installmentPaymentDataOptionItemNrMinimumNumberOfInstallments = installmentPaymentDataOptionItemNrMinimumNumberOfInstallments;
  }


  public ResponseAdditionalDataInstallments installmentPaymentDataOptionItemNrNumberOfInstallments(String installmentPaymentDataOptionItemNrNumberOfInstallments) {
    this.installmentPaymentDataOptionItemNrNumberOfInstallments = installmentPaymentDataOptionItemNrNumberOfInstallments;
    return this;
  }

   /**
   * Total number of installments possible for this payment.
   * @return installmentPaymentDataOptionItemNrNumberOfInstallments
  **/
  @ApiModelProperty(value = "Total number of installments possible for this payment.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_NUMBER_OF_INSTALLMENTS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataOptionItemNrNumberOfInstallments() {
    return installmentPaymentDataOptionItemNrNumberOfInstallments;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_NUMBER_OF_INSTALLMENTS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataOptionItemNrNumberOfInstallments(String installmentPaymentDataOptionItemNrNumberOfInstallments) {
    this.installmentPaymentDataOptionItemNrNumberOfInstallments = installmentPaymentDataOptionItemNrNumberOfInstallments;
  }


  public ResponseAdditionalDataInstallments installmentPaymentDataOptionItemNrSubsequentInstallmentAmount(String installmentPaymentDataOptionItemNrSubsequentInstallmentAmount) {
    this.installmentPaymentDataOptionItemNrSubsequentInstallmentAmount = installmentPaymentDataOptionItemNrSubsequentInstallmentAmount;
    return this;
  }

   /**
   * Subsequent Installment Amount in minor units.
   * @return installmentPaymentDataOptionItemNrSubsequentInstallmentAmount
  **/
  @ApiModelProperty(value = "Subsequent Installment Amount in minor units.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_SUBSEQUENT_INSTALLMENT_AMOUNT)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataOptionItemNrSubsequentInstallmentAmount() {
    return installmentPaymentDataOptionItemNrSubsequentInstallmentAmount;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_SUBSEQUENT_INSTALLMENT_AMOUNT)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataOptionItemNrSubsequentInstallmentAmount(String installmentPaymentDataOptionItemNrSubsequentInstallmentAmount) {
    this.installmentPaymentDataOptionItemNrSubsequentInstallmentAmount = installmentPaymentDataOptionItemNrSubsequentInstallmentAmount;
  }


  public ResponseAdditionalDataInstallments installmentPaymentDataOptionItemNrTotalAmountDue(String installmentPaymentDataOptionItemNrTotalAmountDue) {
    this.installmentPaymentDataOptionItemNrTotalAmountDue = installmentPaymentDataOptionItemNrTotalAmountDue;
    return this;
  }

   /**
   * Total amount in minor units.
   * @return installmentPaymentDataOptionItemNrTotalAmountDue
  **/
  @ApiModelProperty(value = "Total amount in minor units.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_TOTAL_AMOUNT_DUE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataOptionItemNrTotalAmountDue() {
    return installmentPaymentDataOptionItemNrTotalAmountDue;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_OPTION_ITEM_NR_TOTAL_AMOUNT_DUE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataOptionItemNrTotalAmountDue(String installmentPaymentDataOptionItemNrTotalAmountDue) {
    this.installmentPaymentDataOptionItemNrTotalAmountDue = installmentPaymentDataOptionItemNrTotalAmountDue;
  }


  public ResponseAdditionalDataInstallments installmentPaymentDataPaymentOptions(String installmentPaymentDataPaymentOptions) {
    this.installmentPaymentDataPaymentOptions = installmentPaymentDataPaymentOptions;
    return this;
  }

   /**
   * Possible values: * PayInInstallmentsOnly * PayInFullOnly * PayInFullOrInstallments
   * @return installmentPaymentDataPaymentOptions
  **/
  @ApiModelProperty(value = "Possible values: * PayInInstallmentsOnly * PayInFullOnly * PayInFullOrInstallments")
  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_PAYMENT_OPTIONS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentPaymentDataPaymentOptions() {
    return installmentPaymentDataPaymentOptions;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENT_PAYMENT_DATA_PAYMENT_OPTIONS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentPaymentDataPaymentOptions(String installmentPaymentDataPaymentOptions) {
    this.installmentPaymentDataPaymentOptions = installmentPaymentDataPaymentOptions;
  }


  public ResponseAdditionalDataInstallments installmentsValue(String installmentsValue) {
    this.installmentsValue = installmentsValue;
    return this;
  }

   /**
   * The number of installments that the payment amount should be charged with.  Example: 5 &gt; Only relevant for card payments in countries that support installments.
   * @return installmentsValue
  **/
  @ApiModelProperty(value = "The number of installments that the payment amount should be charged with.  Example: 5 > Only relevant for card payments in countries that support installments.")
  @JsonProperty(JSON_PROPERTY_INSTALLMENTS_VALUE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getInstallmentsValue() {
    return installmentsValue;
  }


  @JsonProperty(JSON_PROPERTY_INSTALLMENTS_VALUE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setInstallmentsValue(String installmentsValue) {
    this.installmentsValue = installmentsValue;
  }


  /**
   * Return true if this ResponseAdditionalDataInstallments object is equal to o.
   */
  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ResponseAdditionalDataInstallments responseAdditionalDataInstallments = (ResponseAdditionalDataInstallments) o;
    return Objects.equals(this.installmentPaymentDataInstallmentType, responseAdditionalDataInstallments.installmentPaymentDataInstallmentType) &&
        Objects.equals(this.installmentPaymentDataOptionItemNrAnnualPercentageRate, responseAdditionalDataInstallments.installmentPaymentDataOptionItemNrAnnualPercentageRate) &&
        Objects.equals(this.installmentPaymentDataOptionItemNrFirstInstallmentAmount, responseAdditionalDataInstallments.installmentPaymentDataOptionItemNrFirstInstallmentAmount) &&
        Objects.equals(this.installmentPaymentDataOptionItemNrInstallmentFee, responseAdditionalDataInstallments.installmentPaymentDataOptionItemNrInstallmentFee) &&
        Objects.equals(this.installmentPaymentDataOptionItemNrInterestRate, responseAdditionalDataInstallments.installmentPaymentDataOptionItemNrInterestRate) &&
        Objects.equals(this.installmentPaymentDataOptionItemNrMaximumNumberOfInstallments, responseAdditionalDataInstallments.installmentPaymentDataOptionItemNrMaximumNumberOfInstallments) &&
        Objects.equals(this.installmentPaymentDataOptionItemNrMinimumNumberOfInstallments, responseAdditionalDataInstallments.installmentPaymentDataOptionItemNrMinimumNumberOfInstallments) &&
        Objects.equals(this.installmentPaymentDataOptionItemNrNumberOfInstallments, responseAdditionalDataInstallments.installmentPaymentDataOptionItemNrNumberOfInstallments) &&
        Objects.equals(this.installmentPaymentDataOptionItemNrSubsequentInstallmentAmount, responseAdditionalDataInstallments.installmentPaymentDataOptionItemNrSubsequentInstallmentAmount) &&
        Objects.equals(this.installmentPaymentDataOptionItemNrTotalAmountDue, responseAdditionalDataInstallments.installmentPaymentDataOptionItemNrTotalAmountDue) &&
        Objects.equals(this.installmentPaymentDataPaymentOptions, responseAdditionalDataInstallments.installmentPaymentDataPaymentOptions) &&
        Objects.equals(this.installmentsValue, responseAdditionalDataInstallments.installmentsValue);
  }

  @Override
  public int hashCode() {
    return Objects.hash(installmentPaymentDataInstallmentType, installmentPaymentDataOptionItemNrAnnualPercentageRate, installmentPaymentDataOptionItemNrFirstInstallmentAmount, installmentPaymentDataOptionItemNrInstallmentFee, installmentPaymentDataOptionItemNrInterestRate, installmentPaymentDataOptionItemNrMaximumNumberOfInstallments, installmentPaymentDataOptionItemNrMinimumNumberOfInstallments, installmentPaymentDataOptionItemNrNumberOfInstallments, installmentPaymentDataOptionItemNrSubsequentInstallmentAmount, installmentPaymentDataOptionItemNrTotalAmountDue, installmentPaymentDataPaymentOptions, installmentsValue);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ResponseAdditionalDataInstallments {\n");
    sb.append("    installmentPaymentDataInstallmentType: ").append(toIndentedString(installmentPaymentDataInstallmentType)).append("\n");
    sb.append("    installmentPaymentDataOptionItemNrAnnualPercentageRate: ").append(toIndentedString(installmentPaymentDataOptionItemNrAnnualPercentageRate)).append("\n");
    sb.append("    installmentPaymentDataOptionItemNrFirstInstallmentAmount: ").append(toIndentedString(installmentPaymentDataOptionItemNrFirstInstallmentAmount)).append("\n");
    sb.append("    installmentPaymentDataOptionItemNrInstallmentFee: ").append(toIndentedString(installmentPaymentDataOptionItemNrInstallmentFee)).append("\n");
    sb.append("    installmentPaymentDataOptionItemNrInterestRate: ").append(toIndentedString(installmentPaymentDataOptionItemNrInterestRate)).append("\n");
    sb.append("    installmentPaymentDataOptionItemNrMaximumNumberOfInstallments: ").append(toIndentedString(installmentPaymentDataOptionItemNrMaximumNumberOfInstallments)).append("\n");
    sb.append("    installmentPaymentDataOptionItemNrMinimumNumberOfInstallments: ").append(toIndentedString(installmentPaymentDataOptionItemNrMinimumNumberOfInstallments)).append("\n");
    sb.append("    installmentPaymentDataOptionItemNrNumberOfInstallments: ").append(toIndentedString(installmentPaymentDataOptionItemNrNumberOfInstallments)).append("\n");
    sb.append("    installmentPaymentDataOptionItemNrSubsequentInstallmentAmount: ").append(toIndentedString(installmentPaymentDataOptionItemNrSubsequentInstallmentAmount)).append("\n");
    sb.append("    installmentPaymentDataOptionItemNrTotalAmountDue: ").append(toIndentedString(installmentPaymentDataOptionItemNrTotalAmountDue)).append("\n");
    sb.append("    installmentPaymentDataPaymentOptions: ").append(toIndentedString(installmentPaymentDataPaymentOptions)).append("\n");
    sb.append("    installmentsValue: ").append(toIndentedString(installmentsValue)).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 ResponseAdditionalDataInstallments given an JSON string
   *
   * @param jsonString JSON string
   * @return An instance of ResponseAdditionalDataInstallments
   * @throws JsonProcessingException if the JSON string is invalid with respect to ResponseAdditionalDataInstallments
   */
  public static ResponseAdditionalDataInstallments fromJson(String jsonString) throws JsonProcessingException {
    return JSON.getMapper().readValue(jsonString, ResponseAdditionalDataInstallments.class);
  }
/**
  * Convert an instance of ResponseAdditionalDataInstallments to an JSON string
  *
  * @return JSON string
  */
  public String toJson() throws JsonProcessingException {
    return JSON.getMapper().writeValueAsString(this);
  }
}

