public class io.undertow.server.protocol.http2.Http2UpgradeHandler implements io.undertow.server.HttpHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.undertow.server.protocol.http2.Http2UpgradeHandler
  super_class: java.lang.Object
{
  private final io.undertow.server.HttpHandler next;
    descriptor: Lio/undertow/server/HttpHandler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Set<java.lang.String> upgradeStrings;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  public void <init>(io.undertow.server.HttpHandler);
    descriptor: (Lio/undertow/server/HttpHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.http2.Http2UpgradeHandler this
        start local 1 // io.undertow.server.HttpHandler next
         0: .line 63
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 64
            aload 0 /* this */
            aload 1 /* next */
            putfield io.undertow.server.protocol.http2.Http2UpgradeHandler.next:Lio/undertow/server/HttpHandler;
         2: .line 65
            aload 0 /* this */
            ldc "h2c"
            invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
            putfield io.undertow.server.protocol.http2.Http2UpgradeHandler.upgradeStrings:Ljava/util/Set;
         3: .line 66
            return
        end local 1 // io.undertow.server.HttpHandler next
        end local 0 // io.undertow.server.protocol.http2.Http2UpgradeHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/server/protocol/http2/Http2UpgradeHandler;
            0    4     1  next  Lio/undertow/server/HttpHandler;
    MethodParameters:
      Name  Flags
      next  

  public void <init>(io.undertow.server.HttpHandler, java.lang.String[]);
    descriptor: (Lio/undertow/server/HttpHandler;[Ljava/lang/String;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.undertow.server.protocol.http2.Http2UpgradeHandler this
        start local 1 // io.undertow.server.HttpHandler next
        start local 2 // java.lang.String[] upgradeStrings
         0: .line 68
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 69
            aload 0 /* this */
            aload 1 /* next */
            putfield io.undertow.server.protocol.http2.Http2UpgradeHandler.next:Lio/undertow/server/HttpHandler;
         2: .line 70
            aload 0 /* this */
            new java.util.HashSet
            dup
            aload 2 /* upgradeStrings */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            putfield io.undertow.server.protocol.http2.Http2UpgradeHandler.upgradeStrings:Ljava/util/Set;
         3: .line 71
            return
        end local 2 // java.lang.String[] upgradeStrings
        end local 1 // io.undertow.server.HttpHandler next
        end local 0 // io.undertow.server.protocol.http2.Http2UpgradeHandler this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lio/undertow/server/protocol/http2/Http2UpgradeHandler;
            0    4     1            next  Lio/undertow/server/HttpHandler;
            0    4     2  upgradeStrings  [Ljava/lang/String;
    MethodParameters:
                Name  Flags
      next            
      upgradeStrings  

  public void handleRequest(io.undertow.server.HttpServerExchange);
    descriptor: (Lio/undertow/server/HttpServerExchange;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // io.undertow.server.protocol.http2.Http2UpgradeHandler this
        start local 1 // io.undertow.server.HttpServerExchange exchange
         0: .line 75
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestHeaders:()Lio/undertow/util/HeaderMap;
            getstatic io.undertow.util.Headers.UPGRADE:Lio/undertow/util/HttpString;
            invokevirtual io.undertow.util.HeaderMap.getFirst:(Lio/undertow/util/HttpString;)Ljava/lang/String;
            astore 2 /* upgrade */
        start local 2 // java.lang.String upgrade
         1: .line 76
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestHeaders:()Lio/undertow/util/HeaderMap;
            ldc "HTTP2-Settings"
            invokevirtual io.undertow.util.HeaderMap.getFirst:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* settings */
        start local 3 // java.lang.String settings
         2: .line 77
            aload 3 /* settings */
            ifnull 7
            aload 2 /* upgrade */
            ifnull 7
         3: .line 78
            aload 0 /* this */
            getfield io.undertow.server.protocol.http2.Http2UpgradeHandler.upgradeStrings:Ljava/util/Set;
            aload 2 /* upgrade */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 7
         4: .line 79
            aload 1 /* exchange */
            invokestatic io.undertow.server.protocol.http.HttpContinue.requiresContinueResponse:(Lio/undertow/server/HttpServerExchange;)Z
            pop
         5: .line 97
            aload 0 /* this */
            aload 1 /* exchange */
            aload 2 /* upgrade */
            aload 3 /* settings */
            invokevirtual io.undertow.server.protocol.http2.Http2UpgradeHandler.handleUpgradeBody:(Lio/undertow/server/HttpServerExchange;Ljava/lang/String;Ljava/lang/String;)V
         6: .line 100
            return
         7: .line 102
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http2.Http2UpgradeHandler.next:Lio/undertow/server/HttpHandler;
            aload 1 /* exchange */
            invokeinterface io.undertow.server.HttpHandler.handleRequest:(Lio/undertow/server/HttpServerExchange;)V
         8: .line 103
            return
        end local 3 // java.lang.String settings
        end local 2 // java.lang.String upgrade
        end local 1 // io.undertow.server.HttpServerExchange exchange
        end local 0 // io.undertow.server.protocol.http2.Http2UpgradeHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lio/undertow/server/protocol/http2/Http2UpgradeHandler;
            0    9     1  exchange  Lio/undertow/server/HttpServerExchange;
            1    9     2   upgrade  Ljava/lang/String;
            2    9     3  settings  Ljava/lang/String;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
          Name  Flags
      exchange  

  private void handleUpgradeBody(io.undertow.server.HttpServerExchange, java.lang.String, java.lang.String);
    descriptor: (Lio/undertow/server/HttpServerExchange;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=6, args_size=4
        start local 0 // io.undertow.server.protocol.http2.Http2UpgradeHandler this
        start local 1 // io.undertow.server.HttpServerExchange exchange
        start local 2 // java.lang.String upgrade
        start local 3 // java.lang.String settings
         0: .line 106
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.isRequestComplete:()Z
            ifeq 3
         1: .line 107
            aload 0 /* this */
            aload 1 /* exchange */
            aload 2 /* upgrade */
            aload 3 /* settings */
            aconst_null
            invokevirtual io.undertow.server.protocol.http2.Http2UpgradeHandler.handleHttp2Upgrade:(Lio/undertow/server/HttpServerExchange;Ljava/lang/String;Ljava/lang/String;[B)V
         2: .line 108
            goto 12
         3: .line 109
      StackMap locals:
      StackMap stack:
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
            invokevirtual io.undertow.server.ServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            getstatic io.undertow.UndertowOptions.MAX_BUFFERED_REQUEST_SIZE:Lorg/xnio/Option;
            sipush 16384
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            istore 4 /* maxBufferedSize */
        start local 4 // int maxBufferedSize
         4: .line 110
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestContentLength:()J
            iload 4 /* maxBufferedSize */
            i2l
            lcmp
            ifle 7
         5: .line 113
            aload 0 /* this */
            getfield io.undertow.server.protocol.http2.Http2UpgradeHandler.next:Lio/undertow/server/HttpHandler;
            aload 1 /* exchange */
            invokeinterface io.undertow.server.HttpHandler.handleRequest:(Lio/undertow/server/HttpServerExchange;)V
         6: .line 114
            goto 12
      StackMap locals: int
      StackMap stack:
         7: aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestContentLength:()J
            lconst_0
            lcmp
            ifle 10
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestContentLength:()J
            iload 4 /* maxBufferedSize */
            i2l
            lcmp
            ifge 10
         8: .line 116
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestReceiver:()Lio/undertow/io/Receiver;
            new io.undertow.server.protocol.http2.Http2UpgradeHandler$1
            dup
            aload 0 /* this */
            aload 2 /* upgrade */
            aload 3 /* settings */
            invokespecial io.undertow.server.protocol.http2.Http2UpgradeHandler$1.<init>:(Lio/undertow/server/protocol/http2/Http2UpgradeHandler;Ljava/lang/String;Ljava/lang/String;)V
            invokeinterface io.undertow.io.Receiver.receiveFullBytes:(Lio/undertow/io/Receiver$FullBytesCallback;)V
         9: .line 127
            goto 12
        10: .line 128
      StackMap locals:
      StackMap stack:
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 5 /* outputStream */
        start local 5 // java.io.ByteArrayOutputStream outputStream
        11: .line 129
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestReceiver:()Lio/undertow/io/Receiver;
            new io.undertow.server.protocol.http2.Http2UpgradeHandler$2
            dup
            aload 0 /* this */
            aload 5 /* outputStream */
            aload 2 /* upgrade */
            aload 3 /* settings */
            iload 4 /* maxBufferedSize */
            invokespecial io.undertow.server.protocol.http2.Http2UpgradeHandler$2.<init>:(Lio/undertow/server/protocol/http2/Http2UpgradeHandler;Ljava/io/ByteArrayOutputStream;Ljava/lang/String;Ljava/lang/String;I)V
            invokeinterface io.undertow.io.Receiver.receivePartialBytes:(Lio/undertow/io/Receiver$PartialBytesCallback;)V
        end local 5 // java.io.ByteArrayOutputStream outputStream
        end local 4 // int maxBufferedSize
        12: .line 154
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.String settings
        end local 2 // java.lang.String upgrade
        end local 1 // io.undertow.server.HttpServerExchange exchange
        end local 0 // io.undertow.server.protocol.http2.Http2UpgradeHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0             this  Lio/undertow/server/protocol/http2/Http2UpgradeHandler;
            0   13     1         exchange  Lio/undertow/server/HttpServerExchange;
            0   13     2          upgrade  Ljava/lang/String;
            0   13     3         settings  Ljava/lang/String;
            4   12     4  maxBufferedSize  I
           11   12     5     outputStream  Ljava/io/ByteArrayOutputStream;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
          Name  Flags
      exchange  
      upgrade   
      settings  

  private void handleHttp2Upgrade(io.undertow.server.HttpServerExchange, java.lang.String, java.lang.String, byte[]);
    descriptor: (Lio/undertow/server/HttpServerExchange;Ljava/lang/String;Ljava/lang/String;[B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=5
        start local 0 // io.undertow.server.protocol.http2.Http2UpgradeHandler this
        start local 1 // io.undertow.server.HttpServerExchange exchange
        start local 2 // java.lang.String upgrade
        start local 3 // java.lang.String settings
        start local 4 // byte[] data
         0: .line 158
            aload 3 /* settings */
            invokestatic io.undertow.util.FlexBase64.decodeURL:(Ljava/lang/String;)Ljava/nio/ByteBuffer;
            astore 5 /* settingsFrame */
        start local 5 // java.nio.ByteBuffer settingsFrame
         1: .line 159
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getResponseHeaders:()Lio/undertow/util/HeaderMap;
            getstatic io.undertow.util.Headers.UPGRADE:Lio/undertow/util/HttpString;
            aload 2 /* upgrade */
            invokevirtual io.undertow.util.HeaderMap.put:(Lio/undertow/util/HttpString;Ljava/lang/String;)Lio/undertow/util/HeaderMap;
            pop
         2: .line 160
            aload 1 /* exchange */
            new io.undertow.server.protocol.http2.Http2UpgradeHandler$3
            dup
            aload 0 /* this */
            aload 2 /* upgrade */
            aload 5 /* settingsFrame */
            aload 4 /* data */
            invokespecial io.undertow.server.protocol.http2.Http2UpgradeHandler$3.<init>:(Lio/undertow/server/protocol/http2/Http2UpgradeHandler;Ljava/lang/String;Ljava/nio/ByteBuffer;[B)V
            invokevirtual io.undertow.server.HttpServerExchange.upgradeChannel:(Lio/undertow/server/HttpUpgradeListener;)Lio/undertow/server/HttpServerExchange;
            pop
         3: .line 183
            return
        end local 5 // java.nio.ByteBuffer settingsFrame
        end local 4 // byte[] data
        end local 3 // java.lang.String settings
        end local 2 // java.lang.String upgrade
        end local 1 // io.undertow.server.HttpServerExchange exchange
        end local 0 // io.undertow.server.protocol.http2.Http2UpgradeHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lio/undertow/server/protocol/http2/Http2UpgradeHandler;
            0    4     1       exchange  Lio/undertow/server/HttpServerExchange;
            0    4     2        upgrade  Ljava/lang/String;
            0    4     3       settings  Ljava/lang/String;
            0    4     4           data  [B
            1    4     5  settingsFrame  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      exchange  
      upgrade   final
      settings  
      data      final
}
SourceFile: "Http2UpgradeHandler.java"
NestMembers:
  io.undertow.server.protocol.http2.Http2UpgradeHandler$1  io.undertow.server.protocol.http2.Http2UpgradeHandler$2  io.undertow.server.protocol.http2.Http2UpgradeHandler$3  io.undertow.server.protocol.http2.Http2UpgradeHandler$3$1  io.undertow.server.protocol.http2.Http2UpgradeHandler$4
InnerClasses:
  public abstract FullBytesCallback = io.undertow.io.Receiver$FullBytesCallback of io.undertow.io.Receiver
  public abstract PartialBytesCallback = io.undertow.io.Receiver$PartialBytesCallback of io.undertow.io.Receiver
  io.undertow.server.protocol.http2.Http2UpgradeHandler$1
  io.undertow.server.protocol.http2.Http2UpgradeHandler$2
  io.undertow.server.protocol.http2.Http2UpgradeHandler$3