public class org.glassfish.grizzly.http2.Http2AddOn implements org.glassfish.grizzly.http.server.AddOn
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.glassfish.grizzly.http2.Http2AddOn
  super_class: java.lang.Object
{
  private static final java.util.logging.Logger LOGGER;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final org.glassfish.grizzly.http2.Http2Configuration http2Configuration;
    descriptor: Lorg/glassfish/grizzly/http2/Http2Configuration;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 41
            ldc Lorg/glassfish/grizzly/http2/Http2AddOn;
            invokestatic org.glassfish.grizzly.Grizzly.logger:(Ljava/lang/Class;)Ljava/util/logging/Logger;
            putstatic org.glassfish.grizzly.http2.Http2AddOn.LOGGER:Ljava/util/logging/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http2.Http2AddOn this
         0: .line 49
            aload 0 /* this */
            invokestatic org.glassfish.grizzly.http2.Http2Configuration.builder:()Lorg/glassfish/grizzly/http2/Http2Configuration$Http2ConfigurationBuilder;
            invokevirtual org.glassfish.grizzly.http2.Http2Configuration$Http2ConfigurationBuilder.build:()Lorg/glassfish/grizzly/http2/Http2Configuration;
            invokespecial org.glassfish.grizzly.http2.Http2AddOn.<init>:(Lorg/glassfish/grizzly/http2/Http2Configuration;)V
         1: .line 50
            return
        end local 0 // org.glassfish.grizzly.http2.Http2AddOn this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/grizzly/http2/Http2AddOn;

  public void <init>(org.glassfish.grizzly.http2.Http2Configuration);
    descriptor: (Lorg/glassfish/grizzly/http2/Http2Configuration;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.http2.Http2AddOn this
        start local 1 // org.glassfish.grizzly.http2.Http2Configuration http2Configuration
         0: .line 52
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 53
            aload 0 /* this */
            aload 1 /* http2Configuration */
            putfield org.glassfish.grizzly.http2.Http2AddOn.http2Configuration:Lorg/glassfish/grizzly/http2/Http2Configuration;
         2: .line 54
            return
        end local 1 // org.glassfish.grizzly.http2.Http2Configuration http2Configuration
        end local 0 // org.glassfish.grizzly.http2.Http2AddOn this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0                this  Lorg/glassfish/grizzly/http2/Http2AddOn;
            0    3     1  http2Configuration  Lorg/glassfish/grizzly/http2/Http2Configuration;
    MethodParameters:
                    Name  Flags
      http2Configuration  final

  public void setup(org.glassfish.grizzly.http.server.NetworkListener, org.glassfish.grizzly.filterchain.FilterChainBuilder);
    descriptor: (Lorg/glassfish/grizzly/http/server/NetworkListener;Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.glassfish.grizzly.http2.Http2AddOn this
        start local 1 // org.glassfish.grizzly.http.server.NetworkListener networkListener
        start local 2 // org.glassfish.grizzly.filterchain.FilterChainBuilder builder
         0: .line 60
            getstatic org.glassfish.grizzly.http2.Http2AddOn.LOGGER:Ljava/util/logging/Logger;
            aload 1 /* networkListener */
            aload 2 /* builder */
            invokedynamic get(Lorg/glassfish/grizzly/http/server/NetworkListener;Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)Ljava/util/function/Supplier;
              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;
                  org/glassfish/grizzly/http2/Http2AddOn.lambda$0(Lorg/glassfish/grizzly/http/server/NetworkListener;Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)Ljava/lang/String; (6)
                  ()Ljava/lang/String;
            invokevirtual java.util.logging.Logger.config:(Ljava/util/function/Supplier;)V
         1: .line 61
            aload 1 /* networkListener */
            invokevirtual org.glassfish.grizzly.http.server.NetworkListener.getTransport:()Lorg/glassfish/grizzly/nio/transport/TCPNIOTransport;
            astore 3 /* transport */
        start local 3 // org.glassfish.grizzly.nio.transport.TCPNIOTransport transport
         2: .line 63
            aload 1 /* networkListener */
            invokevirtual org.glassfish.grizzly.http.server.NetworkListener.isSecure:()Z
            ifeq 5
            invokestatic org.glassfish.grizzly.http2.AlpnSupport.isEnabled:()Z
            ifne 5
         3: .line 64
            getstatic org.glassfish.grizzly.http2.Http2AddOn.LOGGER:Ljava/util/logging/Logger;
            ldc "TLS ALPN (Application-Layer Protocol Negotiation) support is not available. HTTP/2 support will not be enabled."
            invokevirtual java.util.logging.Logger.warning:(Ljava/lang/String;)V
         4: .line 66
            return
         5: .line 69
      StackMap locals: org.glassfish.grizzly.nio.transport.TCPNIOTransport
      StackMap stack:
            aload 0 /* this */
            aload 2 /* builder */
            invokevirtual org.glassfish.grizzly.http2.Http2AddOn.updateFilterChain:(Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)Lorg/glassfish/grizzly/http2/Http2ServerFilter;
            astore 4 /* http2Filter */
        start local 4 // org.glassfish.grizzly.http2.Http2ServerFilter http2Filter
         6: .line 71
            aload 1 /* networkListener */
            invokevirtual org.glassfish.grizzly.http.server.NetworkListener.isSecure:()Z
            ifeq 8
         7: .line 72
            aload 3 /* transport */
            aload 4 /* http2Filter */
            aload 2 /* builder */
            invokestatic org.glassfish.grizzly.http2.Http2AddOn.configureAlpn:(Lorg/glassfish/grizzly/Transport;Lorg/glassfish/grizzly/http2/Http2ServerFilter;Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)V
         8: .line 74
      StackMap locals: org.glassfish.grizzly.http2.Http2ServerFilter
      StackMap stack:
            return
        end local 4 // org.glassfish.grizzly.http2.Http2ServerFilter http2Filter
        end local 3 // org.glassfish.grizzly.nio.transport.TCPNIOTransport transport
        end local 2 // org.glassfish.grizzly.filterchain.FilterChainBuilder builder
        end local 1 // org.glassfish.grizzly.http.server.NetworkListener networkListener
        end local 0 // org.glassfish.grizzly.http2.Http2AddOn this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    9     0             this  Lorg/glassfish/grizzly/http2/Http2AddOn;
            0    9     1  networkListener  Lorg/glassfish/grizzly/http/server/NetworkListener;
            0    9     2          builder  Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;
            2    9     3        transport  Lorg/glassfish/grizzly/nio/transport/TCPNIOTransport;
            6    9     4      http2Filter  Lorg/glassfish/grizzly/http2/Http2ServerFilter;
    MethodParameters:
                 Name  Flags
      networkListener  
      builder          

  public org.glassfish.grizzly.http2.Http2Configuration getConfiguration();
    descriptor: ()Lorg/glassfish/grizzly/http2/Http2Configuration;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http2.Http2AddOn this
         0: .line 82
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2AddOn.http2Configuration:Lorg/glassfish/grizzly/http2/Http2Configuration;
            areturn
        end local 0 // org.glassfish.grizzly.http2.Http2AddOn this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/http2/Http2AddOn;

  private org.glassfish.grizzly.http2.Http2ServerFilter updateFilterChain(org.glassfish.grizzly.filterchain.FilterChainBuilder);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)Lorg/glassfish/grizzly/http2/Http2ServerFilter;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.glassfish.grizzly.http2.Http2AddOn this
        start local 1 // org.glassfish.grizzly.filterchain.FilterChainBuilder builder
         0: .line 88
            aload 1 /* builder */
            ldc Lorg/glassfish/grizzly/http/HttpServerFilter;
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainBuilder.indexOfType:(Ljava/lang/Class;)I
            istore 2 /* codecFilterIdx */
        start local 2 // int codecFilterIdx
         1: .line 89
            new org.glassfish.grizzly.http2.Http2ServerFilter
            dup
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2AddOn.http2Configuration:Lorg/glassfish/grizzly/http2/Http2Configuration;
            invokespecial org.glassfish.grizzly.http2.Http2ServerFilter.<init>:(Lorg/glassfish/grizzly/http2/Http2Configuration;)V
            astore 3 /* http2HandlerFilter */
        start local 3 // org.glassfish.grizzly.http2.Http2ServerFilter http2HandlerFilter
         2: .line 90
            aload 3 /* http2HandlerFilter */
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2AddOn.http2Configuration:Lorg/glassfish/grizzly/http2/Http2Configuration;
            invokevirtual org.glassfish.grizzly.http2.Http2Configuration.getMaxFramePayloadSize:()I
            invokevirtual org.glassfish.grizzly.http2.Http2ServerFilter.setLocalMaxFramePayloadSize:(I)V
         3: .line 91
            aload 1 /* builder */
            iload 2 /* codecFilterIdx */
            iconst_1
            iadd
            aload 3 /* http2HandlerFilter */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainBuilder.add:(ILorg/glassfish/grizzly/filterchain/Filter;)Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;
            pop
         4: .line 92
            aload 3 /* http2HandlerFilter */
            areturn
        end local 3 // org.glassfish.grizzly.http2.Http2ServerFilter http2HandlerFilter
        end local 2 // int codecFilterIdx
        end local 1 // org.glassfish.grizzly.filterchain.FilterChainBuilder builder
        end local 0 // org.glassfish.grizzly.http2.Http2AddOn this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lorg/glassfish/grizzly/http2/Http2AddOn;
            0    5     1             builder  Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;
            1    5     2      codecFilterIdx  I
            2    5     3  http2HandlerFilter  Lorg/glassfish/grizzly/http2/Http2ServerFilter;
    MethodParameters:
         Name  Flags
      builder  final

  private static void configureAlpn(org.glassfish.grizzly.Transport, org.glassfish.grizzly.http2.Http2ServerFilter, org.glassfish.grizzly.filterchain.FilterChainBuilder);
    descriptor: (Lorg/glassfish/grizzly/Transport;Lorg/glassfish/grizzly/http2/Http2ServerFilter;Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.glassfish.grizzly.Transport transport
        start local 1 // org.glassfish.grizzly.http2.Http2ServerFilter http2Filter
        start local 2 // org.glassfish.grizzly.filterchain.FilterChainBuilder builder
         0: .line 98
            getstatic org.glassfish.grizzly.http2.Http2AddOn.LOGGER:Ljava/util/logging/Logger;
            aload 0 /* transport */
            aload 1 /* http2Filter */
            aload 2 /* builder */
            invokedynamic get(Lorg/glassfish/grizzly/Transport;Lorg/glassfish/grizzly/http2/Http2ServerFilter;Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)Ljava/util/function/Supplier;
              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;
                  org/glassfish/grizzly/http2/Http2AddOn.lambda$1(Lorg/glassfish/grizzly/Transport;Lorg/glassfish/grizzly/http2/Http2ServerFilter;Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)Ljava/lang/String; (6)
                  ()Ljava/lang/String;
            invokevirtual java.util.logging.Logger.finest:(Ljava/util/function/Supplier;)V
         1: .line 101
            aload 2 /* builder */
            ldc Lorg/glassfish/grizzly/ssl/SSLBaseFilter;
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainBuilder.indexOfType:(Ljava/lang/Class;)I
            istore 3 /* idx */
        start local 3 // int idx
         2: .line 102
            iload 3 /* idx */
            iconst_m1
            if_icmpne 5
         3: .line 103
            getstatic org.glassfish.grizzly.http2.Http2AddOn.LOGGER:Ljava/util/logging/Logger;
            ldc "No usable SSLBaseFilter found!"
            invokevirtual java.util.logging.Logger.warning:(Ljava/lang/String;)V
         4: .line 104
            return
         5: .line 106
      StackMap locals: int
      StackMap stack:
            aload 2 /* builder */
            iload 3 /* idx */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainBuilder.get:(I)Lorg/glassfish/grizzly/filterchain/Filter;
            checkcast org.glassfish.grizzly.ssl.SSLBaseFilter
            astore 4 /* sslFilter */
        start local 4 // org.glassfish.grizzly.ssl.SSLBaseFilter sslFilter
         6: .line 107
            invokestatic org.glassfish.grizzly.http2.AlpnSupport.getInstance:()Lorg/glassfish/grizzly/http2/AlpnSupport;
            aload 4 /* sslFilter */
            invokevirtual org.glassfish.grizzly.http2.AlpnSupport.configure:(Lorg/glassfish/grizzly/ssl/SSLBaseFilter;)V
         7: .line 108
            invokestatic org.glassfish.grizzly.http2.AlpnSupport.getInstance:()Lorg/glassfish/grizzly/http2/AlpnSupport;
            aload 0 /* transport */
            new org.glassfish.grizzly.http2.AlpnServerNegotiatorImpl
            dup
            aload 1 /* http2Filter */
            invokespecial org.glassfish.grizzly.http2.AlpnServerNegotiatorImpl.<init>:(Lorg/glassfish/grizzly/http2/Http2ServerFilter;)V
            invokevirtual org.glassfish.grizzly.http2.AlpnSupport.setServerSideNegotiator:(Lorg/glassfish/grizzly/Transport;Lorg/glassfish/grizzly/npn/AlpnServerNegotiator;)V
         8: .line 109
            return
        end local 4 // org.glassfish.grizzly.ssl.SSLBaseFilter sslFilter
        end local 3 // int idx
        end local 2 // org.glassfish.grizzly.filterchain.FilterChainBuilder builder
        end local 1 // org.glassfish.grizzly.http2.Http2ServerFilter http2Filter
        end local 0 // org.glassfish.grizzly.Transport transport
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0    transport  Lorg/glassfish/grizzly/Transport;
            0    9     1  http2Filter  Lorg/glassfish/grizzly/http2/Http2ServerFilter;
            0    9     2      builder  Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;
            2    9     3          idx  I
            6    9     4    sslFilter  Lorg/glassfish/grizzly/ssl/SSLBaseFilter;
    MethodParameters:
             Name  Flags
      transport    final
      http2Filter  final
      builder      final

  private static java.lang.String lambda$0(org.glassfish.grizzly.http.server.NetworkListener, org.glassfish.grizzly.filterchain.FilterChainBuilder);
    descriptor: (Lorg/glassfish/grizzly/http/server/NetworkListener;Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=2, args_size=2
         0: .line 60
            ldc "setup(networkListener=%s, builder=%s)"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0
            aastore
            dup
            iconst_1
            aload 1
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.String lambda$1(org.glassfish.grizzly.Transport, org.glassfish.grizzly.http2.Http2ServerFilter, org.glassfish.grizzly.filterchain.FilterChainBuilder);
    descriptor: (Lorg/glassfish/grizzly/Transport;Lorg/glassfish/grizzly/http2/Http2ServerFilter;Lorg/glassfish/grizzly/filterchain/FilterChainBuilder;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=3, args_size=3
         0: .line 98
            ldc "configureAlpn(transport=%s, http2Filter=%s, builder=%s)"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         1: .line 99
            aload 0
            aastore
            dup
            iconst_1
            aload 1
            aastore
            dup
            iconst_2
            aload 2
            aastore
         2: .line 98
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         3: .line 99
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "Http2AddOn.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final Http2ConfigurationBuilder = org.glassfish.grizzly.http2.Http2Configuration$Http2ConfigurationBuilder of org.glassfish.grizzly.http2.Http2Configuration