abstract class io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow implements io.vertx.ext.auth.oauth2.impl.flow.OAuth2Flow
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow
  super_class: java.lang.Object
{
  protected final io.vertx.core.Vertx vertx;
    descriptor: Lio/vertx/core/Vertx;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final io.vertx.ext.auth.oauth2.OAuth2ClientOptions config;
    descriptor: Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  void <init>(io.vertx.core.Vertx, io.vertx.ext.auth.oauth2.OAuth2ClientOptions);
    descriptor: (Lio/vertx/core/Vertx;Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // io.vertx.ext.auth.oauth2.OAuth2ClientOptions config
         0: .line 41
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 42
            aload 0 /* this */
            aload 1 /* vertx */
            putfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.vertx:Lio/vertx/core/Vertx;
         2: .line 43
            aload 0 /* this */
            aload 2 /* config */
            putfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
         3: .line 44
            return
        end local 2 // io.vertx.ext.auth.oauth2.OAuth2ClientOptions config
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lio/vertx/ext/auth/oauth2/impl/flow/AbstractOAuth2Flow;
            0    4     1   vertx  Lio/vertx/core/Vertx;
            0    4     2  config  Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
    MethodParameters:
        Name  Flags
      vertx   
      config  

  static void throwIfNull(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.lang.String key
        start local 1 // java.lang.Object value
         0: .line 47
            aload 1 /* value */
            ifnonnull 2
         1: .line 48
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Configuration missing. You need to specify ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 50
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object value
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0    key  Ljava/lang/String;
            0    3     1  value  Ljava/lang/Object;
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
       Name  Flags
      key    
      value  

  void getToken(java.lang.String, io.vertx.core.json.JsonObject, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.core.json.JsonObject>>);
    descriptor: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=8, args_size=4
        start local 0 // io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow this
        start local 1 // java.lang.String grantType
        start local 2 // io.vertx.core.json.JsonObject params
        start local 3 // io.vertx.core.Handler handler
         0: .line 54
            new io.vertx.core.json.JsonObject
            dup
            invokespecial io.vertx.core.json.JsonObject.<init>:()V
            astore 4 /* headers */
        start local 4 // io.vertx.core.json.JsonObject headers
         1: .line 56
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.isUseBasicAuthorizationHeader:()Z
            ifeq 4
         2: .line 57
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getClientID:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getClientSecret:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* basic */
        start local 5 // java.lang.String basic
         3: .line 58
            aload 4 /* headers */
            ldc "Authorization"
            new java.lang.StringBuilder
            dup
            ldc "Basic "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            invokestatic java.util.Base64.getEncoder:()Ljava/util/Base64$Encoder;
            aload 5 /* basic */
            invokevirtual java.lang.String.getBytes:()[B
            invokevirtual java.util.Base64$Encoder.encodeToString:([B)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        end local 5 // java.lang.String basic
         4: .line 61
      StackMap locals: io.vertx.core.json.JsonObject
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getHeaders:()Lio/vertx/core/json/JsonObject;
            astore 5 /* tmp */
        start local 5 // io.vertx.core.json.JsonObject tmp
         5: .line 62
            aload 5 /* tmp */
            ifnull 7
         6: .line 63
            aload 4 /* headers */
            aload 5 /* tmp */
            invokevirtual io.vertx.core.json.JsonObject.mergeIn:(Lio/vertx/core/json/JsonObject;)Lio/vertx/core/json/JsonObject;
            pop
         7: .line 67
      StackMap locals: io.vertx.core.json.JsonObject
      StackMap stack:
            aload 2 /* params */
            invokevirtual io.vertx.core.json.JsonObject.copy:()Lio/vertx/core/json/JsonObject;
            astore 6 /* form */
        start local 6 // io.vertx.core.json.JsonObject form
         8: .line 68
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getExtraParameters:()Lio/vertx/core/json/JsonObject;
            ifnull 10
         9: .line 69
            aload 6 /* form */
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getExtraParameters:()Lio/vertx/core/json/JsonObject;
            invokevirtual io.vertx.core.json.JsonObject.mergeIn:(Lio/vertx/core/json/JsonObject;)Lio/vertx/core/json/JsonObject;
            pop
        10: .line 72
      StackMap locals: io.vertx.core.json.JsonObject
      StackMap stack:
            aload 6 /* form */
            ldc "client_id"
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getClientID:()Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        11: .line 73
            aload 6 /* form */
            ldc "grant_type"
            aload 1 /* grantType */
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        12: .line 75
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getClientSecretParameterName:()Ljava/lang/String;
            ifnull 14
        13: .line 76
            aload 6 /* form */
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getClientSecretParameterName:()Ljava/lang/String;
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getClientSecret:()Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        14: .line 79
      StackMap locals:
      StackMap stack:
            aload 4 /* headers */
            ldc "Content-Type"
            ldc "application/x-www-form-urlencoded"
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        15: .line 80
            aload 6 /* form */
            invokestatic io.vertx.ext.auth.oauth2.impl.OAuth2API.stringify:(Lio/vertx/core/json/JsonObject;)Ljava/lang/String;
            invokestatic io.vertx.core.buffer.Buffer.buffer:(Ljava/lang/String;)Lio/vertx/core/buffer/Buffer;
            astore 7 /* payload */
        start local 7 // io.vertx.core.buffer.Buffer payload
        16: .line 83
            aload 4 /* headers */
            ldc "Accept"
            ldc "application/json,application/x-www-form-urlencoded;q=0.9"
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        17: .line 86
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.vertx:Lio/vertx/core/Vertx;
        18: .line 87
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
        19: .line 88
            getstatic io.vertx.core.http.HttpMethod.POST:Lio/vertx/core/http/HttpMethod;
        20: .line 89
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getTokenPath:()Ljava/lang/String;
        21: .line 90
            aload 4 /* headers */
        22: .line 91
            aload 7 /* payload */
        23: .line 92
            aload 3 /* handler */
            invokedynamic handle(Lio/vertx/core/Handler;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/ext/auth/oauth2/impl/flow/AbstractOAuth2Flow.lambda$0(Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V (6)
                  (Lio/vertx/core/AsyncResult;)V
        24: .line 85
            invokestatic io.vertx.ext.auth.oauth2.impl.OAuth2API.fetch:(Lio/vertx/core/Vertx;Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;Lio/vertx/core/http/HttpMethod;Ljava/lang/String;Lio/vertx/core/json/JsonObject;Lio/vertx/core/buffer/Buffer;Lio/vertx/core/Handler;)V
        25: .line 148
            return
        end local 7 // io.vertx.core.buffer.Buffer payload
        end local 6 // io.vertx.core.json.JsonObject form
        end local 5 // io.vertx.core.json.JsonObject tmp
        end local 4 // io.vertx.core.json.JsonObject headers
        end local 3 // io.vertx.core.Handler handler
        end local 2 // io.vertx.core.json.JsonObject params
        end local 1 // java.lang.String grantType
        end local 0 // io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   26     0       this  Lio/vertx/ext/auth/oauth2/impl/flow/AbstractOAuth2Flow;
            0   26     1  grantType  Ljava/lang/String;
            0   26     2     params  Lio/vertx/core/json/JsonObject;
            0   26     3    handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/core/json/JsonObject;>;>;
            1   26     4    headers  Lio/vertx/core/json/JsonObject;
            3    4     5      basic  Ljava/lang/String;
            5   26     5        tmp  Lio/vertx/core/json/JsonObject;
            8   26     6       form  Lio/vertx/core/json/JsonObject;
           16   26     7    payload  Lio/vertx/core/buffer/Buffer;
    Signature: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/core/json/JsonObject;>;>;)V
    MethodParameters:
           Name  Flags
      grantType  
      params     
      handler    

  private static void lambda$0(io.vertx.core.Handler, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=6, args_size=2
        start local 1 // io.vertx.core.AsyncResult res
         0: .line 93
            aload 1 /* res */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 3
         1: .line 94
            aload 0
            aload 1 /* 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 95
            return
         3: .line 98
      StackMap locals:
      StackMap stack:
            aload 1 /* res */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.ext.auth.oauth2.OAuth2Response
            astore 2 /* reply */
        start local 2 // io.vertx.ext.auth.oauth2.OAuth2Response reply
         4: .line 100
            aload 2 /* reply */
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.body:()Lio/vertx/core/buffer/Buffer;
            ifnull 5
            aload 2 /* reply */
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.body:()Lio/vertx/core/buffer/Buffer;
            invokeinterface io.vertx.core.buffer.Buffer.length:()I
            ifne 7
         5: .line 101
      StackMap locals: io.vertx.ext.auth.oauth2.OAuth2Response
      StackMap stack:
            aload 0
            ldc "No Body"
            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 102
            return
         7: .line 107
      StackMap locals:
      StackMap stack:
            aload 2 /* reply */
            ldc "application/json"
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.is:(Ljava/lang/String;)Z
            ifeq 13
         8: .line 109
            aload 2 /* reply */
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.jsonObject:()Lio/vertx/core/json/JsonObject;
            astore 3 /* json */
        start local 3 // io.vertx.core.json.JsonObject json
         9: .line 110
            goto 21
        end local 3 // io.vertx.core.json.JsonObject json
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
        10: astore 4 /* e */
        start local 4 // java.lang.RuntimeException e
        11: .line 111
            aload 0
            aload 4 /* e */
            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 112
            return
        end local 4 // java.lang.RuntimeException e
        13: .line 114
      StackMap locals:
      StackMap stack:
            aload 2 /* reply */
            ldc "application/x-www-form-urlencoded"
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.is:(Ljava/lang/String;)Z
            ifne 14
            aload 2 /* reply */
            ldc "text/plain"
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.is:(Ljava/lang/String;)Z
            ifeq 19
        14: .line 116
      StackMap locals:
      StackMap stack:
            aload 2 /* reply */
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.body:()Lio/vertx/core/buffer/Buffer;
            invokeinterface io.vertx.core.buffer.Buffer.toString:()Ljava/lang/String;
            invokestatic io.vertx.ext.auth.oauth2.impl.OAuth2API.queryToJSON:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            astore 3 /* json */
        start local 3 // io.vertx.core.json.JsonObject json
        15: .line 117
            goto 21
        end local 3 // io.vertx.core.json.JsonObject json
      StackMap locals:
      StackMap stack: java.lang.Exception
        16: astore 4 /* e */
        start local 4 // java.lang.Exception e
        17: .line 118
            aload 0
            aload 4 /* e */
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        18: .line 119
            return
        end local 4 // java.lang.Exception e
        19: .line 122
      StackMap locals:
      StackMap stack:
            aload 0
            new java.lang.StringBuilder
            dup
            ldc "Cannot handle content type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* reply */
            invokeinterface io.vertx.ext.auth.oauth2.OAuth2Response.headers:()Lio/vertx/core/MultiMap;
            ldc "Content-Type"
            invokeinterface io.vertx.core.MultiMap.get:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        20: .line 123
            return
        start local 3 // io.vertx.core.json.JsonObject json
        21: .line 127
      StackMap locals: io.vertx.core.json.JsonObject
      StackMap stack:
            aload 3 /* json */
            ldc "error"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 32
        22: .line 129
            aload 3 /* json */
            ldc "error"
            invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
            astore 5 /* error */
        start local 5 // java.lang.Object error
        23: .line 130
            aload 5 /* error */
            instanceof io.vertx.core.json.JsonObject
            ifeq 26
        24: .line 131
            aload 5 /* error */
            checkcast io.vertx.core.json.JsonObject
            ldc "message"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* description */
        start local 4 // java.lang.String description
        25: .line 132
            goto 30
        end local 4 // java.lang.String description
        26: .line 135
      StackMap locals: io.vertx.core.Handler io.vertx.core.AsyncResult io.vertx.ext.auth.oauth2.OAuth2Response io.vertx.core.json.JsonObject top java.lang.Object
      StackMap stack:
            aload 3 /* json */
            ldc "error_description"
            aload 3 /* json */
            ldc "error"
            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 /* description */
        start local 4 // java.lang.String description
        27: .line 136
            goto 30
        end local 4 // java.lang.String description
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
        28: pop
        29: .line 137
            aload 5 /* error */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            astore 4 /* description */
        start local 4 // java.lang.String description
        30: .line 140
      StackMap locals: io.vertx.core.Handler io.vertx.core.AsyncResult io.vertx.ext.auth.oauth2.OAuth2Response io.vertx.core.json.JsonObject java.lang.String java.lang.Object
      StackMap stack:
            aload 0
            aload 4 /* description */
            invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        end local 5 // java.lang.Object error
        end local 4 // java.lang.String description
        31: .line 141
            goto 36
        32: .line 142
      StackMap locals:
      StackMap stack:
            aload 0
            aload 3 /* json */
            invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        33: .line 144
            goto 36
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
        34: astore 4 /* e */
        start local 4 // java.lang.RuntimeException e
        35: .line 145
            aload 0
            aload 4 /* 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 4 // java.lang.RuntimeException e
        end local 3 // io.vertx.core.json.JsonObject json
        end local 2 // io.vertx.ext.auth.oauth2.OAuth2Response reply
        36: .line 147
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.core.AsyncResult res
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   37     1          res  Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/oauth2/OAuth2Response;>;
            4   36     2        reply  Lio/vertx/ext/auth/oauth2/OAuth2Response;
            9   10     3         json  Lio/vertx/core/json/JsonObject;
           15   16     3         json  Lio/vertx/core/json/JsonObject;
           21   36     3         json  Lio/vertx/core/json/JsonObject;
           11   13     4            e  Ljava/lang/RuntimeException;
           17   19     4            e  Ljava/lang/Exception;
           25   26     4  description  Ljava/lang/String;
           27   28     4  description  Ljava/lang/String;
           30   31     4  description  Ljava/lang/String;
           23   31     5        error  Ljava/lang/Object;
           35   36     4            e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           8     9      10  Class java.lang.RuntimeException
          14    15      16  Class java.io.UnsupportedEncodingException
          14    15      16  Class java.lang.RuntimeException
          26    27      28  Class java.lang.RuntimeException
          21    33      34  Class java.lang.RuntimeException
}
SourceFile: "AbstractOAuth2Flow.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public Encoder = java.util.Base64$Encoder of java.util.Base64