public class io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl implements io.vertx.ext.auth.jwt.JWTAuth
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl
  super_class: java.lang.Object
{
  private static final io.vertx.core.json.JsonArray EMPTY_ARRAY;
    descriptor: Lio/vertx/core/json/JsonArray;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final io.vertx.ext.auth.impl.jose.JWT jwt;
    descriptor: Lio/vertx/ext/auth/impl/jose/JWT;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String permissionsClaimKey;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private static final java.util.Collection<java.lang.String> SPECIAL_KEYS;
    descriptor: Ljava/util/Collection;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Collection<Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 57
            new io.vertx.core.json.JsonArray
            dup
            invokespecial io.vertx.core.json.JsonArray.<init>:()V
            putstatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.EMPTY_ARRAY:Lio/vertx/core/json/JsonArray;
         1: .line 192
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "access_token"
            aastore
            dup
            iconst_1
            ldc "exp"
            aastore
            dup
            iconst_2
            ldc "iat"
            aastore
            dup
            iconst_3
            ldc "nbf"
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            putstatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.SPECIAL_KEYS:Ljava/util/Collection;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(io.vertx.core.Vertx, io.vertx.ext.auth.jwt.JWTAuthOptions);
    descriptor: (Lio/vertx/core/Vertx;Lio/vertx/ext/auth/jwt/JWTAuthOptions;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // io.vertx.ext.auth.jwt.JWTAuthOptions config
         0: .line 64
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 59
            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.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
         2: .line 65
            aload 0 /* this */
            aload 2 /* config */
            invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getPermissionsClaimKey:()Ljava/lang/String;
            putfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.permissionsClaimKey:Ljava/lang/String;
         3: .line 66
            aload 0 /* this */
            aload 2 /* config */
            invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getJWTOptions:()Lio/vertx/ext/auth/JWTOptions;
            putfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
         4: .line 68
            aload 2 /* config */
            invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getKeyStore:()Lio/vertx/ext/auth/KeyStoreOptions;
            astore 3 /* keyStore */
        start local 3 // io.vertx.ext.auth.KeyStoreOptions keyStore
         5: .line 72
            aload 3 /* keyStore */
            ifnull 29
         6: .line 74
            aload 3 /* keyStore */
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.getProvider:()Ljava/lang/String;
            ifnonnull 9
         7: .line 75
            aload 3 /* keyStore */
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.getType:()Ljava/lang/String;
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;)Ljava/security/KeyStore;
            astore 4 /* ks */
        start local 4 // java.security.KeyStore ks
         8: .line 76
            goto 10
        end local 4 // java.security.KeyStore ks
         9: .line 77
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions
      StackMap stack:
            aload 3 /* keyStore */
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.getType:()Ljava/lang/String;
            aload 3 /* keyStore */
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.getProvider:()Ljava/lang/String;
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyStore;
            astore 4 /* ks */
        start local 4 // java.security.KeyStore ks
        10: .line 81
      StackMap locals: java.security.KeyStore
      StackMap stack:
            ldc Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
            dup
            astore 5
            monitorenter
        11: .line 82
            aload 1 /* vertx */
            invokeinterface io.vertx.core.Vertx.fileSystem:()Lio/vertx/core/file/FileSystem;
            aload 3 /* keyStore */
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.getPath:()Ljava/lang/String;
            invokeinterface io.vertx.core.file.FileSystem.readFileBlocking:(Ljava/lang/String;)Lio/vertx/core/buffer/Buffer;
            astore 6 /* keystore */
        start local 6 // io.vertx.core.buffer.Buffer keystore
        12: .line 84
            aconst_null
            astore 7
            aconst_null
            astore 8
        13: new java.io.ByteArrayInputStream
            dup
            aload 6 /* keystore */
            invokeinterface io.vertx.core.buffer.Buffer.getBytes:()[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 9 /* in */
        start local 9 // java.io.InputStream in
        14: .line 85
            aload 4 /* ks */
            aload 9 /* in */
            aload 3 /* keyStore */
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.getPassword:()Ljava/lang/String;
            invokevirtual java.lang.String.toCharArray:()[C
            invokevirtual java.security.KeyStore.load:(Ljava/io/InputStream;[C)V
        15: .line 86
            aload 9 /* in */
            ifnull 21
            aload 9 /* in */
            invokevirtual java.io.InputStream.close:()V
            goto 21
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions java.security.KeyStore java.lang.Class io.vertx.core.buffer.Buffer java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
        16: astore 7
            aload 9 /* in */
            ifnull 17
            aload 9 /* in */
            invokevirtual java.io.InputStream.close:()V
        end local 9 // java.io.InputStream in
      StackMap locals:
      StackMap stack:
        17: aload 7
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: astore 8
            aload 7
            ifnonnull 19
            aload 8
            astore 7
            goto 20
      StackMap locals:
      StackMap stack:
        19: aload 7
            aload 8
            if_acmpeq 20
            aload 7
            aload 8
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        20: aload 7
            athrow
        end local 6 // io.vertx.core.buffer.Buffer keystore
        21: .line 81
      StackMap locals:
      StackMap stack:
            aload 5
            monitorexit
        22: goto 25
      StackMap locals:
      StackMap stack: java.lang.Throwable
        23: aload 5
            monitorexit
        24: athrow
        25: .line 89
      StackMap locals:
      StackMap stack:
            aload 4 /* ks */
            aload 3 /* keyStore */
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.getPassword:()Ljava/lang/String;
            aload 3 /* keyStore */
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.getPasswordProtection:()Ljava/util/Map;
            invokestatic io.vertx.ext.auth.impl.jose.JWK.load:(Ljava/security/KeyStore;Ljava/lang/String;Ljava/util/Map;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 28
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions java.security.KeyStore top java.util.Iterator
      StackMap stack:
        26: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.ext.auth.impl.jose.JWK
            astore 5 /* key */
        start local 5 // io.vertx.ext.auth.impl.jose.JWK key
        27: .line 90
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 5 /* key */
            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 5 // io.vertx.ext.auth.impl.jose.JWK key
        28: .line 89
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 26
        end local 4 // java.security.KeyStore ks
        29: .line 94
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions
      StackMap stack:
            aload 2 /* config */
            invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getPubSecKeys:()Ljava/util/List;
            astore 4 /* keys */
        start local 4 // java.util.List keys
        30: .line 96
            aload 4 /* keys */
            ifnull 35
        31: .line 97
            aload 2 /* config */
            invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getPubSecKeys:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 34
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions java.util.List top java.util.Iterator
      StackMap stack:
        32: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.ext.auth.PubSecKeyOptions
            astore 5 /* pubSecKey */
        start local 5 // io.vertx.ext.auth.PubSecKeyOptions pubSecKey
        33: .line 98
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            new io.vertx.ext.auth.impl.jose.JWK
            dup
            aload 5 /* 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 5 // io.vertx.ext.auth.PubSecKeyOptions pubSecKey
        34: .line 97
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 32
        35: .line 103
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions java.util.List
      StackMap stack:
            aload 2 /* config */
            invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getJwks:()Ljava/util/List;
            astore 5 /* jwks */
        start local 5 // java.util.List jwks
        36: .line 105
            aload 5 /* jwks */
            ifnull 44
        37: .line 106
            aload 5 /* jwks */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 40
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions java.util.List java.util.List top java.util.Iterator
      StackMap stack:
        38: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.core.json.JsonObject
            astore 6 /* jwk */
        start local 6 // io.vertx.core.json.JsonObject jwk
        39: .line 107
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            new io.vertx.ext.auth.impl.jose.JWK
            dup
            aload 6 /* jwk */
            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
        end local 6 // io.vertx.core.json.JsonObject jwk
        40: .line 106
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 38
        end local 5 // java.util.List jwks
        end local 4 // java.util.List keys
        41: .line 111
            goto 44
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions
      StackMap stack: java.lang.Exception
        42: astore 4 /* e */
        start local 4 // java.lang.Exception e
        43: .line 112
            new java.lang.RuntimeException
            dup
            aload 4 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.lang.Exception e
        44: .line 114
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.vertx.ext.auth.KeyStoreOptions keyStore
        end local 2 // io.vertx.ext.auth.jwt.JWTAuthOptions config
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   45     0       this  Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
            0   45     1      vertx  Lio/vertx/core/Vertx;
            0   45     2     config  Lio/vertx/ext/auth/jwt/JWTAuthOptions;
            5   45     3   keyStore  Lio/vertx/ext/auth/KeyStoreOptions;
            8    9     4         ks  Ljava/security/KeyStore;
           10   29     4         ks  Ljava/security/KeyStore;
           12   21     6   keystore  Lio/vertx/core/buffer/Buffer;
           14   17     9         in  Ljava/io/InputStream;
           27   28     5        key  Lio/vertx/ext/auth/impl/jose/JWK;
           30   41     4       keys  Ljava/util/List<Lio/vertx/ext/auth/PubSecKeyOptions;>;
           33   34     5  pubSecKey  Lio/vertx/ext/auth/PubSecKeyOptions;
           36   41     5       jwks  Ljava/util/List<Lio/vertx/core/json/JsonObject;>;
           39   40     6        jwk  Lio/vertx/core/json/JsonObject;
           43   44     4          e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          14    15      16  any
          13    18      18  any
          11    22      23  any
          23    24      23  any
           5    41      42  Class java.security.KeyStoreException
           5    41      42  Class java.io.IOException
           5    41      42  Class io.vertx.core.file.FileSystemException
           5    41      42  Class java.security.cert.CertificateException
           5    41      42  Class java.security.NoSuchAlgorithmException
           5    41      42  Class java.security.NoSuchProviderException
    MethodParameters:
        Name  Flags
      vertx   
      config  

  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=5, locals=3, args_size=3
        start local 0 // io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl this
        start local 1 // io.vertx.core.json.JsonObject authInfo
        start local 2 // io.vertx.core.Handler resultHandler
         0: .line 118
            aload 0 /* this */
            new io.vertx.ext.auth.authentication.TokenCredentials
            dup
            aload 1 /* authInfo */
            ldc "jwt"
            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 /* resultHandler */
            invokevirtual io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.authenticate:(Lio/vertx/ext/auth/authentication/Credentials;Lio/vertx/core/Handler;)V
         1: .line 119
            return
        end local 2 // io.vertx.core.Handler resultHandler
        end local 1 // io.vertx.core.json.JsonObject authInfo
        end local 0 // io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
            0    2     1       authInfo  Lio/vertx/core/json/JsonObject;
            0    2     2  resultHandler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;
    Signature: (Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;)V
    MethodParameters:
               Name  Flags
      authInfo       
      resultHandler  

  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=4, locals=6, args_size=3
        start local 0 // io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl this
        start local 1 // io.vertx.ext.auth.authentication.Credentials credentials
        start local 2 // io.vertx.core.Handler resultHandler
         0: .line 125
            aload 1 /* credentials */
            checkcast io.vertx.ext.auth.authentication.TokenCredentials
            astore 3 /* authInfo */
        start local 3 // io.vertx.ext.auth.authentication.TokenCredentials authInfo
         1: .line 127
            aload 3 /* authInfo */
            aconst_null
            invokevirtual io.vertx.ext.auth.authentication.TokenCredentials.checkValid:(Ljava/lang/Object;)V
         2: .line 129
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 3 /* authInfo */
            invokevirtual io.vertx.ext.auth.authentication.TokenCredentials.getToken:()Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.decode:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            astore 4 /* payload */
        start local 4 // io.vertx.core.json.JsonObject payload
         3: .line 131
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
            invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
            ifnull 11
         4: .line 133
            aload 4 /* payload */
            ldc "aud"
            invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
            instanceof java.lang.String
            ifeq 7
         5: .line 134
            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
         6: .line 135
            goto 8
        end local 5 // io.vertx.core.json.JsonArray target
         7: .line 136
      StackMap locals: io.vertx.ext.auth.authentication.TokenCredentials io.vertx.core.json.JsonObject
      StackMap stack:
            aload 4 /* payload */
            ldc "aud"
            getstatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.EMPTY_ARRAY:Lio/vertx/core/json/JsonArray;
            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
         8: .line 139
      StackMap locals: io.vertx.core.json.JsonArray
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/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 11
         9: .line 140
            aload 2 /* resultHandler */
            new java.lang.StringBuilder
            dup
            ldc "Invalid JWT audience. expected: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/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
        10: .line 141
            return
        end local 5 // io.vertx.core.json.JsonArray target
        11: .line 145
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
            invokevirtual io.vertx.ext.auth.JWTOptions.getIssuer:()Ljava/lang/String;
            ifnull 15
        12: .line 146
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/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 15
        13: .line 147
            aload 2 /* resultHandler */
            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
        14: .line 148
            return
        15: .line 152
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 4 /* payload */
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.isScopeGranted:(Lio/vertx/core/json/JsonObject;Lio/vertx/ext/auth/JWTOptions;)Z
            ifne 18
        16: .line 153
            aload 2 /* resultHandler */
            ldc "Invalid JWT token: missing required scopes."
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        17: .line 154
            return
        18: .line 157
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* authInfo */
            invokevirtual io.vertx.ext.auth.authentication.TokenCredentials.getToken:()Ljava/lang/String;
            aload 4 /* payload */
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.permissionsClaimKey:Ljava/lang/String;
            invokevirtual io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.createUser:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/ext/auth/User;
            astore 5 /* user */
        start local 5 // io.vertx.ext.auth.User user
        19: .line 159
            aload 5 /* user */
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
            invokevirtual io.vertx.ext.auth.JWTOptions.getLeeway:()I
            invokeinterface io.vertx.ext.auth.User.expired:(I)Z
            ifeq 23
        20: .line 160
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
            invokevirtual io.vertx.ext.auth.JWTOptions.isIgnoreExpiration:()Z
            ifne 23
        21: .line 161
            aload 2 /* resultHandler */
            ldc "Invalid JWT token: missing required scopes."
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        22: .line 162
            return
        23: .line 166
      StackMap locals: io.vertx.ext.auth.User
      StackMap stack:
            aload 2 /* resultHandler */
            aload 5 /* user */
            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 5 // io.vertx.ext.auth.User user
        end local 4 // io.vertx.core.json.JsonObject payload
        end local 3 // io.vertx.ext.auth.authentication.TokenCredentials authInfo
        24: .line 168
            goto 27
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.ext.auth.authentication.Credentials io.vertx.core.Handler
      StackMap stack: java.lang.RuntimeException
        25: astore 3 /* e */
        start local 3 // java.lang.RuntimeException e
        26: .line 169
            aload 2 /* resultHandler */
            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
        27: .line 171
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.Handler resultHandler
        end local 1 // io.vertx.ext.auth.authentication.Credentials credentials
        end local 0 // io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   28     0           this  Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
            0   28     1    credentials  Lio/vertx/ext/auth/authentication/Credentials;
            0   28     2  resultHandler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;
            1   24     3       authInfo  Lio/vertx/ext/auth/authentication/TokenCredentials;
            3   24     4        payload  Lio/vertx/core/json/JsonObject;
            6    7     5         target  Lio/vertx/core/json/JsonArray;
            8   11     5         target  Lio/vertx/core/json/JsonArray;
           19   24     5           user  Lio/vertx/ext/auth/User;
           26   27     3              e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           0    10      25  Class java.lang.RuntimeException
          11    14      25  Class java.lang.RuntimeException
          15    17      25  Class java.lang.RuntimeException
          18    22      25  Class java.lang.RuntimeException
          23    24      25  Class java.lang.RuntimeException
    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    
      resultHandler  

  public java.lang.String generateToken(io.vertx.core.json.JsonObject, io.vertx.ext.auth.JWTOptions);
    descriptor: (Lio/vertx/core/json/JsonObject;Lio/vertx/ext/auth/JWTOptions;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl this
        start local 1 // io.vertx.core.json.JsonObject claims
        start local 2 // io.vertx.ext.auth.JWTOptions options
         0: .line 175
            aload 1 /* claims */
            invokevirtual io.vertx.core.json.JsonObject.copy:()Lio/vertx/core/json/JsonObject;
            astore 3 /* _claims */
        start local 3 // io.vertx.core.json.JsonObject _claims
         1: .line 178
            aload 2 /* options */
            invokevirtual io.vertx.ext.auth.JWTOptions.getPermissions:()Ljava/util/List;
            ifnull 3
            aload 3 /* _claims */
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.permissionsClaimKey:Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifne 3
         2: .line 179
            aload 3 /* _claims */
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.permissionsClaimKey:Ljava/lang/String;
            new io.vertx.core.json.JsonArray
            dup
            aload 2 /* options */
            invokevirtual io.vertx.ext.auth.JWTOptions.getPermissions:()Ljava/util/List;
            invokespecial io.vertx.core.json.JsonArray.<init>:(Ljava/util/List;)V
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
         3: .line 182
      StackMap locals: io.vertx.core.json.JsonObject
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
            aload 3 /* _claims */
            aload 2 /* options */
            invokevirtual io.vertx.ext.auth.impl.jose.JWT.sign:(Lio/vertx/core/json/JsonObject;Lio/vertx/ext/auth/JWTOptions;)Ljava/lang/String;
            areturn
        end local 3 // io.vertx.core.json.JsonObject _claims
        end local 2 // io.vertx.ext.auth.JWTOptions options
        end local 1 // io.vertx.core.json.JsonObject claims
        end local 0 // io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
            0    4     1   claims  Lio/vertx/core/json/JsonObject;
            0    4     2  options  Lio/vertx/ext/auth/JWTOptions;
            1    4     3  _claims  Lio/vertx/core/json/JsonObject;
    MethodParameters:
         Name  Flags
      claims   
      options  final

  private static io.vertx.core.json.JsonArray getJsonPermissions(io.vertx.core.json.JsonObject, java.lang.String);
    descriptor: (Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.core.json.JsonObject jwtToken
        start local 1 // java.lang.String permissionsClaimKey
         0: .line 186
            aload 1 /* permissionsClaimKey */
            ldc "/"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
         1: .line 187
            aload 0 /* jwtToken */
            aload 1 /* permissionsClaimKey */
            invokestatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.getNestedJsonValue:(Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
            areturn
         2: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* jwtToken */
            aload 1 /* permissionsClaimKey */
            aconst_null
            invokevirtual io.vertx.core.json.JsonObject.getJsonArray:(Ljava/lang/String;Lio/vertx/core/json/JsonArray;)Lio/vertx/core/json/JsonArray;
            areturn
        end local 1 // java.lang.String permissionsClaimKey
        end local 0 // io.vertx.core.json.JsonObject jwtToken
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0             jwtToken  Lio/vertx/core/json/JsonObject;
            0    3     1  permissionsClaimKey  Ljava/lang/String;
    MethodParameters:
                     Name  Flags
      jwtToken             
      permissionsClaimKey  

  private io.vertx.ext.auth.User createUser(java.lang.String, io.vertx.core.json.JsonObject, java.lang.String);
    descriptor: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/ext/auth/User;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl this
        start local 1 // java.lang.String accessToken
        start local 2 // io.vertx.core.json.JsonObject jwtToken
        start local 3 // java.lang.String permissionsClaimKey
         0: .line 201
            aload 1 /* accessToken */
            invokestatic io.vertx.ext.auth.User.fromToken:(Ljava/lang/String;)Lio/vertx/ext/auth/User;
            astore 4 /* result */
        start local 4 // io.vertx.ext.auth.User result
         1: .line 204
            aload 4 /* result */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
         2: .line 205
            ldc "accessToken"
            aload 2 /* jwtToken */
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
         3: .line 208
            aload 2 /* jwtToken */
            aload 4 /* result */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
            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.jwt.impl.JWTAuthProviderImpl.copyProperties:(Lio/vertx/core/json/JsonObject;Lio/vertx/core/json/JsonObject;[Ljava/lang/String;)V
         4: .line 211
            aload 2 /* jwtToken */
            invokevirtual io.vertx.core.json.JsonObject.fieldNames:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 8
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl java.lang.String io.vertx.core.json.JsonObject java.lang.String io.vertx.ext.auth.User top java.util.Iterator
      StackMap stack:
         5: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* key */
        start local 5 // java.lang.String key
         6: .line 212
            getstatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.SPECIAL_KEYS:Ljava/util/Collection;
            aload 5 /* key */
            invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
            ifne 8
         7: .line 213
            aload 4 /* result */
            invokeinterface io.vertx.ext.auth.User.principal:()Lio/vertx/core/json/JsonObject;
            aload 5 /* key */
            aload 2 /* jwtToken */
            aload 5 /* 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 5 // java.lang.String key
         8: .line 211
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         9: .line 218
            aload 4 /* result */
            invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
        10: .line 219
            ldc "rootClaim"
            ldc "accessToken"
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        11: .line 221
            aload 2 /* jwtToken */
            aload 3 /* permissionsClaimKey */
            invokestatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.getJsonPermissions:(Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
            astore 5 /* jsonPermissions */
        start local 5 // io.vertx.core.json.JsonArray jsonPermissions
        12: .line 222
            aload 5 /* jsonPermissions */
            ifnull 19
        13: .line 223
            aload 5 /* jsonPermissions */
            invokevirtual io.vertx.core.json.JsonArray.iterator:()Ljava/util/Iterator;
            astore 7
            goto 18
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl java.lang.String io.vertx.core.json.JsonObject java.lang.String io.vertx.ext.auth.User io.vertx.core.json.JsonArray top java.util.Iterator
      StackMap stack:
        14: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 6 /* item */
        start local 6 // java.lang.Object item
        15: .line 224
            aload 6 /* item */
            instanceof java.lang.String
            ifeq 18
        16: .line 225
            aload 6 /* item */
            checkcast java.lang.String
            astore 8 /* permission */
        start local 8 // java.lang.String permission
        17: .line 226
            aload 4 /* result */
            invokeinterface io.vertx.ext.auth.User.authorizations:()Lio/vertx/ext/auth/authorization/Authorizations;
            ldc "jwt-authentication"
            aload 8 /* permission */
            invokestatic io.vertx.ext.auth.authorization.PermissionBasedAuthorization.create:(Ljava/lang/String;)Lio/vertx/ext/auth/authorization/PermissionBasedAuthorization;
            invokeinterface io.vertx.ext.auth.authorization.Authorizations.add:(Ljava/lang/String;Lio/vertx/ext/auth/authorization/Authorization;)Lio/vertx/ext/auth/authorization/Authorizations;
            pop
        end local 8 // java.lang.String permission
        end local 6 // java.lang.Object item
        18: .line 223
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        19: .line 230
      StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl java.lang.String io.vertx.core.json.JsonObject java.lang.String io.vertx.ext.auth.User io.vertx.core.json.JsonArray
      StackMap stack:
            aload 4 /* result */
            areturn
        end local 5 // io.vertx.core.json.JsonArray jsonPermissions
        end local 4 // io.vertx.ext.auth.User result
        end local 3 // java.lang.String permissionsClaimKey
        end local 2 // io.vertx.core.json.JsonObject jwtToken
        end local 1 // java.lang.String accessToken
        end local 0 // io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   20     0                 this  Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
            0   20     1          accessToken  Ljava/lang/String;
            0   20     2             jwtToken  Lio/vertx/core/json/JsonObject;
            0   20     3  permissionsClaimKey  Ljava/lang/String;
            1   20     4               result  Lio/vertx/ext/auth/User;
            6    8     5                  key  Ljava/lang/String;
           12   20     5      jsonPermissions  Lio/vertx/core/json/JsonArray;
           15   18     6                 item  Ljava/lang/Object;
           17   18     8           permission  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                     Name  Flags
      accessToken          
      jwtToken             
      permissionsClaimKey  

  private static void copyProperties(io.vertx.core.json.JsonObject, io.vertx.core.json.JsonObject, java.lang.String[]);
    descriptor: (Lio/vertx/core/json/JsonObject;Lio/vertx/core/json/JsonObject;[Ljava/lang/String;)V
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // io.vertx.core.json.JsonObject source
        start local 1 // io.vertx.core.json.JsonObject target
        start local 2 // java.lang.String[] keys
         0: .line 234
            aload 0 /* source */
            ifnull 7
            aload 1 /* target */
            ifnull 7
         1: .line 235
            aload 2 /* keys */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 6
      StackMap locals: io.vertx.core.json.JsonObject io.vertx.core.json.JsonObject java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* key */
        start local 3 // java.lang.String key
         3: .line 236
            aload 0 /* source */
            aload 3 /* key */
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 5
            aload 1 /* target */
            aload 3 /* key */
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifne 5
         4: .line 237
            aload 1 /* target */
            aload 3 /* key */
            aload 0 /* source */
            aload 3 /* 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 3 // java.lang.String key
         5: .line 235
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         6: iload 4
            iload 5
            if_icmplt 2
         7: .line 241
      StackMap locals: io.vertx.core.json.JsonObject io.vertx.core.json.JsonObject java.lang.String[]
      StackMap stack:
            return
        end local 2 // java.lang.String[] keys
        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    8     0  source  Lio/vertx/core/json/JsonObject;
            0    8     1  target  Lio/vertx/core/json/JsonObject;
            0    8     2    keys  [Ljava/lang/String;
            3    5     3     key  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      source  
      target  
      keys    

  private static io.vertx.core.json.JsonArray getNestedJsonValue(io.vertx.core.json.JsonObject, java.lang.String);
    descriptor: (Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // io.vertx.core.json.JsonObject jwtToken
        start local 1 // java.lang.String permissionsClaimKey
         0: .line 244
            aload 1 /* permissionsClaimKey */
            ldc "/"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* keys */
        start local 2 // java.lang.String[] keys
         1: .line 245
            aconst_null
            astore 3 /* obj */
        start local 3 // io.vertx.core.json.JsonObject obj
         2: .line 246
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 13
         4: .line 247
      StackMap locals: java.lang.String[] io.vertx.core.json.JsonObject int
      StackMap stack:
            iload 4 /* i */
            ifne 7
         5: .line 248
            aload 0 /* jwtToken */
            aload 2 /* keys */
            iload 4 /* i */
            aaload
            invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            astore 3 /* obj */
         6: .line 249
            goto 12
      StackMap locals:
      StackMap stack:
         7: iload 4 /* i */
            aload 2 /* keys */
            arraylength
            iconst_1
            isub
            if_icmpne 10
         8: .line 250
            aload 3 /* obj */
            ifnull 12
         9: .line 251
            aload 3 /* obj */
            aload 2 /* keys */
            iload 4 /* i */
            aaload
            invokevirtual io.vertx.core.json.JsonObject.getJsonArray:(Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
            areturn
        10: .line 254
      StackMap locals:
      StackMap stack:
            aload 3 /* obj */
            ifnull 12
        11: .line 255
            aload 3 /* obj */
            aload 2 /* keys */
            iload 4 /* i */
            aaload
            invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            astore 3 /* obj */
        12: .line 246
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 4 /* i */
            aload 2 /* keys */
            arraylength
            if_icmplt 4
        end local 4 // int i
        14: .line 259
            aconst_null
            areturn
        end local 3 // io.vertx.core.json.JsonObject obj
        end local 2 // java.lang.String[] keys
        end local 1 // java.lang.String permissionsClaimKey
        end local 0 // io.vertx.core.json.JsonObject jwtToken
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   15     0             jwtToken  Lio/vertx/core/json/JsonObject;
            0   15     1  permissionsClaimKey  Ljava/lang/String;
            1   15     2                 keys  [Ljava/lang/String;
            2   15     3                  obj  Lio/vertx/core/json/JsonObject;
            3   14     4                    i  I
    MethodParameters:
                     Name  Flags
      jwtToken             
      permissionsClaimKey  
}
SourceFile: "JWTAuthProviderImpl.java"