public abstract class io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl<T extends io.vertx.ext.auth.authentication.AuthenticationProvider> implements io.vertx.ext.web.handler.AuthenticationHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl
  super_class: java.lang.Object
{
  static final java.lang.String AUTH_PROVIDER_CONTEXT_KEY;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "io.vertx.ext.web.handler.AuthenticationHandler.provider"

  static final io.vertx.ext.web.handler.impl.HttpStatusException UNAUTHORIZED;
    descriptor: Lio/vertx/ext/web/handler/impl/HttpStatusException;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final io.vertx.ext.web.handler.impl.HttpStatusException BAD_REQUEST;
    descriptor: Lio/vertx/ext/web/handler/impl/HttpStatusException;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final io.vertx.ext.web.handler.impl.HttpStatusException BAD_METHOD;
    descriptor: Lio/vertx/ext/web/handler/impl/HttpStatusException;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  protected final java.lang.String realm;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final T authProvider;
    descriptor: Lio/vertx/ext/auth/authentication/AuthenticationProvider;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: TT;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 35
            new io.vertx.ext.web.handler.impl.HttpStatusException
            dup
            sipush 401
            invokespecial io.vertx.ext.web.handler.impl.HttpStatusException.<init>:(I)V
            putstatic io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.UNAUTHORIZED:Lio/vertx/ext/web/handler/impl/HttpStatusException;
         1: .line 36
            new io.vertx.ext.web.handler.impl.HttpStatusException
            dup
            sipush 400
            invokespecial io.vertx.ext.web.handler.impl.HttpStatusException.<init>:(I)V
            putstatic io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.BAD_REQUEST:Lio/vertx/ext/web/handler/impl/HttpStatusException;
         2: .line 37
            new io.vertx.ext.web.handler.impl.HttpStatusException
            dup
            sipush 405
            invokespecial io.vertx.ext.web.handler.impl.HttpStatusException.<init>:(I)V
            putstatic io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.BAD_METHOD:Lio/vertx/ext/web/handler/impl/HttpStatusException;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: (Lio/vertx/ext/auth/authentication/AuthenticationProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
        start local 1 // io.vertx.ext.auth.authentication.AuthenticationProvider authProvider
         0: .line 43
            aload 0 /* this */
            aload 1 /* authProvider */
            aconst_null
            invokespecial io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.<init>:(Lio/vertx/ext/auth/authentication/AuthenticationProvider;Ljava/lang/String;)V
         1: .line 44
            return
        end local 1 // io.vertx.ext.auth.authentication.AuthenticationProvider authProvider
        end local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lio/vertx/ext/web/handler/impl/AuthenticationHandlerImpl<TT;>;
            0    2     1  authProvider  TT;
    Signature: (TT;)V
    MethodParameters:
              Name  Flags
      authProvider  

  public void <init>(T, java.lang.String);
    descriptor: (Lio/vertx/ext/auth/authentication/AuthenticationProvider;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
        start local 1 // io.vertx.ext.auth.authentication.AuthenticationProvider authProvider
        start local 2 // java.lang.String realm
         0: .line 46
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 47
            aload 0 /* this */
            aload 1 /* authProvider */
            putfield io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.authProvider:Lio/vertx/ext/auth/authentication/AuthenticationProvider;
         2: .line 48
            aload 0 /* this */
            aload 2 /* realm */
            ifnonnull 3
            aconst_null
            goto 5
      StackMap locals: io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl io.vertx.ext.auth.authentication.AuthenticationProvider java.lang.String
      StackMap stack: io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl
         3: aload 2 /* realm */
         4: .line 50
            ldc "\""
            ldc "\\\""
            invokevirtual java.lang.String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
         5: .line 48
      StackMap locals: io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl io.vertx.ext.auth.authentication.AuthenticationProvider java.lang.String
      StackMap stack: io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl java.lang.String
            putfield io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.realm:Ljava/lang/String;
         6: .line 52
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.realm:Ljava/lang/String;
            ifnull 9
         7: .line 53
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.realm:Ljava/lang/String;
            bipush 13
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 8
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.realm:Ljava/lang/String;
            bipush 10
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpeq 9
         8: .line 54
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Not allowed [\\r|\\n] characters detected on realm name"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 56
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String realm
        end local 1 // io.vertx.ext.auth.authentication.AuthenticationProvider authProvider
        end local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Lio/vertx/ext/web/handler/impl/AuthenticationHandlerImpl<TT;>;
            0   10     1  authProvider  TT;
            0   10     2         realm  Ljava/lang/String;
    Signature: (TT;Ljava/lang/String;)V
    MethodParameters:
              Name  Flags
      authProvider  
      realm         

  public void handle(io.vertx.ext.web.RoutingContext);
    descriptor: (Lio/vertx/ext/web/RoutingContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
        start local 1 // io.vertx.ext.web.RoutingContext ctx
         0: .line 61
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.handlePreflight:(Lio/vertx/ext/web/RoutingContext;)Z
            ifeq 2
         1: .line 62
            return
         2: .line 65
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.user:()Lio/vertx/ext/auth/User;
            astore 2 /* user */
        start local 2 // io.vertx.ext.auth.User user
         3: .line 66
            aload 2 /* user */
            ifnull 6
         4: .line 68
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.postAuthentication:(Lio/vertx/ext/web/RoutingContext;)V
         5: .line 69
            return
         6: .line 75
      StackMap locals: io.vertx.ext.auth.User
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
            invokeinterface io.vertx.core.http.HttpServerRequest.pause:()Lio/vertx/core/http/HttpServerRequest;
            pop
         7: .line 77
            aload 0 /* this */
            aload 1 /* ctx */
            aload 0 /* this */
            aload 1 /* ctx */
            invokedynamic handle(Lio/vertx/ext/web/handler/impl/AuthenticationHandlerImpl;Lio/vertx/ext/web/RoutingContext;)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/web/handler/impl/AuthenticationHandlerImpl.lambda$0(Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.parseCredentials:(Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/Handler;)V
         8: .line 117
            return
        end local 2 // io.vertx.ext.auth.User user
        end local 1 // io.vertx.ext.web.RoutingContext ctx
        end local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lio/vertx/ext/web/handler/impl/AuthenticationHandlerImpl<TT;>;
            0    9     1   ctx  Lio/vertx/ext/web/RoutingContext;
            3    9     2  user  Lio/vertx/ext/auth/User;
    MethodParameters:
      Name  Flags
      ctx   

  protected void processException(io.vertx.ext.web.RoutingContext, java.lang.Throwable);
    descriptor: (Lio/vertx/ext/web/RoutingContext;Ljava/lang/Throwable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
        start local 1 // io.vertx.ext.web.RoutingContext ctx
        start local 2 // java.lang.Throwable exception
         0: .line 125
            aload 2 /* exception */
            ifnull 18
         1: .line 126
            aload 2 /* exception */
            instanceof io.vertx.ext.web.handler.impl.HttpStatusException
            ifeq 18
         2: .line 127
            aload 2 /* exception */
            checkcast io.vertx.ext.web.handler.impl.HttpStatusException
            invokevirtual io.vertx.ext.web.handler.impl.HttpStatusException.getStatusCode:()I
            istore 3 /* statusCode */
        start local 3 // int statusCode
         3: .line 128
            aload 2 /* exception */
            checkcast io.vertx.ext.web.handler.impl.HttpStatusException
            invokevirtual io.vertx.ext.web.handler.impl.HttpStatusException.getPayload:()Ljava/lang/String;
            astore 4 /* payload */
        start local 4 // java.lang.String payload
         4: .line 130
            iload 3 /* statusCode */
            lookupswitch { // 2
                  302: 5
                  401: 10
              default: 16
          }
         5: .line 132
      StackMap locals: int java.lang.String
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
         6: .line 133
            getstatic io.vertx.core.http.HttpHeaders.LOCATION:Ljava/lang/CharSequence;
            aload 4 /* payload */
            invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Lio/vertx/core/http/HttpServerResponse;
         7: .line 134
            sipush 302
            invokeinterface io.vertx.core.http.HttpServerResponse.setStatusCode:(I)Lio/vertx/core/http/HttpServerResponse;
         8: .line 135
            new java.lang.StringBuilder
            dup
            ldc "Redirecting to "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* payload */
            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;
            invokeinterface io.vertx.core.http.HttpServerResponse.end:(Ljava/lang/String;)Lio/vertx/core/Future;
            pop
         9: .line 136
            return
        10: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.authenticateHeader:(Lio/vertx/ext/web/RoutingContext;)Ljava/lang/String;
            astore 5 /* header */
        start local 5 // java.lang.String header
        11: .line 139
            aload 5 /* header */
            ifnull 14
        12: .line 140
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
        13: .line 141
            ldc "WWW-Authenticate"
            aload 5 /* header */
            invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
            pop
        14: .line 143
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* ctx */
            sipush 401
            aload 2 /* exception */
            invokeinterface io.vertx.ext.web.RoutingContext.fail:(ILjava/lang/Throwable;)V
        15: .line 144
            return
        end local 5 // java.lang.String header
        16: .line 146
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            iload 3 /* statusCode */
            aload 2 /* exception */
            invokeinterface io.vertx.ext.web.RoutingContext.fail:(ILjava/lang/Throwable;)V
        17: .line 147
            return
        end local 4 // java.lang.String payload
        end local 3 // int statusCode
        18: .line 153
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            aload 2 /* exception */
            invokeinterface io.vertx.ext.web.RoutingContext.fail:(Ljava/lang/Throwable;)V
        19: .line 154
            return
        end local 2 // java.lang.Throwable exception
        end local 1 // io.vertx.ext.web.RoutingContext ctx
        end local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   20     0        this  Lio/vertx/ext/web/handler/impl/AuthenticationHandlerImpl<TT;>;
            0   20     1         ctx  Lio/vertx/ext/web/RoutingContext;
            0   20     2   exception  Ljava/lang/Throwable;
            3   18     3  statusCode  I
            4   18     4     payload  Ljava/lang/String;
           11   16     5      header  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      ctx        
      exception  

  private boolean handlePreflight(io.vertx.ext.web.RoutingContext);
    descriptor: (Lio/vertx/ext/web/RoutingContext;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=8, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
        start local 1 // io.vertx.ext.web.RoutingContext ctx
         0: .line 157
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
            astore 2 /* request */
        start local 2 // io.vertx.core.http.HttpServerRequest request
         1: .line 160
            aload 2 /* request */
            invokeinterface io.vertx.core.http.HttpServerRequest.method:()Lio/vertx/core/http/HttpMethod;
            getstatic io.vertx.core.http.HttpMethod.OPTIONS:Lio/vertx/core/http/HttpMethod;
            if_acmpne 11
         2: .line 162
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
            getstatic io.vertx.core.http.HttpHeaders.ACCESS_CONTROL_REQUEST_HEADERS:Ljava/lang/CharSequence;
            invokeinterface io.vertx.core.http.HttpServerRequest.getHeader:(Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 3 /* accessControlRequestHeader */
        start local 3 // java.lang.String accessControlRequestHeader
         3: .line 163
            aload 3 /* accessControlRequestHeader */
            ifnull 11
         4: .line 165
            aload 3 /* accessControlRequestHeader */
            ldc ","
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 10
      StackMap locals: io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest java.lang.String top int int java.lang.String[]
      StackMap stack:
         5: aload 7
            iload 5
            aaload
            astore 4 /* ctrlReq */
        start local 4 // java.lang.String ctrlReq
         6: .line 166
            aload 4 /* ctrlReq */
            ldc "Authorization"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 9
         7: .line 168
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.next:()V
         8: .line 169
            iconst_1
            ireturn
        end local 4 // java.lang.String ctrlReq
         9: .line 165
      StackMap locals:
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        10: iload 5
            iload 6
            if_icmplt 5
        end local 3 // java.lang.String accessControlRequestHeader
        11: .line 175
      StackMap locals: io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // io.vertx.core.http.HttpServerRequest request
        end local 1 // io.vertx.ext.web.RoutingContext ctx
        end local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   12     0                        this  Lio/vertx/ext/web/handler/impl/AuthenticationHandlerImpl<TT;>;
            0   12     1                         ctx  Lio/vertx/ext/web/RoutingContext;
            1   12     2                     request  Lio/vertx/core/http/HttpServerRequest;
            3   11     3  accessControlRequestHeader  Ljava/lang/String;
            6    9     4                     ctrlReq  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      ctx   

  protected io.vertx.ext.auth.authentication.AuthenticationProvider getAuthProvider(io.vertx.ext.web.RoutingContext);
    descriptor: (Lio/vertx/ext/web/RoutingContext;)Lio/vertx/ext/auth/authentication/AuthenticationProvider;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
        start local 1 // io.vertx.ext.web.RoutingContext ctx
         0: .line 180
            aload 1 /* ctx */
            ldc "io.vertx.ext.web.handler.AuthenticationHandler.provider"
            invokeinterface io.vertx.ext.web.RoutingContext.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast io.vertx.ext.auth.authentication.AuthenticationProvider
            astore 2 /* provider */
        start local 2 // io.vertx.ext.auth.authentication.AuthenticationProvider provider
         1: .line 181
            aload 2 /* provider */
            ifnull 5
         2: .line 183
            aload 2 /* provider */
         3: areturn
        end local 2 // io.vertx.ext.auth.authentication.AuthenticationProvider provider
         4: .line 185
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            pop
         5: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.authProvider:Lio/vertx/ext/auth/authentication/AuthenticationProvider;
            areturn
        end local 1 // io.vertx.ext.web.RoutingContext ctx
        end local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lio/vertx/ext/web/handler/impl/AuthenticationHandlerImpl<TT;>;
            0    6     1       ctx  Lio/vertx/ext/web/RoutingContext;
            1    4     2  provider  Lio/vertx/ext/auth/authentication/AuthenticationProvider;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.RuntimeException
    MethodParameters:
      Name  Flags
      ctx   

  public void handle(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast io.vertx.ext.web.RoutingContext
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.handle:(Lio/vertx/ext/web/RoutingContext;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void lambda$0(io.vertx.ext.web.RoutingContext, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
        start local 2 // io.vertx.core.AsyncResult res
         0: .line 78
            aload 2 /* res */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 4
         1: .line 80
            aload 1
            invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
            invokeinterface io.vertx.core.http.HttpServerRequest.resume:()Lio/vertx/core/http/HttpServerRequest;
            pop
         2: .line 81
            aload 0 /* this */
            aload 1
            aload 2 /* res */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.processException:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/Throwable;)V
         3: .line 82
            return
         4: .line 85
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.getAuthProvider:(Lio/vertx/ext/web/RoutingContext;)Lio/vertx/ext/auth/authentication/AuthenticationProvider;
            aload 2 /* res */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.ext.auth.authentication.Credentials
            aload 0 /* this */
            aload 1
            invokedynamic handle(Lio/vertx/ext/web/handler/impl/AuthenticationHandlerImpl;Lio/vertx/ext/web/RoutingContext;)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/web/handler/impl/AuthenticationHandlerImpl.lambda$1(Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokeinterface io.vertx.ext.auth.authentication.AuthenticationProvider.authenticate:(Lio/vertx/ext/auth/authentication/Credentials;Lio/vertx/core/Handler;)V
         5: .line 116
            return
        end local 2 // io.vertx.core.AsyncResult res
        end local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/vertx/ext/web/handler/impl/AuthenticationHandlerImpl<TT;>;
            0    6     2   res  Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/authentication/Credentials;>;

  private void lambda$1(io.vertx.ext.web.RoutingContext, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
        start local 2 // io.vertx.core.AsyncResult authN
         0: .line 86
            aload 2 /* authN */
            invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
            ifeq 9
         1: .line 87
            aload 2 /* authN */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.ext.auth.User
            astore 3 /* authenticated */
        start local 3 // io.vertx.ext.auth.User authenticated
         2: .line 88
            aload 1
            aload 3 /* authenticated */
            invokeinterface io.vertx.ext.web.RoutingContext.setUser:(Lio/vertx/ext/auth/User;)V
         3: .line 89
            aload 1
            invokeinterface io.vertx.ext.web.RoutingContext.session:()Lio/vertx/ext/web/Session;
            astore 4 /* session */
        start local 4 // io.vertx.ext.web.Session session
         4: .line 90
            aload 4 /* session */
            ifnull 6
         5: .line 93
            aload 4 /* session */
            invokeinterface io.vertx.ext.web.Session.regenerateId:()Lio/vertx/ext/web/Session;
            pop
         6: .line 96
      StackMap locals: io.vertx.ext.auth.User io.vertx.ext.web.Session
      StackMap stack:
            aload 1
            invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
            invokeinterface io.vertx.core.http.HttpServerRequest.resume:()Lio/vertx/core/http/HttpServerRequest;
            pop
         7: .line 97
            aload 0 /* this */
            aload 1
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.postAuthentication:(Lio/vertx/ext/web/RoutingContext;)V
        end local 4 // io.vertx.ext.web.Session session
        end local 3 // io.vertx.ext.auth.User authenticated
         8: .line 98
            goto 19
         9: .line 99
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.authenticateHeader:(Lio/vertx/ext/web/RoutingContext;)Ljava/lang/String;
            astore 3 /* header */
        start local 3 // java.lang.String header
        10: .line 100
            aload 3 /* header */
            ifnull 13
        11: .line 101
            aload 1
            invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
        12: .line 102
            ldc "WWW-Authenticate"
            aload 3 /* header */
            invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
            pop
        13: .line 105
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* authN */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            instanceof io.vertx.ext.web.handler.impl.HttpStatusException
            ifeq 17
        14: .line 107
            aload 1
            invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
            invokeinterface io.vertx.core.http.HttpServerRequest.resume:()Lio/vertx/core/http/HttpServerRequest;
            pop
        15: .line 108
            aload 0 /* this */
            aload 1
            aload 2 /* authN */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.processException:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/Throwable;)V
        16: .line 109
            goto 19
        17: .line 111
      StackMap locals:
      StackMap stack:
            aload 1
            invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
            invokeinterface io.vertx.core.http.HttpServerRequest.resume:()Lio/vertx/core/http/HttpServerRequest;
            pop
        18: .line 112
            aload 0 /* this */
            aload 1
            new io.vertx.ext.web.handler.impl.HttpStatusException
            dup
            sipush 401
            aload 2 /* authN */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokespecial io.vertx.ext.web.handler.impl.HttpStatusException.<init>:(ILjava/lang/Throwable;)V
            invokevirtual io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl.processException:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/Throwable;)V
        end local 3 // java.lang.String header
        19: .line 115
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.AsyncResult authN
        end local 0 // io.vertx.ext.web.handler.impl.AuthenticationHandlerImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   20     0           this  Lio/vertx/ext/web/handler/impl/AuthenticationHandlerImpl<TT;>;
            0   20     2          authN  Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;
            2    8     3  authenticated  Lio/vertx/ext/auth/User;
            4    8     4        session  Lio/vertx/ext/web/Session;
           10   19     3         header  Ljava/lang/String;
}
Signature: <T::Lio/vertx/ext/auth/authentication/AuthenticationProvider;>Ljava/lang/Object;Lio/vertx/ext/web/handler/AuthenticationHandler;
SourceFile: "AuthenticationHandlerImpl.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles