package com.airlock.iam.oauth2.infrastructure.transfer.documentation;

import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.Map;

@JsonPropertyOrder(
   {
         "issuer",
         "authorization_endpoint",
         "token_endpoint",
         "jwks_uri",
         "response_types_supported",
         "subject_types_supported",
         "id_token_signing_alg_values_supported",
         "registration_endpoint",
         "scopes_supported",
         "response_modes_supported",
         "grant_types_supported",
         "acr_values_supported",
         "id_token_encryption_alg_values_supported",
         "id_token_encryption_enc_values_supported",
         "userinfo_signing_alg_values_supported",
         "userinfo_encryption_alg_values_supported",
         "userinfo_encryption_enc_values_supported",
         "request_object_signing_alg_values_supported",
         "request_object_encryption_alg_values_supported",
         "request_object_encryption_enc_values_supported",
         "token_endpoint_auth_methods_supported",
         "token_endpoint_auth_signing_alg_values_supported",
         "display_values_supported",
         "claim_types_supported",
         "claims_supported",
         "service_documentation",
         "claims_locales_supported",
         "ui_locales_supported",
         "claims_parameter_supported",
         "request_parameter_supported",
         "request_uri_parameter_supported",
         "require_request_uri_registration",
         "op_policy_uri",
         "op_tos_uri",
         "backchannel_logout_supported",
         "backchannel_logout_session_supported"
   }
)
@Schema(ref = "#/components/schemas/OAuth2DiscoveryAndMetadataResponseOverride")
public class OAuth2DiscoveryAndMetadataEndpointResponseData {
   @NotNull
   private String issuer;
   @NotNull
   @JsonProperty("authorization_endpoint")
   private String authorizationEndpoint;
   @JsonProperty("token_endpoint")
   private String tokenEndpoint;
   @JsonProperty("jwks_uri")
   @NotNull
   private String jwksUri;
   @JsonProperty("registration_endpoint")
   private String registrationEndpoint;
   @JsonProperty("scopes_supported")
   private String[] scopesSupported;
   @NotNull
   @JsonProperty("response_types_supported")
   private String[] responseTypesSupported;
   @JsonProperty("response_modes_supported")
   private String[] responseModesSupported;
   @JsonProperty("grant_types_supported")
   private String[] grantTypesSupported;
   @JsonProperty("acr_values_supported")
   private String[] acrValuesSupported;
   @NotNull
   @JsonProperty("subject_types_supported")
   private String[] subjectTypesSupported;
   @NotNull
   @JsonProperty("id_token_signing_alg_values_supported")
   private String[] idTokenSigningAlgValuesSupported;
   private String[] idTokenEncryptionAlgValuesSupported;
   private String[] idTokenEncryptionEncValuesSupported;
   private String[] userinfoSigningAlgValuesSupported;
   private String[] userinfoEncryptionAlgValuesSupported;
   private String[] userinfoEncryptionEncValuesSupported;
   private String[] requestObjectSigningAlgValuesSupported;
   private String[] requestObjectEncryptionAlgValuesSupported;
   private String[] requestObjectEncryptionEncValuesSupported;
   @JsonProperty("token_endpoint_auth_methods_supported")
   private String[] tokenEndpointAuthMethodsSupported;
   private String[] tokenEndpointAuthSigningAlgValuesSupported;
   private String[] displayValuesSupported;
   @JsonProperty("claim_types_supported")
   private String[] claimTypesSupported;
   @JsonProperty("claims_supported")
   private String[] claimsSupported;
   private String serviceDocumentation;
   private String[] claimsLocalesSupported;
   @JsonProperty("ui_locales_supported")
   private String[] uiLocalesSupported;
   private Boolean claimsParameterSupported;
   private Boolean requestParameterSupported;
   @JsonProperty("request_uri_parameter_supported")
   private Boolean requestUriParameterSupported;
   private Boolean requireRequestUriRegistration;
   private String opPolicyUri;
   private String opTosjUri;
   @JsonProperty("backchannel_logout_supported")
   private Boolean backchannelLogoutSupported;
   @JsonProperty("backchannel_logout_session_supported")
   private Boolean backchannelLogoutSessionSupported;
   @Schema(description = "Arbitrary additional claims.")
   private Map<String, Object> additionalClaims;

   @JsonAnyGetter
   public Map<String, Object> getAdditionalClaims() {
      return this.additionalClaims;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getIssuer() {
      return this.issuer;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getAuthorizationEndpoint() {
      return this.authorizationEndpoint;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getTokenEndpoint() {
      return this.tokenEndpoint;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getJwksUri() {
      return this.jwksUri;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getRegistrationEndpoint() {
      return this.registrationEndpoint;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getScopesSupported() {
      return this.scopesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getResponseTypesSupported() {
      return this.responseTypesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getResponseModesSupported() {
      return this.responseModesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getGrantTypesSupported() {
      return this.grantTypesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getAcrValuesSupported() {
      return this.acrValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getSubjectTypesSupported() {
      return this.subjectTypesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getIdTokenSigningAlgValuesSupported() {
      return this.idTokenSigningAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getIdTokenEncryptionAlgValuesSupported() {
      return this.idTokenEncryptionAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getIdTokenEncryptionEncValuesSupported() {
      return this.idTokenEncryptionEncValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getUserinfoSigningAlgValuesSupported() {
      return this.userinfoSigningAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getUserinfoEncryptionAlgValuesSupported() {
      return this.userinfoEncryptionAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getUserinfoEncryptionEncValuesSupported() {
      return this.userinfoEncryptionEncValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getRequestObjectSigningAlgValuesSupported() {
      return this.requestObjectSigningAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getRequestObjectEncryptionAlgValuesSupported() {
      return this.requestObjectEncryptionAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getRequestObjectEncryptionEncValuesSupported() {
      return this.requestObjectEncryptionEncValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getTokenEndpointAuthMethodsSupported() {
      return this.tokenEndpointAuthMethodsSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getTokenEndpointAuthSigningAlgValuesSupported() {
      return this.tokenEndpointAuthSigningAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getDisplayValuesSupported() {
      return this.displayValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getClaimTypesSupported() {
      return this.claimTypesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getClaimsSupported() {
      return this.claimsSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getServiceDocumentation() {
      return this.serviceDocumentation;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getClaimsLocalesSupported() {
      return this.claimsLocalesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String[] getUiLocalesSupported() {
      return this.uiLocalesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Boolean getClaimsParameterSupported() {
      return this.claimsParameterSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Boolean getRequestParameterSupported() {
      return this.requestParameterSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Boolean getRequestUriParameterSupported() {
      return this.requestUriParameterSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Boolean getRequireRequestUriRegistration() {
      return this.requireRequestUriRegistration;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getOpPolicyUri() {
      return this.opPolicyUri;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getOpTosjUri() {
      return this.opTosjUri;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Boolean getBackchannelLogoutSupported() {
      return this.backchannelLogoutSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Boolean getBackchannelLogoutSessionSupported() {
      return this.backchannelLogoutSessionSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setIssuer(String issuer) {
      this.issuer = issuer;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setAuthorizationEndpoint(String authorizationEndpoint) {
      this.authorizationEndpoint = authorizationEndpoint;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setTokenEndpoint(String tokenEndpoint) {
      this.tokenEndpoint = tokenEndpoint;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setJwksUri(String jwksUri) {
      this.jwksUri = jwksUri;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setRegistrationEndpoint(String registrationEndpoint) {
      this.registrationEndpoint = registrationEndpoint;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setScopesSupported(String[] scopesSupported) {
      this.scopesSupported = scopesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setResponseTypesSupported(String[] responseTypesSupported) {
      this.responseTypesSupported = responseTypesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setResponseModesSupported(String[] responseModesSupported) {
      this.responseModesSupported = responseModesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setGrantTypesSupported(String[] grantTypesSupported) {
      this.grantTypesSupported = grantTypesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setAcrValuesSupported(String[] acrValuesSupported) {
      this.acrValuesSupported = acrValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setSubjectTypesSupported(String[] subjectTypesSupported) {
      this.subjectTypesSupported = subjectTypesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setIdTokenSigningAlgValuesSupported(String[] idTokenSigningAlgValuesSupported) {
      this.idTokenSigningAlgValuesSupported = idTokenSigningAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setIdTokenEncryptionAlgValuesSupported(String[] idTokenEncryptionAlgValuesSupported) {
      this.idTokenEncryptionAlgValuesSupported = idTokenEncryptionAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setIdTokenEncryptionEncValuesSupported(String[] idTokenEncryptionEncValuesSupported) {
      this.idTokenEncryptionEncValuesSupported = idTokenEncryptionEncValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setUserinfoSigningAlgValuesSupported(String[] userinfoSigningAlgValuesSupported) {
      this.userinfoSigningAlgValuesSupported = userinfoSigningAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setUserinfoEncryptionAlgValuesSupported(String[] userinfoEncryptionAlgValuesSupported) {
      this.userinfoEncryptionAlgValuesSupported = userinfoEncryptionAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setUserinfoEncryptionEncValuesSupported(String[] userinfoEncryptionEncValuesSupported) {
      this.userinfoEncryptionEncValuesSupported = userinfoEncryptionEncValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setRequestObjectSigningAlgValuesSupported(String[] requestObjectSigningAlgValuesSupported) {
      this.requestObjectSigningAlgValuesSupported = requestObjectSigningAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setRequestObjectEncryptionAlgValuesSupported(String[] requestObjectEncryptionAlgValuesSupported) {
      this.requestObjectEncryptionAlgValuesSupported = requestObjectEncryptionAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setRequestObjectEncryptionEncValuesSupported(String[] requestObjectEncryptionEncValuesSupported) {
      this.requestObjectEncryptionEncValuesSupported = requestObjectEncryptionEncValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setTokenEndpointAuthMethodsSupported(String[] tokenEndpointAuthMethodsSupported) {
      this.tokenEndpointAuthMethodsSupported = tokenEndpointAuthMethodsSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setTokenEndpointAuthSigningAlgValuesSupported(String[] tokenEndpointAuthSigningAlgValuesSupported) {
      this.tokenEndpointAuthSigningAlgValuesSupported = tokenEndpointAuthSigningAlgValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setDisplayValuesSupported(String[] displayValuesSupported) {
      this.displayValuesSupported = displayValuesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setClaimTypesSupported(String[] claimTypesSupported) {
      this.claimTypesSupported = claimTypesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setClaimsSupported(String[] claimsSupported) {
      this.claimsSupported = claimsSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setServiceDocumentation(String serviceDocumentation) {
      this.serviceDocumentation = serviceDocumentation;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setClaimsLocalesSupported(String[] claimsLocalesSupported) {
      this.claimsLocalesSupported = claimsLocalesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setUiLocalesSupported(String[] uiLocalesSupported) {
      this.uiLocalesSupported = uiLocalesSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setClaimsParameterSupported(Boolean claimsParameterSupported) {
      this.claimsParameterSupported = claimsParameterSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setRequestParameterSupported(Boolean requestParameterSupported) {
      this.requestParameterSupported = requestParameterSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setRequestUriParameterSupported(Boolean requestUriParameterSupported) {
      this.requestUriParameterSupported = requestUriParameterSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setRequireRequestUriRegistration(Boolean requireRequestUriRegistration) {
      this.requireRequestUriRegistration = requireRequestUriRegistration;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setOpPolicyUri(String opPolicyUri) {
      this.opPolicyUri = opPolicyUri;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setOpTosjUri(String opTosjUri) {
      this.opTosjUri = opTosjUri;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setBackchannelLogoutSupported(Boolean backchannelLogoutSupported) {
      this.backchannelLogoutSupported = backchannelLogoutSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setBackchannelLogoutSessionSupported(Boolean backchannelLogoutSessionSupported) {
      this.backchannelLogoutSessionSupported = backchannelLogoutSessionSupported;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setAdditionalClaims(Map<String, Object> additionalClaims) {
      this.additionalClaims = additionalClaims;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public boolean equals(Object o) {
      if (o == this) {
         return true;
      } else if (!(o instanceof OAuth2DiscoveryAndMetadataEndpointResponseData other)) {
         return false;
      } else {
         if (!other.canEqual(this)) {
            return false;
         }

         Object this$claimsParameterSupported = this.claimsParameterSupported;
         Object other$claimsParameterSupported = other.claimsParameterSupported;
         if (this$claimsParameterSupported == null
            ? other$claimsParameterSupported == null
            : this$claimsParameterSupported.equals(other$claimsParameterSupported)) {
            Object this$requestParameterSupported = this.requestParameterSupported;
            Object other$requestParameterSupported = other.requestParameterSupported;
            if (this$requestParameterSupported == null
               ? other$requestParameterSupported == null
               : this$requestParameterSupported.equals(other$requestParameterSupported)) {
               Object this$requestUriParameterSupported = this.requestUriParameterSupported;
               Object other$requestUriParameterSupported = other.requestUriParameterSupported;
               if (this$requestUriParameterSupported == null
                  ? other$requestUriParameterSupported == null
                  : this$requestUriParameterSupported.equals(other$requestUriParameterSupported)) {
                  Object this$requireRequestUriRegistration = this.requireRequestUriRegistration;
                  Object other$requireRequestUriRegistration = other.requireRequestUriRegistration;
                  if (this$requireRequestUriRegistration == null
                     ? other$requireRequestUriRegistration == null
                     : this$requireRequestUriRegistration.equals(other$requireRequestUriRegistration)) {
                     Object this$backchannelLogoutSupported = this.backchannelLogoutSupported;
                     Object other$backchannelLogoutSupported = other.backchannelLogoutSupported;
                     if (this$backchannelLogoutSupported == null
                        ? other$backchannelLogoutSupported == null
                        : this$backchannelLogoutSupported.equals(other$backchannelLogoutSupported)) {
                        Object this$backchannelLogoutSessionSupported = this.backchannelLogoutSessionSupported;
                        Object other$backchannelLogoutSessionSupported = other.backchannelLogoutSessionSupported;
                        if (this$backchannelLogoutSessionSupported == null
                           ? other$backchannelLogoutSessionSupported == null
                           : this$backchannelLogoutSessionSupported.equals(other$backchannelLogoutSessionSupported)) {
                           Object this$issuer = this.issuer;
                           Object other$issuer = other.issuer;
                           if (this$issuer == null ? other$issuer == null : this$issuer.equals(other$issuer)) {
                              Object this$authorizationEndpoint = this.authorizationEndpoint;
                              Object other$authorizationEndpoint = other.authorizationEndpoint;
                              if (this$authorizationEndpoint == null
                                 ? other$authorizationEndpoint == null
                                 : this$authorizationEndpoint.equals(other$authorizationEndpoint)) {
                                 Object this$tokenEndpoint = this.tokenEndpoint;
                                 Object other$tokenEndpoint = other.tokenEndpoint;
                                 if (this$tokenEndpoint == null ? other$tokenEndpoint == null : this$tokenEndpoint.equals(other$tokenEndpoint)) {
                                    Object this$jwksUri = this.jwksUri;
                                    Object other$jwksUri = other.jwksUri;
                                    if (this$jwksUri == null ? other$jwksUri == null : this$jwksUri.equals(other$jwksUri)) {
                                       Object this$registrationEndpoint = this.registrationEndpoint;
                                       Object other$registrationEndpoint = other.registrationEndpoint;
                                       if (this$registrationEndpoint == null
                                          ? other$registrationEndpoint == null
                                          : this$registrationEndpoint.equals(other$registrationEndpoint)) {
                                          if (!Arrays.deepEquals(this.scopesSupported, other.scopesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.responseTypesSupported, other.responseTypesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.responseModesSupported, other.responseModesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.grantTypesSupported, other.grantTypesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.acrValuesSupported, other.acrValuesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.subjectTypesSupported, other.subjectTypesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.idTokenSigningAlgValuesSupported, other.idTokenSigningAlgValuesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.idTokenEncryptionAlgValuesSupported, other.idTokenEncryptionAlgValuesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.idTokenEncryptionEncValuesSupported, other.idTokenEncryptionEncValuesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.userinfoSigningAlgValuesSupported, other.userinfoSigningAlgValuesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.userinfoEncryptionAlgValuesSupported, other.userinfoEncryptionAlgValuesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.userinfoEncryptionEncValuesSupported, other.userinfoEncryptionEncValuesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.requestObjectSigningAlgValuesSupported, other.requestObjectSigningAlgValuesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(
                                             this.requestObjectEncryptionAlgValuesSupported, other.requestObjectEncryptionAlgValuesSupported
                                          )) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(
                                             this.requestObjectEncryptionEncValuesSupported, other.requestObjectEncryptionEncValuesSupported
                                          )) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.tokenEndpointAuthMethodsSupported, other.tokenEndpointAuthMethodsSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(
                                             this.tokenEndpointAuthSigningAlgValuesSupported, other.tokenEndpointAuthSigningAlgValuesSupported
                                          )) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.displayValuesSupported, other.displayValuesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.claimTypesSupported, other.claimTypesSupported)) {
                                             return false;
                                          }

                                          if (!Arrays.deepEquals(this.claimsSupported, other.claimsSupported)) {
                                             return false;
                                          }

                                          Object this$serviceDocumentation = this.serviceDocumentation;
                                          Object other$serviceDocumentation = other.serviceDocumentation;
                                          if (this$serviceDocumentation == null
                                             ? other$serviceDocumentation == null
                                             : this$serviceDocumentation.equals(other$serviceDocumentation)) {
                                             if (!Arrays.deepEquals(this.claimsLocalesSupported, other.claimsLocalesSupported)) {
                                                return false;
                                             }

                                             if (!Arrays.deepEquals(this.uiLocalesSupported, other.uiLocalesSupported)) {
                                                return false;
                                             }

                                             Object this$opPolicyUri = this.opPolicyUri;
                                             Object other$opPolicyUri = other.opPolicyUri;
                                             if (this$opPolicyUri == null ? other$opPolicyUri == null : this$opPolicyUri.equals(other$opPolicyUri)) {
                                                Object this$opTosjUri = this.opTosjUri;
                                                Object other$opTosjUri = other.opTosjUri;
                                                if (this$opTosjUri == null ? other$opTosjUri == null : this$opTosjUri.equals(other$opTosjUri)) {
                                                   Object this$additionalClaims = this.additionalClaims;
                                                   Object other$additionalClaims = other.additionalClaims;
                                                   return this$additionalClaims == null
                                                      ? other$additionalClaims == null
                                                      : this$additionalClaims.equals(other$additionalClaims);
                                                } else {
                                                   return false;
                                                }
                                             } else {
                                                return false;
                                             }
                                          } else {
                                             return false;
                                          }
                                       } else {
                                          return false;
                                       }
                                    } else {
                                       return false;
                                    }
                                 } else {
                                    return false;
                                 }
                              } else {
                                 return false;
                              }
                           } else {
                              return false;
                           }
                        } else {
                           return false;
                        }
                     } else {
                        return false;
                     }
                  } else {
                     return false;
                  }
               } else {
                  return false;
               }
            } else {
               return false;
            }
         } else {
            return false;
         }
      }
   }

   @SuppressFBWarnings(justification = "generated code")
   protected boolean canEqual(Object other) {
      return other instanceof OAuth2DiscoveryAndMetadataEndpointResponseData;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public int hashCode() {
      int PRIME = 59;
      int result = 1;
      Object $claimsParameterSupported = this.claimsParameterSupported;
      result = result * 59 + ($claimsParameterSupported == null ? 43 : $claimsParameterSupported.hashCode());
      Object $requestParameterSupported = this.requestParameterSupported;
      result = result * 59 + ($requestParameterSupported == null ? 43 : $requestParameterSupported.hashCode());
      Object $requestUriParameterSupported = this.requestUriParameterSupported;
      result = result * 59 + ($requestUriParameterSupported == null ? 43 : $requestUriParameterSupported.hashCode());
      Object $requireRequestUriRegistration = this.requireRequestUriRegistration;
      result = result * 59 + ($requireRequestUriRegistration == null ? 43 : $requireRequestUriRegistration.hashCode());
      Object $backchannelLogoutSupported = this.backchannelLogoutSupported;
      result = result * 59 + ($backchannelLogoutSupported == null ? 43 : $backchannelLogoutSupported.hashCode());
      Object $backchannelLogoutSessionSupported = this.backchannelLogoutSessionSupported;
      result = result * 59 + ($backchannelLogoutSessionSupported == null ? 43 : $backchannelLogoutSessionSupported.hashCode());
      Object $issuer = this.issuer;
      result = result * 59 + ($issuer == null ? 43 : $issuer.hashCode());
      Object $authorizationEndpoint = this.authorizationEndpoint;
      result = result * 59 + ($authorizationEndpoint == null ? 43 : $authorizationEndpoint.hashCode());
      Object $tokenEndpoint = this.tokenEndpoint;
      result = result * 59 + ($tokenEndpoint == null ? 43 : $tokenEndpoint.hashCode());
      Object $jwksUri = this.jwksUri;
      result = result * 59 + ($jwksUri == null ? 43 : $jwksUri.hashCode());
      Object $registrationEndpoint = this.registrationEndpoint;
      result = result * 59 + ($registrationEndpoint == null ? 43 : $registrationEndpoint.hashCode());
      result = result * 59 + Arrays.deepHashCode(this.scopesSupported);
      result = result * 59 + Arrays.deepHashCode(this.responseTypesSupported);
      result = result * 59 + Arrays.deepHashCode(this.responseModesSupported);
      result = result * 59 + Arrays.deepHashCode(this.grantTypesSupported);
      result = result * 59 + Arrays.deepHashCode(this.acrValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.subjectTypesSupported);
      result = result * 59 + Arrays.deepHashCode(this.idTokenSigningAlgValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.idTokenEncryptionAlgValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.idTokenEncryptionEncValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.userinfoSigningAlgValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.userinfoEncryptionAlgValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.userinfoEncryptionEncValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.requestObjectSigningAlgValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.requestObjectEncryptionAlgValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.requestObjectEncryptionEncValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.tokenEndpointAuthMethodsSupported);
      result = result * 59 + Arrays.deepHashCode(this.tokenEndpointAuthSigningAlgValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.displayValuesSupported);
      result = result * 59 + Arrays.deepHashCode(this.claimTypesSupported);
      result = result * 59 + Arrays.deepHashCode(this.claimsSupported);
      Object $serviceDocumentation = this.serviceDocumentation;
      result = result * 59 + ($serviceDocumentation == null ? 43 : $serviceDocumentation.hashCode());
      result = result * 59 + Arrays.deepHashCode(this.claimsLocalesSupported);
      result = result * 59 + Arrays.deepHashCode(this.uiLocalesSupported);
      Object $opPolicyUri = this.opPolicyUri;
      result = result * 59 + ($opPolicyUri == null ? 43 : $opPolicyUri.hashCode());
      Object $opTosjUri = this.opTosjUri;
      result = result * 59 + ($opTosjUri == null ? 43 : $opTosjUri.hashCode());
      Object $additionalClaims = this.additionalClaims;
      return result * 59 + ($additionalClaims == null ? 43 : $additionalClaims.hashCode());
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public String toString() {
      return "OAuth2DiscoveryAndMetadataEndpointResponseData(issuer="
         + this.getIssuer()
         + ", authorizationEndpoint="
         + this.getAuthorizationEndpoint()
         + ", tokenEndpoint="
         + this.getTokenEndpoint()
         + ", jwksUri="
         + this.getJwksUri()
         + ", registrationEndpoint="
         + this.getRegistrationEndpoint()
         + ", scopesSupported="
         + Arrays.deepToString(this.getScopesSupported())
         + ", responseTypesSupported="
         + Arrays.deepToString(this.getResponseTypesSupported())
         + ", responseModesSupported="
         + Arrays.deepToString(this.getResponseModesSupported())
         + ", grantTypesSupported="
         + Arrays.deepToString(this.getGrantTypesSupported())
         + ", acrValuesSupported="
         + Arrays.deepToString(this.getAcrValuesSupported())
         + ", subjectTypesSupported="
         + Arrays.deepToString(this.getSubjectTypesSupported())
         + ", idTokenSigningAlgValuesSupported="
         + Arrays.deepToString(this.getIdTokenSigningAlgValuesSupported())
         + ", idTokenEncryptionAlgValuesSupported="
         + Arrays.deepToString(this.getIdTokenEncryptionAlgValuesSupported())
         + ", idTokenEncryptionEncValuesSupported="
         + Arrays.deepToString(this.getIdTokenEncryptionEncValuesSupported())
         + ", userinfoSigningAlgValuesSupported="
         + Arrays.deepToString(this.getUserinfoSigningAlgValuesSupported())
         + ", userinfoEncryptionAlgValuesSupported="
         + Arrays.deepToString(this.getUserinfoEncryptionAlgValuesSupported())
         + ", userinfoEncryptionEncValuesSupported="
         + Arrays.deepToString(this.getUserinfoEncryptionEncValuesSupported())
         + ", requestObjectSigningAlgValuesSupported="
         + Arrays.deepToString(this.getRequestObjectSigningAlgValuesSupported())
         + ", requestObjectEncryptionAlgValuesSupported="
         + Arrays.deepToString(this.getRequestObjectEncryptionAlgValuesSupported())
         + ", requestObjectEncryptionEncValuesSupported="
         + Arrays.deepToString(this.getRequestObjectEncryptionEncValuesSupported())
         + ", tokenEndpointAuthMethodsSupported="
         + Arrays.deepToString(this.getTokenEndpointAuthMethodsSupported())
         + ", tokenEndpointAuthSigningAlgValuesSupported="
         + Arrays.deepToString(this.getTokenEndpointAuthSigningAlgValuesSupported())
         + ", displayValuesSupported="
         + Arrays.deepToString(this.getDisplayValuesSupported())
         + ", claimTypesSupported="
         + Arrays.deepToString(this.getClaimTypesSupported())
         + ", claimsSupported="
         + Arrays.deepToString(this.getClaimsSupported())
         + ", serviceDocumentation="
         + this.getServiceDocumentation()
         + ", claimsLocalesSupported="
         + Arrays.deepToString(this.getClaimsLocalesSupported())
         + ", uiLocalesSupported="
         + Arrays.deepToString(this.getUiLocalesSupported())
         + ", claimsParameterSupported="
         + this.getClaimsParameterSupported()
         + ", requestParameterSupported="
         + this.getRequestParameterSupported()
         + ", requestUriParameterSupported="
         + this.getRequestUriParameterSupported()
         + ", requireRequestUriRegistration="
         + this.getRequireRequestUriRegistration()
         + ", opPolicyUri="
         + this.getOpPolicyUri()
         + ", opTosjUri="
         + this.getOpTosjUri()
         + ", backchannelLogoutSupported="
         + this.getBackchannelLogoutSupported()
         + ", backchannelLogoutSessionSupported="
         + this.getBackchannelLogoutSessionSupported()
         + ", additionalClaims="
         + this.getAdditionalClaims()
         + ")";
   }
}
