public class io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl extends 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: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl
  super_class: io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow
{
  private final io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl provider;
    descriptor: Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl);
    descriptor: (Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl this
        start local 1 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl provider
         0: .line 36
            aload 0 /* this */
            aload 1 /* provider */
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.getVertx:()Lio/vertx/core/Vertx;
            aload 1 /* provider */
            invokevirtual io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl.getConfig:()Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokespecial io.vertx.ext.auth.oauth2.impl.flow.AbstractOAuth2Flow.<init>:(Lio/vertx/core/Vertx;Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;)V
         1: .line 37
            aload 0 /* this */
            aload 1 /* provider */
            putfield io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl.provider:Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
         2: .line 39
            ldc "clientId"
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getClientID:()Ljava/lang/String;
            invokestatic io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl.throwIfNull:(Ljava/lang/String;Ljava/lang/Object;)V
         3: .line 40
            return
        end local 1 // io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl provider
        end local 0 // io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lio/vertx/ext/auth/oauth2/impl/flow/AuthCodeImpl;
            0    4     1  provider  Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
    MethodParameters:
          Name  Flags
      provider  

  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=5, locals=5, args_size=2
        start local 0 // io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl this
        start local 1 // io.vertx.core.json.JsonObject params
         0: .line 52
            aload 1 /* params */
            invokevirtual io.vertx.core.json.JsonObject.copy:()Lio/vertx/core/json/JsonObject;
            astore 2 /* query */
        start local 2 // io.vertx.core.json.JsonObject query
         1: .line 54
            aload 2 /* query */
            ldc "scopes"
            invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
            ifeq 4
         2: .line 56
            aload 2 /* query */
            ldc "scope"
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getScopeSeparator:()Ljava/lang/String;
            aload 2 /* query */
            ldc "scopes"
            invokevirtual io.vertx.core.json.JsonObject.getJsonArray:(Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
            invokevirtual io.vertx.core.json.JsonArray.getList:()Ljava/util/List;
            invokestatic java.lang.String.join:(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
         3: .line 57
            aload 2 /* query */
            ldc "scopes"
            invokevirtual io.vertx.core.json.JsonObject.remove:(Ljava/lang/String;)Ljava/lang/Object;
            pop
         4: .line 60
      StackMap locals: io.vertx.core.json.JsonObject
      StackMap stack:
            aload 2 /* query */
            ldc "response_type"
            ldc "code"
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
         5: .line 61
            aload 2 /* query */
            ldc "client_id"
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl.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
         6: .line 63
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getAuthorizationPath:()Ljava/lang/String;
            astore 3 /* path */
        start local 3 // java.lang.String path
         7: .line 64
            aload 3 /* path */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 47
            if_icmpne 8
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl.config:Lio/vertx/ext/auth/oauth2/OAuth2ClientOptions;
            invokevirtual io.vertx.ext.auth.oauth2.OAuth2ClientOptions.getSite:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            goto 9
      StackMap locals: java.lang.String
      StackMap stack:
         8: aload 3 /* path */
      StackMap locals:
      StackMap stack: java.lang.String
         9: astore 4 /* url */
        start local 4 // java.lang.String url
        10: .line 66
            new java.lang.StringBuilder
            dup
            aload 4 /* url */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 63
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 2 /* query */
            invokestatic io.vertx.ext.auth.oauth2.impl.OAuth2API.stringify:(Lio/vertx/core/json/JsonObject;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 4 // java.lang.String url
        end local 3 // java.lang.String path
        end local 2 // io.vertx.core.json.JsonObject query
        end local 1 // io.vertx.core.json.JsonObject params
        end local 0 // io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lio/vertx/ext/auth/oauth2/impl/flow/AuthCodeImpl;
            0   11     1  params  Lio/vertx/core/json/JsonObject;
            1   11     2   query  Lio/vertx/core/json/JsonObject;
            7   11     3    path  Ljava/lang/String;
           10   11     4     url  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      params  

  public void getToken(io.vertx.core.json.JsonObject, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.auth.oauth2.AccessToken>>);
    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.oauth2.impl.flow.AuthCodeImpl this
        start local 1 // io.vertx.core.json.JsonObject params
        start local 2 // io.vertx.core.Handler handler
         0: .line 78
            aload 0 /* this */
            ldc "authorization_code"
            aload 1 /* params */
            aload 0 /* this */
            aload 2 /* handler */
            invokedynamic handle(Lio/vertx/ext/auth/oauth2/impl/flow/AuthCodeImpl;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/AuthCodeImpl.lambda$0(Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokevirtual io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl.getToken:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler;)V
         1: .line 95
            return
        end local 2 // io.vertx.core.Handler handler
        end local 1 // io.vertx.core.json.JsonObject params
        end local 0 // io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/ext/auth/oauth2/impl/flow/AuthCodeImpl;
            0    2     1   params  Lio/vertx/core/json/JsonObject;
            0    2     2  handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/oauth2/AccessToken;>;>;
    Signature: (Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/oauth2/AccessToken;>;>;)V
    MethodParameters:
         Name  Flags
      params   
      handler  

  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=4, locals=5, args_size=3
        start local 0 // io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl this
        start local 2 // io.vertx.core.AsyncResult res
         0: .line 79
            aload 2 /* res */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 3
         1: .line 80
            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 81
            return
         3: .line 87
      StackMap locals:
      StackMap stack:
            new io.vertx.ext.auth.oauth2.impl.OAuth2TokenImpl
            dup
            aload 0 /* this */
            getfield io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl.provider:Lio/vertx/ext/auth/oauth2/impl/OAuth2AuthProviderImpl;
            aload 2 /* res */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.core.json.JsonObject
            invokespecial io.vertx.ext.auth.oauth2.impl.OAuth2TokenImpl.<init>:(Lio/vertx/ext/auth/oauth2/OAuth2Auth;Lio/vertx/core/json/JsonObject;)V
            astore 3 /* token */
        start local 3 // io.vertx.ext.auth.oauth2.AccessToken token
         4: .line 88
            goto 8
        end local 3 // io.vertx.ext.auth.oauth2.AccessToken token
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
         5: astore 4 /* e */
        start local 4 // java.lang.RuntimeException e
         6: .line 89
            aload 1
            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
         7: .line 90
            return
        end local 4 // java.lang.RuntimeException e
        start local 3 // io.vertx.ext.auth.oauth2.AccessToken token
         8: .line 93
      StackMap locals: io.vertx.ext.auth.oauth2.AccessToken
      StackMap stack:
            aload 1
            aload 3 /* token */
            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.ext.auth.oauth2.AccessToken token
         9: .line 94
            return
        end local 2 // io.vertx.core.AsyncResult res
        end local 0 // io.vertx.ext.auth.oauth2.impl.flow.AuthCodeImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Lio/vertx/ext/auth/oauth2/impl/flow/AuthCodeImpl;
            0   10     2    res  Lio/vertx/core/AsyncResult<Lio/vertx/core/json/JsonObject;>;
            4    5     3  token  Lio/vertx/ext/auth/oauth2/AccessToken;
            8    9     3  token  Lio/vertx/ext/auth/oauth2/AccessToken;
            6    8     4      e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.RuntimeException
}
SourceFile: "AuthCodeImpl.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles