public class io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl implements io.vertx.ext.auth.oauth2.OAuth2Auth
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl
  super_class: java.lang.Object
{
  private static final io.vertx.core.impl.logging.Logger LOG;
    descriptor: Lio/vertx/core/impl/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final io.vertx.core.Vertx vertx;
    descriptor: Lio/vertx/core/Vertx;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.vertx.ext.auth.oauth2.OAuth2Options config;
    descriptor: Lio/vertx/ext/auth/oauth2/OAuth2Options;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.vertx.ext.auth.oauth2.impl.OAuth2API api;
    descriptor: Lio/vertx/ext/auth/oauth2/impl/OAuth2API;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile io.vertx.ext.auth.impl.jose.JWT jwt;
    descriptor: Lio/vertx/ext/auth/impl/jose/JWT;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private long updateTimerId;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private io.vertx.core.Handler<java.lang.String> missingKeyHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Ljava/lang/String;>;

  private static volatile int[] $SWITCH_TABLE$io$vertx$ext$auth$oauth2$OAuth2FlowType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 47
            ldc Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            invokestatic io.vertx.core.impl.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/impl/logging/Logger;
            putstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(io.vertx.core.Vertx, io.vertx.ext.auth.oauth2.OAuth2Options);
    descriptor: (Lio/vertx/core/Vertx;Lio/vertx/ext/auth/oauth2/OAuth2Options;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // io.vertx.ext.auth.oauth2.OAuth2Options config
         0: .line 59
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 55
            aload 0 /* this */
            new io.vertx.ext.auth.impl.jose.JWT
            dup
            invokespecial io.vertx.ext.auth.impl.jose.JWT.<init>:()V
            putfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
         2: .line 56
            aload 0 /* this */
            ldc -1
            putfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.updateTimerId:J
         3: .line 60
            aload 0 /* this */
            aload 1 /* vertx */
            putfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.vertx:Lio/vertx/core/Vertx;
         4: .line 61
            aload 0 /* this */
            aload 2 /* config */
            putfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
         5: .line 62
            aload 0 /* this */
            new io.vertx.ext.auth.oauth2.impl.OAuth2API
            dup
            aload 1 /* vertx */
            aload 2 /* config */
            invokespecial io.vertx.ext.auth.oauth2.impl.OAuth2API.<init>:(Lio/vertx/core/Vertx;Lio/vertx/ext/auth/oauth2/OAuth2Options;)V
            putfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.api:Lio/vertx/ext/auth/oauth2/impl/OAuth2API;
         6: .line 65
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            iconst_1
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.replaceVariables:(Z)V
         7: .line 66
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.validate:()V
         8: .line 68
            aload 2 /* config */
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getPubSecKeys:()Ljava/util/List;
            ifnull 13
         9: .line 69
            aload 2 /* config */
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getPubSecKeys:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 12
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.oauth2.OAuth2Options top java.util.Iterator
      StackMap stack:
        10: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.ext.auth.PubSecKeyOptions
            astore 3 /* pubSecKey */
        start local 3 // io.vertx.ext.auth.PubSecKeyOptions pubSecKey
        11: .line 70
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            new io.vertx.ext.auth.impl.jose.JWK
            dup
            aload 3 /* pubSecKey */
            invokespecial io.vertx.ext.auth.impl.jose.JWK.<init>:(Lio/vertx/ext/auth/PubSecKeyOptions;)V
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.addJWK:(Lio/vertx/ext/auth/impl/jose/JWK;)Lio/vertx/ext/auth/impl/jose/JWT;
            pop
        end local 3 // io.vertx.ext.auth.PubSecKeyOptions pubSecKey
        12: .line 69
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        13: .line 73
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.oauth2.OAuth2Options
      StackMap stack:
            return
        end local 2 // io.vertx.ext.auth.oauth2.OAuth2Options config
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0   14     1      vertx  Lio/vertx/core/Vertx;
            0   14     2     config  Lio/vertx/ext/auth/oauth2/OAuth2Options;
           11   12     3  pubSecKey  Lio/vertx/ext/auth/PubSecKeyOptions;
    MethodParameters:
        Name  Flags
      vertx   
      config  

  public io.vertx.ext.auth.oauth2.OAuth2Auth jWKSet(io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Void>>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.core.Handler handler
         0: .line 77
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.api:Lio/vertx/ext/auth/oauth2/impl/OAuth2API;
            aload 0 /* this */
            aload 1 /* handler */
            invokedynamic handle(Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;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/impl/OAuth2AuthProviderImpl.lambda$0(Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2API.jwkSet:(Lio/vertx/core/Handler;)V
         1: .line 122
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler handler
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    2     1  handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;
    Signature: (Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    MethodParameters:
         Name  Flags
      handler  

  public io.vertx.ext.auth.oauth2.OAuth2Auth missingKeyHandler(io.vertx.core.Handler<java.lang.String>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.core.Handler handler
         0: .line 127
            aload 0 /* this */
            aload 1 /* handler */
            putfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.missingKeyHandler:Lio/vertx/core/Handler;
         1: .line 128
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler handler
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    2     1  handler  Lio/vertx/core/Handler<Ljava/lang/String;>;
    Signature: (Lio/vertx/core/Handler<Ljava/lang/String;>;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    MethodParameters:
         Name  Flags
      handler  

  public io.vertx.ext.auth.oauth2.OAuth2Options getConfig();
    descriptor: ()Lio/vertx/ext/auth/oauth2/OAuth2Options;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
         0: .line 132
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            areturn
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;

  public void authenticate(io.vertx.core.json.JsonObject, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.auth.User>>);
    descriptor: (Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.core.json.JsonObject authInfo
        start local 2 // io.vertx.core.Handler handler
         0: .line 137
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getFlow:()Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            astore 3 /* flow */
        start local 3 // io.vertx.ext.auth.oauth2.OAuth2FlowType flow
         1: .line 139
            aload 1 /* authInfo */
            ldc "access_token"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 7
         2: .line 140
            aload 3 /* flow */
            getstatic io.vertx.ext.auth.oauth2.OAuth2FlowType.AUTH_JWT:Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            if_acmpeq 5
            aload 3 /* flow */
            getstatic io.vertx.ext.auth.oauth2.OAuth2FlowType.IMPLICIT:Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            if_acmpeq 5
         3: .line 141
            aload 0 /* this */
            new io.vertx.ext.auth.authentication.TokenCredentials
            dup
            aload 1 /* authInfo */
            ldc "access_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial io.vertx.ext.auth.authentication.TokenCredentials.<init>:(Ljava/lang/String;)V
            aload 2 /* handler */
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.authenticate:(Lio/vertx/ext/auth/authentication/Credentials;Lio/vertx/core/Handler;)V
         4: .line 142
            goto 6
         5: .line 143
      StackMap locals: io.vertx.ext.auth.oauth2.OAuth2FlowType
      StackMap stack:
            aload 2 /* handler */
            ldc "access_token provided but provider is not configured for AUTH_CODE"
            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 145
      StackMap locals:
      StackMap stack:
            return
         7: .line 147
      StackMap locals:
      StackMap stack:
            aload 1 /* authInfo */
            ldc "username"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 13
            aload 1 /* authInfo */
            ldc "password"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 13
         8: .line 148
            aload 3 /* flow */
            getstatic io.vertx.ext.auth.oauth2.OAuth2FlowType.PASSWORD:Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            if_acmpne 11
         9: .line 149
            aload 0 /* this */
            new io.vertx.ext.auth.authentication.UsernamePasswordCredentials
            dup
            aload 1 /* authInfo */
            ldc "username"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 1 /* authInfo */
            ldc "password"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial io.vertx.ext.auth.authentication.UsernamePasswordCredentials.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            aload 2 /* handler */
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.authenticate:(Lio/vertx/ext/auth/authentication/Credentials;Lio/vertx/core/Handler;)V
        10: .line 150
            goto 12
        11: .line 151
      StackMap locals:
      StackMap stack:
            aload 2 /* handler */
            ldc "username/password provided but provider is not configured for PASSWORD"
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        12: .line 153
      StackMap locals:
      StackMap stack:
            return
        13: .line 155
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new io.vertx.ext.auth.oauth2.Oauth2Credentials
            dup
            aload 1 /* authInfo */
            invokespecial io.vertx.ext.auth.oauth2.Oauth2Credentials.<init>:(Lio/vertx/core/json/JsonObject;)V
            aload 2 /* handler */
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.authenticate:(Lio/vertx/ext/auth/authentication/Credentials;Lio/vertx/core/Handler;)V
        14: .line 156
            return
        end local 3 // io.vertx.ext.auth.oauth2.OAuth2FlowType flow
        end local 2 // io.vertx.core.Handler handler
        end local 1 // io.vertx.core.json.JsonObject authInfo
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0   15     1  authInfo  Lio/vertx/core/json/JsonObject;
            0   15     2   handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;
            1   15     3      flow  Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
    Signature: (Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;)V
    MethodParameters:
          Name  Flags
      authInfo  
      handler   

  public void authenticate(io.vertx.ext.auth.authentication.Credentials, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.auth.User>>);
    descriptor: (Lio/vertx/ext/auth/authentication/Credentials;Lio/vertx/core/Handler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.ext.auth.authentication.Credentials credentials
        start local 2 // io.vertx.core.Handler handler
         0: .line 165
            aload 1 /* credentials */
            instanceof io.vertx.ext.auth.authentication.TokenCredentials
            ifeq 18
         1: .line 167
            aload 1 /* credentials */
            checkcast io.vertx.ext.auth.authentication.TokenCredentials
            astore 3 /* tokenCredentials */
        start local 3 // io.vertx.ext.auth.authentication.TokenCredentials tokenCredentials
         2: .line 168
            aload 3 /* tokenCredentials */
            aconst_null
            invokevirtual io.vertx.ext.auth.authentication.TokenCredentials.checkValid:(Ljava/lang/Object;)V
         3: .line 176
            aload 0 /* this */
            new io.vertx.core.json.JsonObject
            dup
            invokespecial io.vertx.core.json.JsonObject.<init>:()V
            ldc "access_token"
            aload 3 /* tokenCredentials */
            invokevirtual io.vertx.ext.auth.authentication.TokenCredentials.getToken:()Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            iconst_0
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.createUser:(Lio/vertx/core/json/JsonObject;Z)Lio/vertx/ext/auth/User;
            astore 4 /* user */
        start local 4 // io.vertx.ext.auth.User user
         4: .line 178
            aload 4 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            ldc "accessToken"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 9
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.isUnsecure:()Z
            ifne 9
         5: .line 179
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getJWTOptions:()Lio/vertx/ext/auth/JWTOptions;
            astore 5 /* jwtOptions */
        start local 5 // io.vertx.ext.auth.JWTOptions jwtOptions
         6: .line 182
            aload 4 /* user */
            aload 5 /* jwtOptions */
            invokevirtual io.vertx.ext.auth.JWTOptions.getLeeway:()I
            invokeinterface io.vertx.ext.auth.User.expired:(I)Z
            ifne 9
         7: .line 185
            aload 0 /* this */
            aload 4 /* user */
            aload 2 /* handler */
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.validateUser:(Lio/vertx/ext/auth/User;Lio/vertx/core/Handler;)V
         8: .line 186
            return
        end local 5 // io.vertx.ext.auth.JWTOptions jwtOptions
         9: .line 195
      StackMap locals: io.vertx.ext.auth.authentication.TokenCredentials io.vertx.ext.auth.User
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getIntrospectionPath:()Ljava/lang/String;
            ifnonnull 15
        10: .line 198
            aload 4 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            ldc "missing-kid"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 13
        11: .line 199
            aload 2 /* handler */
            new io.vertx.ext.auth.NoSuchKeyIdException
            dup
            aload 4 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            ldc "missing-kid"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial io.vertx.ext.auth.NoSuchKeyIdException.<init>:(Ljava/lang/String;)V
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        12: .line 200
            goto 14
        13: .line 201
      StackMap locals:
      StackMap stack:
            aload 2 /* handler */
            ldc "Can't authenticate access_token: Provider doesn't support token introspection"
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        14: .line 203
      StackMap locals:
      StackMap stack:
            return
        15: .line 207
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.api:Lio/vertx/ext/auth/oauth2/impl/OAuth2API;
        16: .line 208
            ldc "access_token"
            aload 4 /* user */
            invokeinterface io.vertx.ext.auth.User.principal:()Lio/vertx/core/json/JsonObject;
            ldc "access_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 0 /* this */
            aload 2 /* handler */
            aload 4 /* user */
            invokedynamic handle(Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;Lio/vertx/core/Handler;Lio/vertx/ext/auth/User;)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/impl/OAuth2AuthProviderImpl.lambda$3(Lio/vertx/core/Handler;Lio/vertx/ext/auth/User;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2API.tokenIntrospection:(Ljava/lang/String;Ljava/lang/String;Lio/vertx/core/Handler;)V
        end local 4 // io.vertx.ext.auth.User user
        end local 3 // io.vertx.ext.auth.authentication.TokenCredentials tokenCredentials
        17: .line 248
            goto 42
        18: .line 252
      StackMap locals:
      StackMap stack:
            new io.vertx.core.json.JsonObject
            dup
            invokespecial io.vertx.core.json.JsonObject.<init>:()V
            astore 3 /* params */
        start local 3 // io.vertx.core.json.JsonObject params
        19: .line 253
            invokestatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.$SWITCH_TABLE$io$vertx$ext$auth$oauth2$OAuth2FlowType:()[I
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getFlow:()Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2FlowType.ordinal:()I
            iaload
            tableswitch { // 1 - 5
                    1: 26
                    2: 36
                    3: 20
                    4: 26
                    5: 30
              default: 36
          }
        20: .line 255
      StackMap locals: io.vertx.core.json.JsonObject
      StackMap stack:
            aload 1 /* credentials */
            checkcast io.vertx.ext.auth.authentication.UsernamePasswordCredentials
            astore 4 /* usernamePasswordCredentials */
        start local 4 // io.vertx.ext.auth.authentication.UsernamePasswordCredentials usernamePasswordCredentials
        21: .line 256
            aload 4 /* usernamePasswordCredentials */
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getFlow:()Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            invokevirtual io.vertx.ext.auth.authentication.UsernamePasswordCredentials.checkValid:(Ljava/lang/Object;)V
        22: .line 258
            aload 3 /* params */
        23: .line 259
            ldc "username"
            aload 4 /* usernamePasswordCredentials */
            invokevirtual io.vertx.ext.auth.authentication.UsernamePasswordCredentials.getUsername:()Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
        24: .line 260
            ldc "password"
            aload 4 /* usernamePasswordCredentials */
            invokevirtual io.vertx.ext.auth.authentication.UsernamePasswordCredentials.getPassword:()Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        25: .line 261
            goto 38
        end local 4 // io.vertx.ext.auth.authentication.UsernamePasswordCredentials usernamePasswordCredentials
        26: .line 264
      StackMap locals:
      StackMap stack:
            aload 1 /* credentials */
            checkcast io.vertx.ext.auth.oauth2.Oauth2Credentials
            astore 5 /* oauth2Credentials */
        start local 5 // io.vertx.ext.auth.oauth2.Oauth2Credentials oauth2Credentials
        27: .line 265
            aload 5 /* oauth2Credentials */
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getFlow:()Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            invokevirtual io.vertx.ext.auth.oauth2.Oauth2Credentials.checkValid:(Ljava/lang/Object;)V
        28: .line 267
            aload 3 /* params */
            aload 5 /* oauth2Credentials */
            invokevirtual io.vertx.ext.auth.oauth2.Oauth2Credentials.toJson:()Lio/vertx/core/json/JsonObject;
            invokevirtual io.vertx.core.json.JsonObject.mergeIn:(Lio/vertx/core/json/JsonObject;)Lio/vertx/core/json/JsonObject;
            pop
        29: .line 268
            goto 38
        end local 5 // io.vertx.ext.auth.oauth2.Oauth2Credentials oauth2Credentials
        30: .line 270
      StackMap locals:
      StackMap stack:
            aload 1 /* credentials */
            checkcast io.vertx.ext.auth.oauth2.Oauth2Credentials
            astore 6 /* oauth2OnBehalfOfCredentials */
        start local 6 // io.vertx.ext.auth.oauth2.Oauth2Credentials oauth2OnBehalfOfCredentials
        31: .line 271
            aload 6 /* oauth2OnBehalfOfCredentials */
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getFlow:()Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            invokevirtual io.vertx.ext.auth.oauth2.Oauth2Credentials.checkValid:(Ljava/lang/Object;)V
        32: .line 273
            aload 6 /* oauth2OnBehalfOfCredentials */
            invokevirtual io.vertx.ext.auth.oauth2.Oauth2Credentials.toJson:()Lio/vertx/core/json/JsonObject;
            astore 7 /* token */
        start local 7 // io.vertx.core.json.JsonObject token
        33: .line 274
            aload 3 /* params */
        34: .line 275
            ldc "assertion"
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 7 /* token */
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getJWTOptions:()Lio/vertx/ext/auth/JWTOptions;
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.sign:(Lio/vertx/core/json/JsonObject;Lio/vertx/ext/auth/JWTOptions;)Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        35: .line 276
            goto 38
        end local 7 // io.vertx.core.json.JsonObject token
        end local 6 // io.vertx.ext.auth.oauth2.Oauth2Credentials oauth2OnBehalfOfCredentials
        36: .line 278
      StackMap locals:
      StackMap stack:
            aload 2 /* handler */
            ldc "Current flow does not allow acquiring a token by the replay party"
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        37: .line 279
            return
        38: .line 282
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.api:Lio/vertx/ext/auth/oauth2/impl/OAuth2API;
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getFlow:()Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2FlowType.getGrantType:()Ljava/lang/String;
            aload 3 /* params */
            aload 0 /* this */
            aload 2 /* handler */
            invokedynamic handle(Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;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/impl/OAuth2AuthProviderImpl.lambda$4(Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2API.token:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler;)V
        end local 3 // io.vertx.core.json.JsonObject params
        39: .line 302
            goto 42
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.ext.auth.authentication.Credentials io.vertx.core.Handler
      StackMap stack: java.lang.RuntimeException
        40: astore 3 /* e */
        start local 3 // java.lang.RuntimeException e
        41: .line 303
            aload 2 /* handler */
            aload 3 /* e */
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        end local 3 // java.lang.RuntimeException e
        42: .line 305
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.Handler handler
        end local 1 // io.vertx.ext.auth.authentication.Credentials credentials
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   43     0                         this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0   43     1                  credentials  Lio/vertx/ext/auth/authentication/Credentials;
            0   43     2                      handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;
            2   17     3             tokenCredentials  Lio/vertx/ext/auth/authentication/TokenCredentials;
            4   17     4                         user  Lio/vertx/ext/auth/User;
            6    9     5                   jwtOptions  Lio/vertx/ext/auth/JWTOptions;
           19   39     3                       params  Lio/vertx/core/json/JsonObject;
           21   26     4  usernamePasswordCredentials  Lio/vertx/ext/auth/authentication/UsernamePasswordCredentials;
           27   30     5            oauth2Credentials  Lio/vertx/ext/auth/oauth2/Oauth2Credentials;
           31   36     6  oauth2OnBehalfOfCredentials  Lio/vertx/ext/auth/oauth2/Oauth2Credentials;
           33   36     7                        token  Lio/vertx/core/json/JsonObject;
           41   42     3                            e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           0     8      40  Class java.lang.ClassCastException
           9    14      40  Class java.lang.ClassCastException
          15    37      40  Class java.lang.ClassCastException
          38    39      40  Class java.lang.ClassCastException
           0     8      40  Class io.vertx.ext.auth.authentication.CredentialValidationException
           9    14      40  Class io.vertx.ext.auth.authentication.CredentialValidationException
          15    37      40  Class io.vertx.ext.auth.authentication.CredentialValidationException
          38    39      40  Class io.vertx.ext.auth.authentication.CredentialValidationException
    Signature: (Lio/vertx/ext/auth/authentication/Credentials;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;)V
    MethodParameters:
             Name  Flags
      credentials  
      handler      

  public java.lang.String authorizeURL(io.vertx.core.json.JsonObject);
    descriptor: (Lio/vertx/core/json/JsonObject;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.core.json.JsonObject params
         0: .line 309
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.api:Lio/vertx/ext/auth/oauth2/impl/OAuth2API;
            aload 1 /* params */
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2API.authorizeURL:(Lio/vertx/core/json/JsonObject;)Ljava/lang/String;
            areturn
        end local 1 // io.vertx.core.json.JsonObject params
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    1     1  params  Lio/vertx/core/json/JsonObject;
    MethodParameters:
        Name  Flags
      params  

  public io.vertx.ext.auth.oauth2.OAuth2Auth refresh(io.vertx.ext.auth.User, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.auth.User>>);
    descriptor: (Lio/vertx/ext/auth/User;Lio/vertx/core/Handler;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.ext.auth.User user
        start local 2 // io.vertx.core.Handler handler
         0: .line 314
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.api:Lio/vertx/ext/auth/oauth2/impl/OAuth2API;
         1: .line 315
            ldc "refresh_token"
         2: .line 316
            new io.vertx.core.json.JsonObject
            dup
            invokespecial io.vertx.core.json.JsonObject.<init>:()V
         3: .line 317
            ldc "refresh_token"
            aload 1 /* user */
            invokeinterface io.vertx.ext.auth.User.principal:()Lio/vertx/core/json/JsonObject;
            ldc "refresh_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
         4: .line 318
            aload 0 /* this */
            aload 2 /* handler */
            invokedynamic handle(Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;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/impl/OAuth2AuthProviderImpl.lambda$5(Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
         5: .line 314
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2API.token:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler;)V
         6: .line 335
            aload 0 /* this */
            areturn
        end local 2 // io.vertx.core.Handler handler
        end local 1 // io.vertx.ext.auth.User user
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    7     1     user  Lio/vertx/ext/auth/User;
            0    7     2  handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;
    Signature: (Lio/vertx/ext/auth/User;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    MethodParameters:
         Name  Flags
      user     
      handler  

  public io.vertx.ext.auth.oauth2.OAuth2Auth revoke(io.vertx.ext.auth.User, java.lang.String, io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Void>>);
    descriptor: (Lio/vertx/ext/auth/User;Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.ext.auth.User user
        start local 2 // java.lang.String tokenType
        start local 3 // io.vertx.core.Handler handler
         0: .line 340
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.api:Lio/vertx/ext/auth/oauth2/impl/OAuth2API;
            aload 2 /* tokenType */
            aload 1 /* user */
            invokeinterface io.vertx.ext.auth.User.principal:()Lio/vertx/core/json/JsonObject;
            aload 2 /* tokenType */
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 3 /* handler */
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2API.tokenRevocation:(Ljava/lang/String;Ljava/lang/String;Lio/vertx/core/Handler;)V
         1: .line 341
            aload 0 /* this */
            areturn
        end local 3 // io.vertx.core.Handler handler
        end local 2 // java.lang.String tokenType
        end local 1 // io.vertx.ext.auth.User user
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    2     1       user  Lio/vertx/ext/auth/User;
            0    2     2  tokenType  Ljava/lang/String;
            0    2     3    handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;
    Signature: (Lio/vertx/ext/auth/User;Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    MethodParameters:
           Name  Flags
      user       
      tokenType  
      handler    

  public io.vertx.ext.auth.oauth2.OAuth2Auth userInfo(io.vertx.ext.auth.User, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.core.json.JsonObject>>);
    descriptor: (Lio/vertx/ext/auth/User;Lio/vertx/core/Handler;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.ext.auth.User user
        start local 2 // io.vertx.core.Handler handler
         0: .line 346
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.api:Lio/vertx/ext/auth/oauth2/impl/OAuth2API;
            aload 1 /* user */
            invokeinterface io.vertx.ext.auth.User.principal:()Lio/vertx/core/json/JsonObject;
            ldc "access_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 1 /* user */
            aload 2 /* handler */
            invokedynamic handle(Lio/vertx/ext/auth/User;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/impl/OAuth2AuthProviderImpl.lambda$6(Lio/vertx/ext/auth/User;Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V (6)
                  (Lio/vertx/core/AsyncResult;)V
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2API.userInfo:(Ljava/lang/String;Lio/vertx/ext/auth/impl/jose/JWT;Lio/vertx/core/Handler;)V
         1: .line 368
            aload 0 /* this */
            areturn
        end local 2 // io.vertx.core.Handler handler
        end local 1 // io.vertx.ext.auth.User user
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    2     1     user  Lio/vertx/ext/auth/User;
            0    2     2  handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/core/json/JsonObject;>;>;
    Signature: (Lio/vertx/ext/auth/User;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/core/json/JsonObject;>;>;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    MethodParameters:
         Name  Flags
      user     
      handler  

  public java.lang.String endSessionURL(io.vertx.ext.auth.User, io.vertx.core.json.JsonObject);
    descriptor: (Lio/vertx/ext/auth/User;Lio/vertx/core/json/JsonObject;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.ext.auth.User user
        start local 2 // io.vertx.core.json.JsonObject params
         0: .line 373
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.api:Lio/vertx/ext/auth/oauth2/impl/OAuth2API;
            aload 1 /* user */
            invokeinterface io.vertx.ext.auth.User.principal:()Lio/vertx/core/json/JsonObject;
            ldc "id_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 2 /* params */
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2API.endSessionURL:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)Ljava/lang/String;
            areturn
        end local 2 // io.vertx.core.json.JsonObject params
        end local 1 // io.vertx.ext.auth.User user
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    1     1    user  Lio/vertx/ext/auth/User;
            0    1     2  params  Lio/vertx/core/json/JsonObject;
    MethodParameters:
        Name  Flags
      user    
      params  

  private io.vertx.ext.auth.User createUser(io.vertx.core.json.JsonObject, boolean);
    descriptor: (Lio/vertx/core/json/JsonObject;Z)Lio/vertx/ext/auth/User;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=8, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.core.json.JsonObject json
        start local 2 // boolean skipMissingKeyNotify
         0: .line 381
            aload 1 /* json */
            invokestatic io.vertx.ext.auth.User.create:(Lio/vertx/core/json/JsonObject;)Lio/vertx/ext/auth/User;
            astore 3 /* user */
        start local 3 // io.vertx.ext.auth.User user
         1: .line 382
            invokestatic java.lang.System.currentTimeMillis:()J
            ldc 1000
            ldiv
            lstore 4 /* now */
        start local 4 // long now
         2: .line 386
            aconst_null
            astore 6 /* missingKid */
        start local 6 // java.lang.String missingKid
         3: .line 389
            aload 1 /* json */
            ldc "expires_in"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 11
         4: .line 392
            aload 1 /* json */
            ldc "expires_in"
            invokevirtual io.vertx.core.json.JsonObject.getLong:(Ljava/lang/String;)Ljava/lang/Long;
            astore 7 /* expiresIn */
        start local 7 // java.lang.Long expiresIn
         5: .line 393
            goto 8
        end local 7 // java.lang.Long expiresIn
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.json.JsonObject int io.vertx.ext.auth.User long java.lang.String
      StackMap stack: java.lang.ClassCastException
         6: pop
         7: .line 395
            aload 1 /* json */
            ldc "expires_in"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.Long.valueOf:(Ljava/lang/String;)Ljava/lang/Long;
            astore 7 /* expiresIn */
        start local 7 // java.lang.Long expiresIn
         8: .line 398
      StackMap locals: java.lang.Long
      StackMap stack:
            aload 3 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
         9: .line 399
            ldc "iat"
            lload 4 /* now */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
        10: .line 400
            ldc "exp"
            lload 4 /* now */
            aload 7 /* expiresIn */
            invokevirtual java.lang.Long.longValue:()J
            ladd
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        end local 7 // java.lang.Long expiresIn
        11: .line 404
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.isUnsecure:()Z
            ifne 48
        12: .line 405
            aload 1 /* json */
            ldc "access_token"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 31
        13: .line 407
            aload 3 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
        14: .line 408
            ldc "accessToken"
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 1 /* json */
            ldc "access_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.decode:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        15: .line 411
            aload 3 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            ldc "accessToken"
            invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            aload 3 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            iconst_1
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "exp"
            aastore
            dup
            iconst_1
            ldc "iat"
            aastore
            dup
            iconst_2
            ldc "nbf"
            aastore
            dup
            iconst_3
            ldc "sub"
            aastore
            invokestatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.copyProperties:(Lio/vertx/core/json/JsonObject;Lio/vertx/core/json/JsonObject;Z[Ljava/lang/String;)V
        16: .line 414
            aload 3 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
        17: .line 415
            ldc "rootClaim"
            ldc "accessToken"
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        18: .line 417
            goto 31
      StackMap locals:
      StackMap stack: io.vertx.ext.auth.NoSuchKeyIdException
        19: astore 7 /* e */
        start local 7 // io.vertx.ext.auth.NoSuchKeyIdException e
        20: .line 418
            iload 2 /* skipMissingKeyNotify */
            ifne 31
        21: .line 420
            aload 3 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
        22: .line 421
            ldc "missing-kid"
            aload 7 /* e */
            invokevirtual io.vertx.ext.auth.NoSuchKeyIdException.id:()Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        23: .line 424
            aload 7 /* e */
            invokevirtual io.vertx.ext.auth.NoSuchKeyIdException.id:()Ljava/lang/String;
            astore 6 /* missingKid */
        24: .line 429
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.missingKeyHandler:Lio/vertx/core/Handler;
            ifnull 27
        25: .line 430
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.missingKeyHandler:Lio/vertx/core/Handler;
            aload 7 /* e */
            invokevirtual io.vertx.ext.auth.NoSuchKeyIdException.id:()Ljava/lang/String;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        26: .line 431
            goto 31
        27: .line 432
      StackMap locals: io.vertx.ext.auth.NoSuchKeyIdException
      StackMap stack:
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            ldc "Cannot decode access token:"
            aload 7 /* e */
            invokeinterface io.vertx.core.impl.logging.Logger.trace:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 7 // io.vertx.ext.auth.NoSuchKeyIdException e
        28: goto 31
        29: .line 435
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.json.JsonObject int io.vertx.ext.auth.User long java.lang.String
      StackMap stack: java.lang.RuntimeException
            astore 7 /* e */
        start local 7 // java.lang.RuntimeException e
        30: .line 440
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            ldc "Cannot decode access token:"
            aload 7 /* e */
            invokeinterface io.vertx.core.impl.logging.Logger.trace:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 7 // java.lang.RuntimeException e
        31: .line 444
      StackMap locals:
      StackMap stack:
            aload 1 /* json */
            ldc "id_token"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 48
        32: .line 446
            aload 3 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
        33: .line 447
            ldc "idToken"
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 1 /* json */
            ldc "id_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.decode:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        34: .line 449
            aload 3 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            ldc "idToken"
            invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            aload 3 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            iconst_0
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "sub"
            aastore
            dup
            iconst_1
            ldc "name"
            aastore
            dup
            iconst_2
            ldc "email"
            aastore
            dup
            iconst_3
            ldc "picture"
            aastore
            invokestatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.copyProperties:(Lio/vertx/core/json/JsonObject;Lio/vertx/core/json/JsonObject;Z[Ljava/lang/String;)V
        35: .line 450
            goto 48
      StackMap locals:
      StackMap stack: io.vertx.ext.auth.NoSuchKeyIdException
        36: astore 7 /* e */
        start local 7 // io.vertx.ext.auth.NoSuchKeyIdException e
        37: .line 451
            iload 2 /* skipMissingKeyNotify */
            ifne 48
        38: .line 453
            aload 7 /* e */
            invokevirtual io.vertx.ext.auth.NoSuchKeyIdException.id:()Ljava/lang/String;
            aload 6 /* missingKid */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 48
        39: .line 455
            aload 3 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
        40: .line 456
            ldc "missing-kid"
            aload 7 /* e */
            invokevirtual io.vertx.ext.auth.NoSuchKeyIdException.id:()Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        41: .line 461
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.missingKeyHandler:Lio/vertx/core/Handler;
            ifnull 44
        42: .line 462
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.missingKeyHandler:Lio/vertx/core/Handler;
            aload 7 /* e */
            invokevirtual io.vertx.ext.auth.NoSuchKeyIdException.id:()Ljava/lang/String;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        43: .line 463
            goto 48
        44: .line 464
      StackMap locals: io.vertx.ext.auth.NoSuchKeyIdException
      StackMap stack:
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            ldc "Cannot decode access token:"
            aload 7 /* e */
            invokeinterface io.vertx.core.impl.logging.Logger.trace:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 7 // io.vertx.ext.auth.NoSuchKeyIdException e
        45: goto 48
        46: .line 468
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.json.JsonObject int io.vertx.ext.auth.User long java.lang.String
      StackMap stack: java.lang.RuntimeException
            astore 7 /* e */
        start local 7 // java.lang.RuntimeException e
        47: .line 473
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            ldc "Cannot decode id token:"
            aload 7 /* e */
            invokeinterface io.vertx.core.impl.logging.Logger.trace:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 7 // java.lang.RuntimeException e
        48: .line 478
      StackMap locals:
      StackMap stack:
            aload 3 /* user */
            areturn
        end local 6 // java.lang.String missingKid
        end local 4 // long now
        end local 3 // io.vertx.ext.auth.User user
        end local 2 // boolean skipMissingKeyNotify
        end local 1 // io.vertx.core.json.JsonObject json
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   49     0                  this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0   49     1                  json  Lio/vertx/core/json/JsonObject;
            0   49     2  skipMissingKeyNotify  Z
            1   49     3                  user  Lio/vertx/ext/auth/User;
            2   49     4                   now  J
            3   49     6            missingKid  Ljava/lang/String;
            5    6     7             expiresIn  Ljava/lang/Long;
            8   11     7             expiresIn  Ljava/lang/Long;
           20   28     7                     e  Lio/vertx/ext/auth/NoSuchKeyIdException;
           30   31     7                     e  Ljava/lang/RuntimeException;
           37   45     7                     e  Lio/vertx/ext/auth/NoSuchKeyIdException;
           47   48     7                     e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.ClassCastException
          13    18      19  Class io.vertx.ext.auth.NoSuchKeyIdException
          13    18      29  Class io.vertx.core.json.DecodeException
          13    18      29  Class java.lang.IllegalStateException
          32    35      36  Class io.vertx.ext.auth.NoSuchKeyIdException
          32    35      46  Class io.vertx.core.json.DecodeException
          32    35      46  Class java.lang.IllegalStateException
    MethodParameters:
                      Name  Flags
      json                  
      skipMissingKeyNotify  

  private void validateUser(io.vertx.ext.auth.User, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.auth.User>>);
    descriptor: (Lio/vertx/ext/auth/User;Lio/vertx/core/Handler;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.ext.auth.User user
        start local 2 // io.vertx.core.Handler handler
         0: .line 483
            aload 1 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            ldc "accessToken"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifne 3
         1: .line 485
            aload 2 /* handler */
            aload 1 /* user */
            invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         2: .line 486
            return
         3: .line 490
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getJWTOptions:()Lio/vertx/ext/auth/JWTOptions;
            astore 3 /* jwtOptions */
        start local 3 // io.vertx.ext.auth.JWTOptions jwtOptions
         4: .line 497
            aload 1 /* user */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            ldc "accessToken"
            invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            astore 4 /* payload */
        start local 4 // io.vertx.core.json.JsonObject payload
         5: .line 498
            goto 9
        end local 4 // io.vertx.core.json.JsonObject payload
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.ext.auth.User io.vertx.core.Handler io.vertx.ext.auth.JWTOptions
      StackMap stack: java.lang.RuntimeException
         6: pop
         7: .line 499
            aload 2 /* handler */
            ldc "User accessToken isn't a JsonObject"
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         8: .line 500
            return
        start local 4 // io.vertx.core.json.JsonObject payload
         9: .line 503
      StackMap locals: io.vertx.core.json.JsonObject
      StackMap stack:
            aload 3 /* jwtOptions */
            invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
            ifnull 17
        10: .line 505
            aload 4 /* payload */
            ldc "aud"
            invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
            instanceof java.lang.String
            ifeq 13
        11: .line 506
            new io.vertx.core.json.JsonArray
            dup
            invokespecial io.vertx.core.json.JsonArray.<init>:()V
            aload 4 /* payload */
            ldc "aud"
            ldc ""
            invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual io.vertx.core.json.JsonArray.add:(Ljava/lang/Object;)Lio/vertx/core/json/JsonArray;
            astore 5 /* target */
        start local 5 // io.vertx.core.json.JsonArray target
        12: .line 507
            goto 14
        end local 5 // io.vertx.core.json.JsonArray target
        13: .line 508
      StackMap locals:
      StackMap stack:
            aload 4 /* payload */
            ldc "aud"
            new io.vertx.core.json.JsonArray
            dup
            invokespecial io.vertx.core.json.JsonArray.<init>:()V
            invokevirtual io.vertx.core.json.JsonObject.getJsonArray:(Ljava/lang/String;Lio/vertx/core/json/JsonArray;)Lio/vertx/core/json/JsonArray;
            astore 5 /* target */
        start local 5 // io.vertx.core.json.JsonArray target
        14: .line 511
      StackMap locals: io.vertx.core.json.JsonArray
      StackMap stack:
            aload 3 /* jwtOptions */
            invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
            aload 5 /* target */
            invokevirtual io.vertx.core.json.JsonArray.getList:()Ljava/util/List;
            invokestatic java.util.Collections.disjoint:(Ljava/util/Collection;Ljava/util/Collection;)Z
            ifeq 17
        15: .line 512
            aload 2 /* handler */
            new java.lang.StringBuilder
            dup
            ldc "Invalid JWT audience. expected: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* jwtOptions */
            invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
            invokestatic io.vertx.core.json.Json.encode:(Ljava/lang/Object;)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
        16: .line 513
            return
        end local 5 // io.vertx.core.json.JsonArray target
        17: .line 517
      StackMap locals:
      StackMap stack:
            aload 3 /* jwtOptions */
            invokevirtual io.vertx.ext.auth.JWTOptions.getIssuer:()Ljava/lang/String;
            ifnull 21
        18: .line 518
            aload 3 /* jwtOptions */
            invokevirtual io.vertx.ext.auth.JWTOptions.getIssuer:()Ljava/lang/String;
            aload 4 /* payload */
            ldc "iss"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 21
        19: .line 519
            aload 2 /* handler */
            ldc "Invalid JWT issuer"
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        20: .line 520
            return
        21: .line 524
      StackMap locals:
      StackMap stack:
            aload 2 /* handler */
            aload 1 /* user */
            invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        22: .line 525
            return
        end local 4 // io.vertx.core.json.JsonObject payload
        end local 3 // io.vertx.ext.auth.JWTOptions jwtOptions
        end local 2 // io.vertx.core.Handler handler
        end local 1 // io.vertx.ext.auth.User user
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   23     0        this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0   23     1        user  Lio/vertx/ext/auth/User;
            0   23     2     handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;
            4   23     3  jwtOptions  Lio/vertx/ext/auth/JWTOptions;
            5    6     4     payload  Lio/vertx/core/json/JsonObject;
            9   23     4     payload  Lio/vertx/core/json/JsonObject;
           12   13     5      target  Lio/vertx/core/json/JsonArray;
           14   17     5      target  Lio/vertx/core/json/JsonArray;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.RuntimeException
    Signature: (Lio/vertx/ext/auth/User;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;)V
    MethodParameters:
         Name  Flags
      user     
      handler  

  public io.vertx.ext.auth.oauth2.OAuth2Auth decodeToken(java.lang.String, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.auth.oauth2.AccessToken>>);
    descriptor: (Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // java.lang.String token
        start local 2 // io.vertx.core.Handler handler
         0: .line 531
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 1 /* token */
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.decode:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            astore 3 /* json */
        start local 3 // io.vertx.core.json.JsonObject json
         1: .line 532
            aload 2 /* handler */
            aload 0 /* this */
            aload 3 /* json */
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.createAccessToken:(Lio/vertx/core/json/JsonObject;)Lio/vertx/ext/auth/oauth2/AccessToken;
            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 3 // io.vertx.core.json.JsonObject json
         2: .line 533
            goto 5
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
         3: astore 3 /* e */
        start local 3 // java.lang.RuntimeException e
         4: .line 534
            aload 2 /* handler */
            aload 3 /* e */
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        end local 3 // java.lang.RuntimeException e
         5: .line 536
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 2 // io.vertx.core.Handler handler
        end local 1 // java.lang.String token
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    6     1    token  Ljava/lang/String;
            0    6     2  handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/oauth2/AccessToken;>;>;
            1    2     3     json  Lio/vertx/core/json/JsonObject;
            4    5     3        e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.RuntimeException
    Signature: (Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/oauth2/AccessToken;>;>;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      token    
      handler  

  public io.vertx.ext.auth.oauth2.OAuth2Auth introspectToken(java.lang.String, java.lang.String, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.auth.oauth2.AccessToken>>);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // java.lang.String token
        start local 2 // java.lang.String tokenType
        start local 3 // io.vertx.core.Handler handler
         0: .line 542
            aload 0 /* this */
            areturn
        end local 3 // io.vertx.core.Handler handler
        end local 2 // java.lang.String tokenType
        end local 1 // java.lang.String token
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    1     1      token  Ljava/lang/String;
            0    1     2  tokenType  Ljava/lang/String;
            0    1     3    handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/oauth2/AccessToken;>;>;
    Signature: (Ljava/lang/String;Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/oauth2/AccessToken;>;>;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
           Name  Flags
      token      
      tokenType  
      handler    

  public io.vertx.ext.auth.oauth2.OAuth2FlowType getFlowType();
    descriptor: ()Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
         0: .line 548
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getFlow:()Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            areturn
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public io.vertx.ext.auth.oauth2.OAuth2Auth rbacHandler(io.vertx.ext.auth.oauth2.OAuth2RBAC);
    descriptor: (Lio/vertx/ext/auth/oauth2/OAuth2RBAC;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.ext.auth.oauth2.OAuth2RBAC rbac
         0: .line 554
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.ext.auth.oauth2.OAuth2RBAC rbac
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    1     1  rbac  Lio/vertx/ext/auth/oauth2/OAuth2RBAC;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      rbac  

  private io.vertx.ext.auth.oauth2.AccessToken createAccessToken(io.vertx.core.json.JsonObject);
    descriptor: (Lio/vertx/core/json/JsonObject;)Lio/vertx/ext/auth/oauth2/AccessToken;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // io.vertx.core.json.JsonObject json
         0: .line 563
            new io.vertx.ext.auth.oauth2.impl.AccessTokenImpl
            dup
            aload 1 /* json */
            aload 0 /* this */
            invokespecial io.vertx.ext.auth.oauth2.impl.AccessTokenImpl.<init>:(Lio/vertx/core/json/JsonObject;Lio/vertx/ext/auth/oauth2/OAuth2Auth;)V
            astore 2 /* user */
        start local 2 // io.vertx.ext.auth.oauth2.AccessToken user
         1: .line 564
            invokestatic java.lang.System.currentTimeMillis:()J
            ldc 1000
            ldiv
            lstore 3 /* now */
        start local 3 // long now
         2: .line 567
            aload 1 /* json */
            ldc "expires_in"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 10
         3: .line 570
            aload 1 /* json */
            ldc "expires_in"
            invokevirtual io.vertx.core.json.JsonObject.getLong:(Ljava/lang/String;)Ljava/lang/Long;
            astore 5 /* expiresIn */
        start local 5 // java.lang.Long expiresIn
         4: .line 571
            goto 7
        end local 5 // java.lang.Long expiresIn
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.json.JsonObject io.vertx.ext.auth.oauth2.AccessToken long
      StackMap stack: java.lang.ClassCastException
         5: pop
         6: .line 573
            aload 1 /* json */
            ldc "expires_in"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.Long.valueOf:(Ljava/lang/String;)Ljava/lang/Long;
            astore 5 /* expiresIn */
        start local 5 // java.lang.Long expiresIn
         7: .line 576
      StackMap locals: java.lang.Long
      StackMap stack:
            aload 2 /* user */
            invokeinterface io.vertx.ext.auth.oauth2.AccessToken.attributes:()Lio/vertx/core/json/JsonObject;
         8: .line 577
            ldc "iat"
            lload 3 /* now */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
         9: .line 578
            ldc "exp"
            lload 3 /* now */
            aload 5 /* expiresIn */
            invokevirtual java.lang.Long.longValue:()J
            ladd
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        end local 5 // java.lang.Long expiresIn
        10: .line 582
      StackMap locals:
      StackMap stack:
            aload 1 /* json */
            ldc "access_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            ifnull 31
        11: .line 584
            aload 2 /* user */
            invokeinterface io.vertx.ext.auth.oauth2.AccessToken.attributes:()Lio/vertx/core/json/JsonObject;
        12: .line 585
            ldc "accessToken"
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 1 /* json */
            ldc "access_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.decode:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        13: .line 588
            aload 2 /* user */
            invokeinterface io.vertx.ext.auth.oauth2.AccessToken.attributes:()Lio/vertx/core/json/JsonObject;
            ldc "exp"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifne 20
        14: .line 589
            aload 2 /* user */
            invokeinterface io.vertx.ext.auth.oauth2.AccessToken.attributes:()Lio/vertx/core/json/JsonObject;
        15: .line 590
            ldc "accessToken"
            invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            ldc "exp"
            invokevirtual io.vertx.core.json.JsonObject.getLong:(Ljava/lang/String;)Ljava/lang/Long;
        16: .line 589
            astore 5 /* exp */
        start local 5 // java.lang.Long exp
        17: .line 592
            aload 5 /* exp */
            ifnull 20
        18: .line 593
            aload 2 /* user */
            invokeinterface io.vertx.ext.auth.oauth2.AccessToken.attributes:()Lio/vertx/core/json/JsonObject;
        19: .line 594
            ldc "exp"
            aload 5 /* exp */
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        end local 5 // java.lang.Long exp
        20: .line 599
      StackMap locals:
      StackMap stack:
            aload 2 /* user */
            invokeinterface io.vertx.ext.auth.oauth2.AccessToken.attributes:()Lio/vertx/core/json/JsonObject;
        21: .line 600
            ldc "rootClaim"
            ldc "accessToken"
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        22: .line 602
            goto 31
      StackMap locals:
      StackMap stack: io.vertx.ext.auth.NoSuchKeyIdException
        23: astore 5 /* e */
        start local 5 // io.vertx.ext.auth.NoSuchKeyIdException e
        24: .line 606
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.missingKeyHandler:Lio/vertx/core/Handler;
            ifnull 27
        25: .line 607
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.missingKeyHandler:Lio/vertx/core/Handler;
            aload 5 /* e */
            invokevirtual io.vertx.ext.auth.NoSuchKeyIdException.id:()Ljava/lang/String;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        26: .line 608
            goto 31
        27: .line 609
      StackMap locals: io.vertx.ext.auth.NoSuchKeyIdException
      StackMap stack:
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            ldc "Cannot decode access token:"
            aload 5 /* e */
            invokeinterface io.vertx.core.impl.logging.Logger.trace:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 5 // io.vertx.ext.auth.NoSuchKeyIdException e
        28: goto 31
        29: .line 611
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.json.JsonObject io.vertx.ext.auth.oauth2.AccessToken long
      StackMap stack: java.lang.RuntimeException
            astore 5 /* e */
        start local 5 // java.lang.RuntimeException e
        30: .line 616
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            ldc "Cannot decode access token:"
            aload 5 /* e */
            invokeinterface io.vertx.core.impl.logging.Logger.trace:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 5 // java.lang.RuntimeException e
        31: .line 620
      StackMap locals:
      StackMap stack:
            aload 1 /* json */
            ldc "id_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            ifnull 43
        32: .line 622
            aload 2 /* user */
            invokeinterface io.vertx.ext.auth.oauth2.AccessToken.attributes:()Lio/vertx/core/json/JsonObject;
        33: .line 623
            ldc "idToken"
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 1 /* json */
            ldc "id_token"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.decode:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        34: .line 624
            goto 43
      StackMap locals:
      StackMap stack: io.vertx.ext.auth.NoSuchKeyIdException
        35: astore 5 /* e */
        start local 5 // io.vertx.ext.auth.NoSuchKeyIdException e
        36: .line 628
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.missingKeyHandler:Lio/vertx/core/Handler;
            ifnull 39
        37: .line 629
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.missingKeyHandler:Lio/vertx/core/Handler;
            aload 5 /* e */
            invokevirtual io.vertx.ext.auth.NoSuchKeyIdException.id:()Ljava/lang/String;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        38: .line 630
            goto 43
        39: .line 631
      StackMap locals: io.vertx.ext.auth.NoSuchKeyIdException
      StackMap stack:
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            ldc "Cannot decode access token:"
            aload 5 /* e */
            invokeinterface io.vertx.core.impl.logging.Logger.trace:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 5 // io.vertx.ext.auth.NoSuchKeyIdException e
        40: goto 43
        41: .line 633
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.json.JsonObject io.vertx.ext.auth.oauth2.AccessToken long
      StackMap stack: java.lang.RuntimeException
            astore 5 /* e */
        start local 5 // java.lang.RuntimeException e
        42: .line 638
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            ldc "Cannot decode id token:"
            aload 5 /* e */
            invokeinterface io.vertx.core.impl.logging.Logger.trace:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 5 // java.lang.RuntimeException e
        43: .line 642
      StackMap locals:
      StackMap stack:
            aload 2 /* user */
            areturn
        end local 3 // long now
        end local 2 // io.vertx.ext.auth.oauth2.AccessToken user
        end local 1 // io.vertx.core.json.JsonObject json
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   44     0       this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0   44     1       json  Lio/vertx/core/json/JsonObject;
            1   44     2       user  Lio/vertx/ext/auth/oauth2/AccessToken;
            2   44     3        now  J
            4    5     5  expiresIn  Ljava/lang/Long;
            7   10     5  expiresIn  Ljava/lang/Long;
           17   20     5        exp  Ljava/lang/Long;
           24   28     5          e  Lio/vertx/ext/auth/NoSuchKeyIdException;
           30   31     5          e  Ljava/lang/RuntimeException;
           36   40     5          e  Lio/vertx/ext/auth/NoSuchKeyIdException;
           42   43     5          e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.ClassCastException
          11    22      23  Class io.vertx.ext.auth.NoSuchKeyIdException
          11    22      29  Class io.vertx.core.json.DecodeException
          11    22      29  Class java.lang.IllegalStateException
          32    34      35  Class io.vertx.ext.auth.NoSuchKeyIdException
          32    34      41  Class io.vertx.core.json.DecodeException
          32    34      41  Class java.lang.IllegalStateException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      json  

  private static void copyProperties(io.vertx.core.json.JsonObject, io.vertx.core.json.JsonObject, boolean, java.lang.String[]);
    descriptor: (Lio/vertx/core/json/JsonObject;Lio/vertx/core/json/JsonObject;Z[Ljava/lang/String;)V
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // io.vertx.core.json.JsonObject source
        start local 1 // io.vertx.core.json.JsonObject target
        start local 2 // boolean overwrite
        start local 3 // java.lang.String[] keys
         0: .line 646
            aload 0 /* source */
            ifnull 8
            aload 1 /* target */
            ifnull 8
         1: .line 647
            aload 3 /* keys */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 7
      StackMap locals: io.vertx.core.json.JsonObject io.vertx.core.json.JsonObject int java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         2: aload 7
            iload 5
            aaload
            astore 4 /* key */
        start local 4 // java.lang.String key
         3: .line 648
            aload 0 /* source */
            aload 4 /* key */
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 6
         4: .line 649
            aload 1 /* target */
            aload 4 /* key */
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 5
            iload 2 /* overwrite */
            ifeq 6
         5: .line 650
      StackMap locals: io.vertx.core.json.JsonObject io.vertx.core.json.JsonObject int java.lang.String[] java.lang.String int int java.lang.String[]
      StackMap stack:
            aload 1 /* target */
            aload 4 /* key */
            aload 0 /* source */
            aload 4 /* key */
            invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        end local 4 // java.lang.String key
         6: .line 647
      StackMap locals: io.vertx.core.json.JsonObject io.vertx.core.json.JsonObject int java.lang.String[] top int int java.lang.String[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
         7: iload 5
            iload 6
            if_icmplt 2
         8: .line 655
      StackMap locals: io.vertx.core.json.JsonObject io.vertx.core.json.JsonObject int java.lang.String[]
      StackMap stack:
            return
        end local 3 // java.lang.String[] keys
        end local 2 // boolean overwrite
        end local 1 // io.vertx.core.json.JsonObject target
        end local 0 // io.vertx.core.json.JsonObject source
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0     source  Lio/vertx/core/json/JsonObject;
            0    9     1     target  Lio/vertx/core/json/JsonObject;
            0    9     2  overwrite  Z
            0    9     3       keys  [Ljava/lang/String;
            3    6     4        key  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      source     
      target     
      overwrite  
      keys       

  static int[] $SWITCH_TABLE$io$vertx$ext$auth$oauth2$OAuth2FlowType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 45
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.$SWITCH_TABLE$io$vertx$ext$auth$oauth2$OAuth2FlowType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic io.vertx.ext.auth.oauth2.OAuth2FlowType.values:()[Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic io.vertx.ext.auth.oauth2.OAuth2FlowType.AUTH_CODE:Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2FlowType.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic io.vertx.ext.auth.oauth2.OAuth2FlowType.AUTH_JWT:Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2FlowType.ordinal:()I
            iconst_5
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic io.vertx.ext.auth.oauth2.OAuth2FlowType.CLIENT:Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2FlowType.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic io.vertx.ext.auth.oauth2.OAuth2FlowType.IMPLICIT:Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2FlowType.ordinal:()I
            iconst_2
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic io.vertx.ext.auth.oauth2.OAuth2FlowType.PASSWORD:Lio/vertx/ext/auth/oauth2/OAuth2FlowType;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2FlowType.ordinal:()I
            iconst_3
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            dup
            putstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.$SWITCH_TABLE$io$vertx$ext$auth$oauth2$OAuth2FlowType:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError

  private void lambda$0(io.vertx.core.Handler, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 2 // io.vertx.core.AsyncResult res
         0: .line 78
            aload 2 /* res */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 3
         1: .line 79
            aload 1
            aload 2 /* 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 80
            goto 23
         3: .line 81
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.updateTimerId:J
            ldc -1
            lcmp
            ifeq 5
         4: .line 87
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.vertx:Lio/vertx/core/Vertx;
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.updateTimerId:J
            invokeinterface io.vertx.core.Vertx.cancelTimer:(J)Z
            pop
         5: .line 89
      StackMap locals:
      StackMap stack:
            aload 2 /* res */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.core.json.JsonObject
            astore 3 /* json */
        start local 3 // io.vertx.core.json.JsonObject json
         6: .line 90
            new io.vertx.ext.auth.impl.jose.JWT
            dup
            invokespecial io.vertx.ext.auth.impl.jose.JWT.<init>:()V
            astore 4 /* jwt */
        start local 4 // io.vertx.ext.auth.impl.jose.JWT jwt
         7: .line 91
            aload 3 /* json */
            ldc "keys"
            invokevirtual io.vertx.core.json.JsonObject.getJsonArray:(Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
            astore 5 /* keys */
        start local 5 // io.vertx.core.json.JsonArray keys
         8: .line 92
            aload 5 /* keys */
            invokevirtual io.vertx.core.json.JsonArray.iterator:()Ljava/util/Iterator;
            astore 7
            goto 14
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.Handler io.vertx.core.AsyncResult io.vertx.core.json.JsonObject io.vertx.ext.auth.impl.jose.JWT io.vertx.core.json.JsonArray top java.util.Iterator
      StackMap stack:
         9: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 6 /* key */
        start local 6 // java.lang.Object key
        10: .line 94
            aload 4 /* jwt */
            new io.vertx.ext.auth.impl.jose.JWK
            dup
            aload 6 /* key */
            checkcast io.vertx.core.json.JsonObject
            invokespecial io.vertx.ext.auth.impl.jose.JWK.<init>:(Lio/vertx/core/json/JsonObject;)V
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.addJWK:(Lio/vertx/ext/auth/impl/jose/JWK;)Lio/vertx/ext/auth/impl/jose/JWT;
            pop
        11: .line 95
            goto 14
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.Handler io.vertx.core.AsyncResult io.vertx.core.json.JsonObject io.vertx.ext.auth.impl.jose.JWT io.vertx.core.json.JsonArray java.lang.Object java.util.Iterator
      StackMap stack: java.lang.RuntimeException
        12: astore 8 /* e */
        start local 8 // java.lang.RuntimeException e
        13: .line 96
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Skipped unsupported JWK: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* e */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface io.vertx.core.impl.logging.Logger.warn:(Ljava/lang/Object;)V
        end local 8 // java.lang.RuntimeException e
        end local 6 // java.lang.Object key
        14: .line 92
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.Handler io.vertx.core.AsyncResult io.vertx.core.json.JsonObject io.vertx.ext.auth.impl.jose.JWT io.vertx.core.json.JsonArray top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        15: .line 100
            aload 0 /* this */
            aload 4 /* jwt */
            putfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
        16: .line 102
            aload 3 /* json */
            ldc "maxAge"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 22
        17: .line 104
            aload 3 /* json */
            ldc "maxAge"
            invokevirtual io.vertx.core.json.JsonObject.getLong:(Ljava/lang/String;)Ljava/lang/Long;
            invokevirtual java.lang.Long.longValue:()J
            ldc 1000
            lmul
            lstore 6 /* delay */
        start local 6 // long delay
        18: .line 107
            lload 6 /* delay */
            lconst_0
            lcmp
            ifle 21
        19: .line 108
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.vertx:Lio/vertx/core/Vertx;
            lload 6 /* delay */
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;)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/impl/OAuth2AuthProviderImpl.lambda$1(Ljava/lang/Long;)V (7)
                  (Ljava/lang/Long;)V
            invokeinterface io.vertx.core.Vertx.setPeriodic:(JLio/vertx/core/Handler;)J
            putfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.updateTimerId:J
        20: .line 114
            goto 22
        21: .line 115
      StackMap locals: io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl io.vertx.core.Handler io.vertx.core.AsyncResult io.vertx.core.json.JsonObject io.vertx.ext.auth.impl.jose.JWT io.vertx.core.json.JsonArray long
      StackMap stack:
            aload 0 /* this */
            ldc -1
            putfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.updateTimerId:J
        end local 6 // long delay
        22: .line 119
      StackMap locals:
      StackMap stack:
            aload 1
            invokestatic io.vertx.core.Future.succeededFuture:()Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        end local 5 // io.vertx.core.json.JsonArray keys
        end local 4 // io.vertx.ext.auth.impl.jose.JWT jwt
        end local 3 // io.vertx.core.json.JsonObject json
        23: .line 121
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.AsyncResult res
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   24     0   this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0   24     2    res  Lio/vertx/core/AsyncResult<Lio/vertx/core/json/JsonObject;>;
            6   23     3   json  Lio/vertx/core/json/JsonObject;
            7   23     4    jwt  Lio/vertx/ext/auth/impl/jose/JWT;
            8   23     5   keys  Lio/vertx/core/json/JsonArray;
           10   14     6    key  Ljava/lang/Object;
           13   14     8      e  Ljava/lang/RuntimeException;
           18   22     6  delay  J
      Exception table:
        from    to  target  type
          10    11      12  Class java.lang.RuntimeException

  private void lambda$3(io.vertx.core.Handler, io.vertx.ext.auth.User, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/Handler;Lio/vertx/ext/auth/User;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 3 // io.vertx.core.AsyncResult res
         0: .line 209
            aload 3 /* res */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 3
         1: .line 210
            aload 1
            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 211
            return
         3: .line 214
      StackMap locals:
      StackMap stack:
            aload 3 /* res */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.core.json.JsonObject
            astore 4 /* json */
        start local 4 // io.vertx.core.json.JsonObject json
         4: .line 217
            aload 4 /* json */
            ldc "active"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 7
            aload 4 /* json */
            ldc "active"
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual io.vertx.core.json.JsonObject.getBoolean:(Ljava/lang/String;Ljava/lang/Boolean;)Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifne 7
         5: .line 218
            aload 1
            ldc "Inactive Token"
            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 219
            return
         7: .line 225
      StackMap locals: io.vertx.core.json.JsonObject
      StackMap stack:
            aload 4 /* json */
            ldc "client_id"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 11
         8: .line 227
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getClientID:()Ljava/lang/String;
            aload 4 /* json */
            ldc "client_id"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
         9: .line 229
            aload 1
            ldc "Wrong client_id"
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        10: .line 230
            return
        11: .line 235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* json */
            aload 2
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            ldc "missing-kid"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.createUser:(Lio/vertx/core/json/JsonObject;Z)Lio/vertx/ext/auth/User;
            astore 5 /* newUser */
        start local 5 // io.vertx.ext.auth.User newUser
        12: .line 239
            aload 5 /* newUser */
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getJWTOptions:()Lio/vertx/ext/auth/JWTOptions;
            invokevirtual io.vertx.ext.auth.JWTOptions.getLeeway:()I
            invokeinterface io.vertx.ext.auth.User.expired:(I)Z
            ifeq 15
        13: .line 240
            aload 1
            ldc "Used is expired."
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        14: .line 241
            goto 16
        15: .line 244
      StackMap locals: io.vertx.ext.auth.User
      StackMap stack:
            aload 0 /* this */
            aload 5 /* newUser */
            aload 1
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.validateUser:(Lio/vertx/ext/auth/User;Lio/vertx/core/Handler;)V
        end local 5 // io.vertx.ext.auth.User newUser
        end local 4 // io.vertx.core.json.JsonObject json
        16: .line 246
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.vertx.core.AsyncResult res
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   17     0     this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0   17     3      res  Lio/vertx/core/AsyncResult<Lio/vertx/core/json/JsonObject;>;
            4   16     4     json  Lio/vertx/core/json/JsonObject;
           12   16     5  newUser  Lio/vertx/ext/auth/User;

  private void lambda$4(io.vertx.core.Handler, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 2 // io.vertx.core.AsyncResult getToken
         0: .line 283
            aload 2 /* getToken */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 3
         1: .line 284
            aload 1
            aload 2 /* getToken */
            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 285
            goto 8
         3: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* getToken */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.core.json.JsonObject
            iconst_0
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.createUser:(Lio/vertx/core/json/JsonObject;Z)Lio/vertx/ext/auth/User;
            astore 3 /* newUser */
        start local 3 // io.vertx.ext.auth.User newUser
         4: .line 292
            aload 3 /* newUser */
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getJWTOptions:()Lio/vertx/ext/auth/JWTOptions;
            invokevirtual io.vertx.ext.auth.JWTOptions.getLeeway:()I
            invokeinterface io.vertx.ext.auth.User.expired:(I)Z
            ifeq 7
         5: .line 293
            aload 1
            ldc "Used is expired."
            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 294
            goto 8
         7: .line 297
      StackMap locals: io.vertx.ext.auth.User
      StackMap stack:
            aload 0 /* this */
            aload 3 /* newUser */
            aload 1
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.validateUser:(Lio/vertx/ext/auth/User;Lio/vertx/core/Handler;)V
        end local 3 // io.vertx.ext.auth.User newUser
         8: .line 300
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.AsyncResult getToken
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    9     2  getToken  Lio/vertx/core/AsyncResult<Lio/vertx/core/json/JsonObject;>;
            4    8     3   newUser  Lio/vertx/ext/auth/User;

  private void lambda$5(io.vertx.core.Handler, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 2 // io.vertx.core.AsyncResult getToken
         0: .line 319
            aload 2 /* getToken */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 3
         1: .line 320
            aload 1
            aload 2 /* getToken */
            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 321
            goto 8
         3: .line 323
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* getToken */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.core.json.JsonObject
            iconst_0
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.createUser:(Lio/vertx/core/json/JsonObject;Z)Lio/vertx/ext/auth/User;
            astore 3 /* newUser */
        start local 3 // io.vertx.ext.auth.User newUser
         4: .line 326
            aload 3 /* newUser */
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2Options;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getJWTOptions:()Lio/vertx/ext/auth/JWTOptions;
            invokevirtual io.vertx.ext.auth.JWTOptions.getLeeway:()I
            invokeinterface io.vertx.ext.auth.User.expired:(I)Z
            ifeq 7
         5: .line 327
            aload 1
            ldc "Used is expired."
            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 328
            goto 8
         7: .line 331
      StackMap locals: io.vertx.ext.auth.User
      StackMap stack:
            aload 0 /* this */
            aload 3 /* newUser */
            aload 1
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.validateUser:(Lio/vertx/ext/auth/User;Lio/vertx/core/Handler;)V
        end local 3 // io.vertx.ext.auth.User newUser
         8: .line 334
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.AsyncResult getToken
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    9     2  getToken  Lio/vertx/core/AsyncResult<Lio/vertx/core/json/JsonObject;>;
            4    8     3   newUser  Lio/vertx/ext/auth/User;

  private static void lambda$6(io.vertx.ext.auth.User, io.vertx.core.Handler, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/ext/auth/User;Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=7, locals=6, args_size=3
        start local 2 // io.vertx.core.AsyncResult userInfo
         0: .line 347
            aload 2 /* userInfo */
            invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
            ifeq 11
         1: .line 348
            aload 2 /* userInfo */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.core.json.JsonObject
            astore 3 /* json */
        start local 3 // io.vertx.core.json.JsonObject json
         2: .line 350
            aload 0
            invokeinterface io.vertx.ext.auth.User.principal:()Lio/vertx/core/json/JsonObject;
            ldc "sub"
            aload 0
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            ldc "sub"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* userSub */
        start local 4 // java.lang.String userSub
         3: .line 351
            aload 3 /* json */
            ldc "sub"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* userInfoSub */
        start local 5 // java.lang.String userInfoSub
         4: .line 352
            aload 4 /* userSub */
            ifnonnull 5
            aload 5 /* userInfoSub */
            ifnull 10
         5: .line 353
      StackMap locals: io.vertx.core.json.JsonObject java.lang.String java.lang.String
      StackMap stack:
            aload 4 /* userSub */
            ifnull 10
         6: .line 354
            aload 5 /* userInfoSub */
            ifnull 10
         7: .line 355
            aload 4 /* userSub */
            aload 5 /* userInfoSub */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         8: .line 356
            aload 1
            ldc "Used 'sub' does not match UserInfo 'sub'."
            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 357
            return
        10: .line 363
      StackMap locals:
      StackMap stack:
            aload 3 /* json */
            aload 0
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            iconst_1
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "sub"
            aastore
            dup
            iconst_1
            ldc "name"
            aastore
            dup
            iconst_2
            ldc "email"
            aastore
            dup
            iconst_3
            ldc "picture"
            aastore
            invokestatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.copyProperties:(Lio/vertx/core/json/JsonObject;Lio/vertx/core/json/JsonObject;Z[Ljava/lang/String;)V
        end local 5 // java.lang.String userInfoSub
        end local 4 // java.lang.String userSub
        end local 3 // io.vertx.core.json.JsonObject json
        11: .line 366
      StackMap locals:
      StackMap stack:
            aload 1
            aload 2 /* userInfo */
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        12: .line 367
            return
        end local 2 // io.vertx.core.AsyncResult userInfo
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     2     userInfo  Lio/vertx/core/AsyncResult<Lio/vertx/core/json/JsonObject;>;
            2   11     3         json  Lio/vertx/core/json/JsonObject;
            3   11     4      userSub  Ljava/lang/String;
            4   11     5  userInfoSub  Ljava/lang/String;

  private void lambda$1(java.lang.Long);
    descriptor: (Ljava/lang/Long;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
        start local 1 // java.lang.Long t
         0: .line 109
            aload 0 /* this */
            invokedynamic handle()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/impl/OAuth2AuthProviderImpl.lambda$2(Lio/vertx/core/AsyncResult;)V (6)
                  (Lio/vertx/core/AsyncResult;)V
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.jWKSet:(Lio/vertx/core/Handler;)Lio/vertx/ext/auth/oauth2/OAuth2Auth;
         1: .line 113
            return
        end local 1 // java.lang.Long t
        end local 0 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            0    2     1     t  Ljava/lang/Long;

  private static void lambda$2(io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/AsyncResult;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.core.AsyncResult autoUpdateRes
         0: .line 110
            aload 0 /* autoUpdateRes */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 2
         1: .line 111
            getstatic io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.LOG:Lio/vertx/core/impl/logging/Logger;
            ldc "Failed to auto-update JWK Set"
            aload 0 /* autoUpdateRes */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokeinterface io.vertx.core.impl.logging.Logger.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         2: .line 113
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.vertx.core.AsyncResult autoUpdateRes
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0  autoUpdateRes  Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;
}
SourceFile: "OAuth2AuthProviderImpl.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles