public abstract class io.dropwizard.auth.AuthFilter<C, P extends java.security.Principal> implements javax.ws.rs.container.ContainerRequestFilter
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: io.dropwizard.auth.AuthFilter
  super_class: java.lang.Object
{
  protected final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected java.lang.String prefix;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String realm;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected io.dropwizard.auth.Authenticator<C, P> authenticator;
    descriptor: Lio/dropwizard/auth/Authenticator;
    flags: (0x0004) ACC_PROTECTED
    Signature: Lio/dropwizard/auth/Authenticator<TC;TP;>;

  protected io.dropwizard.auth.Authorizer<P> authorizer;
    descriptor: Lio/dropwizard/auth/Authorizer;
    flags: (0x0004) ACC_PROTECTED
    Signature: Lio/dropwizard/auth/Authorizer<TP;>;

  protected io.dropwizard.auth.UnauthorizedHandler unauthorizedHandler;
    descriptor: Lio/dropwizard/auth/UnauthorizedHandler;
    flags: (0x0004) ACC_PROTECTED

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.dropwizard.auth.AuthFilter this
         0: .line 18
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 20
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putfield io.dropwizard.auth.AuthFilter.logger:Lorg/slf4j/Logger;
         2: .line 22
            aload 0 /* this */
            ldc "Basic"
            putfield io.dropwizard.auth.AuthFilter.prefix:Ljava/lang/String;
         3: .line 23
            aload 0 /* this */
            ldc "realm"
            putfield io.dropwizard.auth.AuthFilter.realm:Ljava/lang/String;
         4: .line 24
            aload 0 /* this */
            invokedynamic authenticate()Lio/dropwizard/auth/Authenticator;
              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;)Ljava/util/Optional;
                  io/dropwizard/auth/AuthFilter.lambda$0(Ljava/lang/Object;)Ljava/util/Optional; (6)
                  (Ljava/lang/Object;)Ljava/util/Optional;
            putfield io.dropwizard.auth.AuthFilter.authenticator:Lio/dropwizard/auth/Authenticator;
         5: .line 25
            aload 0 /* this */
            new io.dropwizard.auth.PermitAllAuthorizer
            dup
            invokespecial io.dropwizard.auth.PermitAllAuthorizer.<init>:()V
            putfield io.dropwizard.auth.AuthFilter.authorizer:Lio/dropwizard/auth/Authorizer;
         6: .line 26
            aload 0 /* this */
            new io.dropwizard.auth.DefaultUnauthorizedHandler
            dup
            invokespecial io.dropwizard.auth.DefaultUnauthorizedHandler.<init>:()V
            putfield io.dropwizard.auth.AuthFilter.unauthorizedHandler:Lio/dropwizard/auth/UnauthorizedHandler;
         7: .line 18
            return
        end local 0 // io.dropwizard.auth.AuthFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lio/dropwizard/auth/AuthFilter<TC;TP;>;

  protected boolean authenticate(javax.ws.rs.container.ContainerRequestContext, C, java.lang.String);
    descriptor: (Ljavax/ws/rs/container/ContainerRequestContext;Ljava/lang/Object;Ljava/lang/String;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=7, args_size=4
        start local 0 // io.dropwizard.auth.AuthFilter this
        start local 1 // javax.ws.rs.container.ContainerRequestContext requestContext
        start local 2 // java.lang.Object credentials
        start local 3 // java.lang.String scheme
         0: .line 133
            aload 2 /* credentials */
            ifnonnull 2
         1: .line 134
            iconst_0
            ireturn
         2: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.dropwizard.auth.AuthFilter.authenticator:Lio/dropwizard/auth/Authenticator;
            aload 2 /* credentials */
            invokeinterface io.dropwizard.auth.Authenticator.authenticate:(Ljava/lang/Object;)Ljava/util/Optional;
            astore 4 /* principal */
        start local 4 // java.util.Optional principal
         3: .line 138
            aload 4 /* principal */
            invokevirtual java.util.Optional.isPresent:()Z
            ifne 5
         4: .line 139
            iconst_0
            ireturn
         5: .line 142
      StackMap locals: java.util.Optional
      StackMap stack:
            aload 1 /* requestContext */
            invokeinterface javax.ws.rs.container.ContainerRequestContext.getSecurityContext:()Ljavax/ws/rs/core/SecurityContext;
            astore 5 /* securityContext */
        start local 5 // javax.ws.rs.core.SecurityContext securityContext
         6: .line 143
            aload 5 /* securityContext */
            ifnull 7
            aload 5 /* securityContext */
            invokeinterface javax.ws.rs.core.SecurityContext.isSecure:()Z
            ifeq 7
            iconst_1
            goto 8
      StackMap locals: javax.ws.rs.core.SecurityContext
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: istore 6 /* secure */
        start local 6 // boolean secure
         9: .line 145
            aload 1 /* requestContext */
            new io.dropwizard.auth.AuthFilter$1
            dup
            aload 0 /* this */
            aload 4 /* principal */
            iload 6 /* secure */
            aload 3 /* scheme */
            invokespecial io.dropwizard.auth.AuthFilter$1.<init>:(Lio/dropwizard/auth/AuthFilter;Ljava/util/Optional;ZLjava/lang/String;)V
            invokeinterface javax.ws.rs.container.ContainerRequestContext.setSecurityContext:(Ljavax/ws/rs/core/SecurityContext;)V
        10: .line 166
            iconst_1
            ireturn
        end local 6 // boolean secure
        end local 5 // javax.ws.rs.core.SecurityContext securityContext
        end local 4 // java.util.Optional principal
        11: .line 167
      StackMap locals: io.dropwizard.auth.AuthFilter javax.ws.rs.container.ContainerRequestContext java.lang.Object java.lang.String
      StackMap stack: io.dropwizard.auth.AuthenticationException
            astore 4 /* e */
        start local 4 // io.dropwizard.auth.AuthenticationException e
        12: .line 168
            aload 0 /* this */
            getfield io.dropwizard.auth.AuthFilter.logger:Lorg/slf4j/Logger;
            ldc "Error authenticating credentials"
            aload 4 /* e */
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        13: .line 169
            new javax.ws.rs.InternalServerErrorException
            dup
            invokespecial javax.ws.rs.InternalServerErrorException.<init>:()V
            athrow
        end local 4 // io.dropwizard.auth.AuthenticationException e
        end local 3 // java.lang.String scheme
        end local 2 // java.lang.Object credentials
        end local 1 // javax.ws.rs.container.ContainerRequestContext requestContext
        end local 0 // io.dropwizard.auth.AuthFilter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   14     0             this  Lio/dropwizard/auth/AuthFilter<TC;TP;>;
            0   14     1   requestContext  Ljavax/ws/rs/container/ContainerRequestContext;
            0   14     2      credentials  TC;
            0   14     3           scheme  Ljava/lang/String;
            3   11     4        principal  Ljava/util/Optional<TP;>;
            6   11     5  securityContext  Ljavax/ws/rs/core/SecurityContext;
            9   11     6           secure  Z
           12   14     4                e  Lio/dropwizard/auth/AuthenticationException;
      Exception table:
        from    to  target  type
           0     1      11  Class io.dropwizard.auth.AuthenticationException
           2     4      11  Class io.dropwizard.auth.AuthenticationException
           5    10      11  Class io.dropwizard.auth.AuthenticationException
    Signature: (Ljavax/ws/rs/container/ContainerRequestContext;TC;Ljava/lang/String;)Z
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        javax.annotation.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        javax.annotation.Nullable()
      2:
    MethodParameters:
                Name  Flags
      requestContext  
      credentials     
      scheme          

  private static java.util.Optional lambda$0(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/util/Optional;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object credentials
         0: .line 24
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            areturn
        end local 0 // java.lang.Object credentials
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0  credentials  TC;
    Exceptions:
      throws io.dropwizard.auth.AuthenticationException
}
Signature: <C:Ljava/lang/Object;P::Ljava/security/Principal;>Ljava/lang/Object;Ljavax/ws/rs/container/ContainerRequestFilter;
SourceFile: "AuthFilter.java"
NestMembers:
  io.dropwizard.auth.AuthFilter$1  io.dropwizard.auth.AuthFilter$AuthFilterBuilder
InnerClasses:
  io.dropwizard.auth.AuthFilter$1
  public abstract AuthFilterBuilder = io.dropwizard.auth.AuthFilter$AuthFilterBuilder of io.dropwizard.auth.AuthFilter
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
    RuntimeVisibleAnnotations: 
      javax.annotation.Priority(value = 1000)