public interface io.vertx.ext.auth.oauth2.providers.OpenIDConnectAuth
  minor version: 0
  major version: 59
  flags: flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: io.vertx.ext.auth.oauth2.providers.OpenIDConnectAuth
  super_class: java.lang.Object
{
  public static void discover(io.vertx.core.Vertx, io.vertx.ext.auth.oauth2.OAuth2ClientOptions, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.auth.oauth2.OAuth2Auth>>);
    descriptor: (Lio/vertx/core/Vertx;Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;Lio/vertx/core/Handler;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=4, args_size=3
        start local 0 // io.vertx.core.Vertx vertx
        start local 1 // io.vertx.ext.auth.oauth2.OAuth2ClientOptions config
        start local 2 // io.vertx.core.Handler handler
         0: .line 37
            aload 1 /* config */
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getSite:()Ljava/lang/String;
            ifnonnull 3
         1: .line 38
            aload 2 /* handler */
            ldc "issuer cannot be null"
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         2: .line 39
            return
         3: .line 42
      StackMap locals:
      StackMap stack:
            aload 0 /* vertx */
            aload 1 /* config */
            getstatic io.vertx.core.http.HttpMethod.GET:Lio/vertx/core/http/HttpMethod;
            new java.lang.StringBuilder
            dup
            aload 1 /* config */
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getSite:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/.well-known/openid-configuration"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* handler */
            aload 1 /* config */
            aload 0 /* vertx */
            invokedynamic handle(Lio/vertx/core/Handler;Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;Lio/vertx/core/Vertx;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/ext/auth/oauth2/providers/OpenIDConnectAuth.lambda$0(Lio/vertx/core/Handler;Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;Lio/vertx/core/Vertx;Lio/vertx/core/AsyncResult;)V (6 itf)
                  (Lio/vertx/core/AsyncResult;)V
            invokestatic io.vertx.ext.auth.oauth2.impl.OAuth2API.makeRequest:(Lio/vertx/core/Vertx;Lio/vertx/core/http/HttpClientOptions;Lio/vertx/core/http/HttpMethod;Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/http/HttpClientRequest;
            astore 3 /* request */
        start local 3 // io.vertx.core.http.HttpClientRequest request
         4: .line 95
            aload 3 /* request */
            aload 2 /* handler */
            invokedynamic handle(Lio/vertx/core/Handler;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/ext/auth/oauth2/providers/OpenIDConnectAuth.lambda$2(Lio/vertx/core/Handler;Ljava/lang/Throwable;)V (6 itf)
                  (Ljava/lang/Throwable;)V
            invokeinterface io.vertx.core.http.HttpClientRequest.exceptionHandler:(Lio/vertx/core/Handler;)Lio/vertx/core/http/HttpClientRequest;
            pop
         5: .line 97
            aload 3 /* request */
            ldc "Accept"
            ldc "application/json"
            invokeinterface io.vertx.core.http.HttpClientRequest.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpClientRequest;
            pop
         6: .line 99
            aload 3 /* request */
            invokeinterface io.vertx.core.http.HttpClientRequest.end:()V
         7: .line 100
            return
        end local 3 // io.vertx.core.http.HttpClientRequest request
        end local 2 // io.vertx.core.Handler handler
        end local 1 // io.vertx.ext.auth.oauth2.OAuth2ClientOptions config
        end local 0 // io.vertx.core.Vertx vertx
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0    vertx  Lio/vertx/core/Vertx;
            0    8     1   config  Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            0    8     2  handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/oauth2/OAuth2Auth;>;>;
            4    8     3  request  Lio/vertx/core/http/HttpClientRequest;
    Signature: (Lio/vertx/core/Vertx;Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/oauth2/OAuth2Auth;>;>;)V
    MethodParameters:
         Name  Flags
      vertx    final
      config   final
      handler  final

  private static void lambda$0(io.vertx.core.Handler, io.vertx.ext.auth.oauth2.OAuth2ClientOptions, io.vertx.core.Vertx, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/Handler;Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;Lio/vertx/core/Vertx;Lio/vertx/core/AsyncResult;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=7, args_size=4
        start local 3 // io.vertx.core.AsyncResult res
         0: .line 43
            aload 3 /* res */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 3
         1: .line 44
            aload 0
            aload 3 /* res */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         2: .line 45
            return
         3: .line 48
      StackMap locals:
      StackMap stack:
            aload 3 /* res */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.ext.auth.oauth2.OAuth2Response
            astore 4 /* response */
        start local 4 // io.vertx.ext.auth.oauth2.OAuth2Response response
         4: .line 50
            aload 4 /* response */
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.statusCode:()I
            sipush 200
            if_icmpeq 7
         5: .line 51
            aload 0
            new java.lang.StringBuilder
            dup
            ldc "Bad Response ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* response */
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.statusCode:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "] "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* response */
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.body:()Lio/vertx/core/buffer/Buffer;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         6: .line 52
            return
         7: .line 55
      StackMap locals: io.vertx.ext.auth.oauth2.OAuth2Response
      StackMap stack:
            aload 4 /* response */
            ldc "application/json"
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.is:(Ljava/lang/String;)Z
            ifne 10
         8: .line 56
            aload 0
            new java.lang.StringBuilder
            dup
            ldc "Cannot handle Content-Type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* response */
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.headers:()Lio/vertx/core/MultiMap;
            ldc "Content-Type"
            invokeinterface io.vertx.core.MultiMap.get:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         9: .line 57
            return
        10: .line 60
      StackMap locals:
      StackMap stack:
            aload 4 /* response */
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.jsonObject:()Lio/vertx/core/json/JsonObject;
            astore 5 /* json */
        start local 5 // io.vertx.core.json.JsonObject json
        11: .line 63
            aload 1
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.isValidateIssuer:()Z
            ifeq 16
        12: .line 64
            aload 5 /* json */
            ldc "issuer"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* issuerEndpoint */
        start local 6 // java.lang.String issuerEndpoint
        13: .line 65
            aload 6 /* issuerEndpoint */
            ifnull 16
            aload 1
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getSite:()Ljava/lang/String;
            aload 6 /* issuerEndpoint */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 16
        14: .line 66
            aload 0
            new java.lang.StringBuilder
            dup
            ldc "issuer validation failed: received ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* issuerEndpoint */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        15: .line 67
            return
        end local 6 // java.lang.String issuerEndpoint
        16: .line 71
      StackMap locals: io.vertx.core.json.JsonObject
      StackMap stack:
            aload 1
            aload 5 /* json */
            ldc "authorization_endpoint"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.setAuthorizationPath:(Ljava/lang/String;)Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            pop
        17: .line 72
            aload 1
            aload 5 /* json */
            ldc "token_endpoint"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.setTokenPath:(Ljava/lang/String;)Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            pop
        18: .line 73
            aload 1
            aload 5 /* json */
            ldc "token_introspection_endpoint"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.setIntrospectionPath:(Ljava/lang/String;)Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            pop
        19: .line 74
            aload 1
            aload 5 /* json */
            ldc "end_session_endpoint"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.setLogoutPath:(Ljava/lang/String;)Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            pop
        20: .line 75
            aload 1
            aload 5 /* json */
            ldc "revocation_endpoint"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.setRevocationPath:(Ljava/lang/String;)Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            pop
        21: .line 76
            aload 1
            aload 5 /* json */
            ldc "userinfo_endpoint"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.setUserInfoPath:(Ljava/lang/String;)Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            pop
        22: .line 77
            aload 1
            aload 5 /* json */
            ldc "jwks_uri"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.setJwkPath:(Ljava/lang/String;)Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            pop
        23: .line 79
            aload 2
            aload 1
            invokestatic io.vertx.ext.auth.oauth2.OAuth2Auth.create:(Lio/vertx/core/Vertx;Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
            astore 6 /* oidc */
        start local 6 // io.vertx.ext.auth.oauth2.OAuth2Auth oidc
        24: .line 81
            aload 1
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getJwkPath:()Ljava/lang/String;
            ifnull 27
        25: .line 82
            aload 6 /* oidc */
            aload 0
            aload 6 /* oidc */
            invokedynamic handle(Lio/vertx/core/Handler;Lio/vertx/ext/auth/oauth2/OAuth2Auth;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/ext/auth/oauth2/providers/OpenIDConnectAuth.lambda$1(Lio/vertx/core/Handler;Lio/vertx/ext/auth/oauth2/OAuth2Auth;Lio/vertx/core/AsyncResult;)V (6 itf)
                  (Lio/vertx/core/AsyncResult;)V
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Auth.loadJWK:(Lio/vertx/core/Handler;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
            pop
        26: .line 90
            goto 28
        27: .line 91
      StackMap locals: io.vertx.ext.auth.oauth2.OAuth2Auth
      StackMap stack:
            aload 0
            aload 6 /* oidc */
            invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        end local 6 // io.vertx.ext.auth.oauth2.OAuth2Auth oidc
        end local 5 // io.vertx.core.json.JsonObject json
        end local 4 // io.vertx.ext.auth.oauth2.OAuth2Response response
        28: .line 93
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.vertx.core.AsyncResult res
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   29     3             res  Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/oauth2/OAuth2Response;>;
            4   28     4        response  Lio/vertx/ext/auth/oauth2/OAuth2Response;
           11   28     5            json  Lio/vertx/core/json/JsonObject;
           13   16     6  issuerEndpoint  Ljava/lang/String;
           24   28     6            oidc  Lio/vertx/ext/auth/oauth2/OAuth2Auth;

  private static void lambda$2(io.vertx.core.Handler, java.lang.Throwable);
    descriptor: (Lio/vertx/core/Handler;Ljava/lang/Throwable;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.Throwable t
         0: .line 95
            aload 0
            aload 1 /* t */
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
            return
        end local 1 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1     t  Ljava/lang/Throwable;

  private static void lambda$1(io.vertx.core.Handler, io.vertx.ext.auth.oauth2.OAuth2Auth, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/Handler;Lio/vertx/ext/auth/oauth2/OAuth2Auth;Lio/vertx/core/AsyncResult;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=3
        start local 2 // io.vertx.core.AsyncResult v
         0: .line 83
            aload 2 /* v */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 3
         1: .line 84
            aload 0
            aload 2 /* v */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         2: .line 85
            return
         3: .line 88
      StackMap locals:
      StackMap stack:
            aload 0
            aload 1
            invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         4: .line 89
            return
        end local 2 // io.vertx.core.AsyncResult v
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     2     v  Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;
}
SourceFile: "OpenIDConnectAuth.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
    RuntimeVisibleAnnotations: 
      io.vertx.codegen.annotations.VertxGen()