content: /*
   * Fund API
   * This API is used for the classic integration. If you are just starting your implementation, refer to our [new integration guide](https://docs.adyen.com/marketplaces-and-platforms) instead.  The Fund API provides endpoints for managing the funds in the accounts on your platform. These management operations include, for example, the transfer of funds from one account to another, the payout of funds to an account holder, and the retrieval of balances in an account.  For more information, refer to our [documentation](https://docs.adyen.com/marketplaces-and-platforms/classic/). ## Authentication Your Adyen contact will provide your API credential and an API key. To connect to the API, add an `X-API-Key` header with the API key as the value, for example:   ``` curl -H \"Content-Type: application/json\" \\ -H \"X-API-Key: YOUR_API_KEY\" \\ ... ```  Alternatively, you can use the username and password to connect to the API using basic authentication. For example:  ``` curl -U \"ws@MarketPlace.YOUR_PLATFORM_ACCOUNT\":\"YOUR_WS_PASSWORD\" \\ -H \"Content-Type: application/json\" \\ ... ``` When going live, you need to generate new web service user credentials to access the [live endpoints](https://docs.adyen.com/development-resources/live-endpoints).  ## Versioning The Fund API supports [versioning](https://docs.adyen.com/development-resources/versioning) using a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.  For example: ``` https://cal-test.adyen.com/cal/services/Fund/v6/accountHolderBalance ```
   *
   * The version of the OpenAPI document: 6
   *
   *
   * 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.marketpayfund;
  
  import com.fasterxml.jackson.annotation.JsonValue;
  import jakarta.ws.rs.core.GenericType;
  import java.util.Map;
  import java.util.Objects;
  
  /** Abstract class for oneOf,anyOf schemas defined in OpenAPI spec */
  public abstract class AbstractOpenApiSchema {
  
    // store the actual instance of the schema/object
    private Object instance;
  
    // is nullable
    private Boolean isNullable;
  
    // schema type (e.g. oneOf, anyOf)
    private final String schemaType;
  
    public AbstractOpenApiSchema(String schemaType, Boolean isNullable) {
      this.schemaType = schemaType;
      this.isNullable = isNullable;
    }
  
    /**
     * Get the list of oneOf/anyOf composed schemas allowed to be stored in this object
     *
     * @return an instance of the actual schema/object
     */
    public abstract Map<String, GenericType> getSchemas();
  
    /**
     * Get the actual instance
     *
     * @return an instance of the actual schema/object
     */
    @JsonValue
    public Object getActualInstance() {
      return instance;
    }
  
    /**
     * Set the actual instance
     *
     * @param instance the actual instance of the schema/object
     */
    public void setActualInstance(Object instance) {
      this.instance = instance;
    }
  
    /**
     * Get the instant recursively when the schemas defined in oneOf/anyof happen to be oneOf/anyOf
     * schema as well
     *
     * @return an instance of the actual schema/object
     */
    public Object getActualInstanceRecursively() {
      return getActualInstanceRecursively(this);
    }
  
    private Object getActualInstanceRecursively(AbstractOpenApiSchema object) {
      if (object.getActualInstance() == null) {
        return null;
      } else if (object.getActualInstance() instanceof AbstractOpenApiSchema) {
        return getActualInstanceRecursively((AbstractOpenApiSchema) object.getActualInstance());
      } else {
        return object.getActualInstance();
      }
    }
  
    /**
     * Get the schema type (e.g. anyOf, oneOf)
     *
     * @return the schema type
     */
    public String getSchemaType() {
      return schemaType;
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class ").append(getClass()).append(" {\n");
      sb.append("    instance: ").append(toIndentedString(instance)).append("\n");
      sb.append("    isNullable: ").append(toIndentedString(isNullable)).append("\n");
      sb.append("    schemaType: ").append(toIndentedString(schemaType)).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    ");
    }
  
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      AbstractOpenApiSchema a = (AbstractOpenApiSchema) o;
      return Objects.equals(this.instance, a.instance)
          && Objects.equals(this.isNullable, a.isNullable)
          && Objects.equals(this.schemaType, a.schemaType);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(instance, isNullable, schemaType);
    }
  
    /**
     * Is nullable
     *
     * @return true if it's nullable
     */
    public Boolean isNullable() {
      if (Boolean.TRUE.equals(isNullable)) {
        return Boolean.TRUE;
      } else {
        return Boolean.FALSE;
      }
    }
  }
  