class org.xnio.http.HttpUpgrade$HttpUpgradeState<T extends org.xnio.StreamConnection>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.xnio.http.HttpUpgrade$HttpUpgradeState
  super_class: java.lang.Object
{
  private final org.xnio.XnioWorker worker;
    descriptor: Lorg/xnio/XnioWorker;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.xnio.ssl.XnioSsl ssl;
    descriptor: Lorg/xnio/ssl/XnioSsl;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.net.InetSocketAddress bindAddress;
    descriptor: Ljava/net/InetSocketAddress;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.net.URI uri;
    descriptor: Ljava/net/URI;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final org.xnio.ChannelListener<? super T> openListener;
    descriptor: Lorg/xnio/ChannelListener;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/xnio/ChannelListener<-TT;>;

  private final org.xnio.ChannelListener<? super org.xnio.channels.BoundChannel> bindListener;
    descriptor: Lorg/xnio/ChannelListener;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;

  private final org.xnio.OptionMap optionMap;
    descriptor: Lorg/xnio/OptionMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object handshakeChecker;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.xnio.FutureResult<T> future;
    descriptor: Lorg/xnio/FutureResult;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/xnio/FutureResult<TT;>;

  private T connection;
    descriptor: Lorg/xnio/StreamConnection;
    flags: (0x0002) ACC_PRIVATE
    Signature: TT;

  private void <init>(org.xnio.XnioWorker, org.xnio.ssl.XnioSsl, java.net.InetSocketAddress, java.net.URI, java.util.Map<java.lang.String, java.lang.String>, org.xnio.ChannelListener<? super T>, org.xnio.ChannelListener<? super org.xnio.channels.BoundChannel>, org.xnio.OptionMap, org.xnio.http.HandshakeChecker);
    descriptor: (Lorg/xnio/XnioWorker;Lorg/xnio/ssl/XnioSsl;Ljava/net/InetSocketAddress;Ljava/net/URI;Ljava/util/Map;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;Lorg/xnio/http/HandshakeChecker;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=13, args_size=10
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
        start local 1 // org.xnio.XnioWorker worker
        start local 2 // org.xnio.ssl.XnioSsl ssl
        start local 3 // java.net.InetSocketAddress bindAddress
        start local 4 // java.net.URI uri
        start local 5 // java.util.Map headers
        start local 6 // org.xnio.ChannelListener openListener
        start local 7 // org.xnio.ChannelListener bindListener
        start local 8 // org.xnio.OptionMap optionMap
        start local 9 // org.xnio.http.HandshakeChecker handshakeChecker
         0: .line 181
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 177
            aload 0 /* this */
            new org.xnio.FutureResult
            dup
            invokespecial org.xnio.FutureResult.<init>:()V
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
         2: .line 182
            aload 0 /* this */
            aload 1 /* worker */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.worker:Lorg/xnio/XnioWorker;
         3: .line 183
            aload 0 /* this */
            aload 2 /* ssl */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.ssl:Lorg/xnio/ssl/XnioSsl;
         4: .line 184
            aload 0 /* this */
            aload 3 /* bindAddress */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindAddress:Ljava/net/InetSocketAddress;
         5: .line 185
            aload 0 /* this */
            aload 4 /* uri */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
         6: .line 186
            aload 0 /* this */
            aload 6 /* openListener */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.openListener:Lorg/xnio/ChannelListener;
         7: .line 187
            aload 0 /* this */
            aload 7 /* bindListener */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindListener:Lorg/xnio/ChannelListener;
         8: .line 188
            aload 0 /* this */
            aload 8 /* optionMap */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.optionMap:Lorg/xnio/OptionMap;
         9: .line 189
            aload 0 /* this */
            aload 9 /* handshakeChecker */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.handshakeChecker:Ljava/lang/Object;
        10: .line 190
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 10 /* newHeaders */
        start local 10 // java.util.Map newHeaders
        11: .line 191
            aload 5 /* headers */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 12
            goto 14
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState org.xnio.XnioWorker org.xnio.ssl.XnioSsl java.net.InetSocketAddress java.net.URI java.util.Map org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap org.xnio.http.HandshakeChecker java.util.Map top java.util.Iterator
      StackMap stack:
        12: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 11 /* entry */
        start local 11 // java.util.Map$Entry entry
        13: .line 192
            aload 10 /* newHeaders */
            aload 11 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 11 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 11 // java.util.Map$Entry entry
        14: .line 191
      StackMap locals:
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        15: .line 194
            aload 0 /* this */
            aload 10 /* newHeaders */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.headers:Ljava/util/Map;
        16: .line 195
            return
        end local 10 // java.util.Map newHeaders
        end local 9 // org.xnio.http.HandshakeChecker handshakeChecker
        end local 8 // org.xnio.OptionMap optionMap
        end local 7 // org.xnio.ChannelListener bindListener
        end local 6 // org.xnio.ChannelListener openListener
        end local 5 // java.util.Map headers
        end local 4 // java.net.URI uri
        end local 3 // java.net.InetSocketAddress bindAddress
        end local 2 // org.xnio.ssl.XnioSsl ssl
        end local 1 // org.xnio.XnioWorker worker
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   17     0              this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            0   17     1            worker  Lorg/xnio/XnioWorker;
            0   17     2               ssl  Lorg/xnio/ssl/XnioSsl;
            0   17     3       bindAddress  Ljava/net/InetSocketAddress;
            0   17     4               uri  Ljava/net/URI;
            0   17     5           headers  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            0   17     6      openListener  Lorg/xnio/ChannelListener<-TT;>;
            0   17     7      bindListener  Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;
            0   17     8         optionMap  Lorg/xnio/OptionMap;
            0   17     9  handshakeChecker  Lorg/xnio/http/HandshakeChecker;
           11   17    10        newHeaders  Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
           13   14    11             entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/String;>;
    Signature: (Lorg/xnio/XnioWorker;Lorg/xnio/ssl/XnioSsl;Ljava/net/InetSocketAddress;Ljava/net/URI;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Lorg/xnio/ChannelListener<-TT;>;Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;Lorg/xnio/OptionMap;Lorg/xnio/http/HandshakeChecker;)V
    MethodParameters:
                  Name  Flags
      worker            final
      ssl               final
      bindAddress       final
      uri               final
      headers           final
      openListener      final
      bindListener      final
      optionMap         final
      handshakeChecker  final

  private void <init>(org.xnio.XnioWorker, org.xnio.ssl.XnioSsl, java.net.InetSocketAddress, java.net.URI, java.util.Map<java.lang.String, java.util.List<java.lang.String>>, org.xnio.ChannelListener<? super T>, org.xnio.ChannelListener<? super org.xnio.channels.BoundChannel>, org.xnio.OptionMap, org.xnio.http.ExtendedHandshakeChecker);
    descriptor: (Lorg/xnio/XnioWorker;Lorg/xnio/ssl/XnioSsl;Ljava/net/InetSocketAddress;Ljava/net/URI;Ljava/util/Map;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;Lorg/xnio/http/ExtendedHandshakeChecker;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=10, args_size=10
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
        start local 1 // org.xnio.XnioWorker worker
        start local 2 // org.xnio.ssl.XnioSsl ssl
        start local 3 // java.net.InetSocketAddress bindAddress
        start local 4 // java.net.URI uri
        start local 5 // java.util.Map headers
        start local 6 // org.xnio.ChannelListener openListener
        start local 7 // org.xnio.ChannelListener bindListener
        start local 8 // org.xnio.OptionMap optionMap
        start local 9 // org.xnio.http.ExtendedHandshakeChecker handshakeChecker
         0: .line 197
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 177
            aload 0 /* this */
            new org.xnio.FutureResult
            dup
            invokespecial org.xnio.FutureResult.<init>:()V
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
         2: .line 198
            aload 0 /* this */
            aload 1 /* worker */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.worker:Lorg/xnio/XnioWorker;
         3: .line 199
            aload 0 /* this */
            aload 2 /* ssl */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.ssl:Lorg/xnio/ssl/XnioSsl;
         4: .line 200
            aload 0 /* this */
            aload 3 /* bindAddress */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindAddress:Ljava/net/InetSocketAddress;
         5: .line 201
            aload 0 /* this */
            aload 4 /* uri */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
         6: .line 202
            aload 0 /* this */
            aload 5 /* headers */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.headers:Ljava/util/Map;
         7: .line 203
            aload 0 /* this */
            aload 6 /* openListener */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.openListener:Lorg/xnio/ChannelListener;
         8: .line 204
            aload 0 /* this */
            aload 7 /* bindListener */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindListener:Lorg/xnio/ChannelListener;
         9: .line 205
            aload 0 /* this */
            aload 8 /* optionMap */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.optionMap:Lorg/xnio/OptionMap;
        10: .line 206
            aload 0 /* this */
            aload 9 /* handshakeChecker */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.handshakeChecker:Ljava/lang/Object;
        11: .line 207
            return
        end local 9 // org.xnio.http.ExtendedHandshakeChecker handshakeChecker
        end local 8 // org.xnio.OptionMap optionMap
        end local 7 // org.xnio.ChannelListener bindListener
        end local 6 // org.xnio.ChannelListener openListener
        end local 5 // java.util.Map headers
        end local 4 // java.net.URI uri
        end local 3 // java.net.InetSocketAddress bindAddress
        end local 2 // org.xnio.ssl.XnioSsl ssl
        end local 1 // org.xnio.XnioWorker worker
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0              this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            0   12     1            worker  Lorg/xnio/XnioWorker;
            0   12     2               ssl  Lorg/xnio/ssl/XnioSsl;
            0   12     3       bindAddress  Ljava/net/InetSocketAddress;
            0   12     4               uri  Ljava/net/URI;
            0   12     5           headers  Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
            0   12     6      openListener  Lorg/xnio/ChannelListener<-TT;>;
            0   12     7      bindListener  Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;
            0   12     8         optionMap  Lorg/xnio/OptionMap;
            0   12     9  handshakeChecker  Lorg/xnio/http/ExtendedHandshakeChecker;
    Signature: (Lorg/xnio/XnioWorker;Lorg/xnio/ssl/XnioSsl;Ljava/net/InetSocketAddress;Ljava/net/URI;Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;Lorg/xnio/ChannelListener<-TT;>;Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;Lorg/xnio/OptionMap;Lorg/xnio/http/ExtendedHandshakeChecker;)V
    MethodParameters:
                  Name  Flags
      worker            final
      ssl               final
      bindAddress       final
      uri               final
      headers           final
      openListener      final
      bindListener      final
      optionMap         final
      handshakeChecker  final

  public void <init>(T, java.net.URI, java.util.Map<java.lang.String, java.lang.String>, org.xnio.ChannelListener<? super org.xnio.StreamConnection>, org.xnio.http.HandshakeChecker);
    descriptor: (Lorg/xnio/StreamConnection;Ljava/net/URI;Ljava/util/Map;Lorg/xnio/ChannelListener;Lorg/xnio/http/HandshakeChecker;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=9, args_size=6
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
        start local 1 // org.xnio.StreamConnection connection
        start local 2 // java.net.URI uri
        start local 3 // java.util.Map headers
        start local 4 // org.xnio.ChannelListener openListener
        start local 5 // org.xnio.http.HandshakeChecker handshakeChecker
         0: .line 209
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 177
            aload 0 /* this */
            new org.xnio.FutureResult
            dup
            invokespecial org.xnio.FutureResult.<init>:()V
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
         2: .line 210
            aload 0 /* this */
            aload 1 /* connection */
            invokevirtual org.xnio.StreamConnection.getWorker:()Lorg/xnio/XnioWorker;
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.worker:Lorg/xnio/XnioWorker;
         3: .line 211
            aload 0 /* this */
            aconst_null
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.ssl:Lorg/xnio/ssl/XnioSsl;
         4: .line 212
            aload 0 /* this */
            aconst_null
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindAddress:Ljava/net/InetSocketAddress;
         5: .line 213
            aload 0 /* this */
            aload 2 /* uri */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
         6: .line 214
            aload 0 /* this */
            aload 4 /* openListener */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.openListener:Lorg/xnio/ChannelListener;
         7: .line 215
            aload 0 /* this */
            aconst_null
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindListener:Lorg/xnio/ChannelListener;
         8: .line 216
            aload 0 /* this */
            getstatic org.xnio.OptionMap.EMPTY:Lorg/xnio/OptionMap;
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.optionMap:Lorg/xnio/OptionMap;
         9: .line 217
            aload 0 /* this */
            aload 5 /* handshakeChecker */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.handshakeChecker:Ljava/lang/Object;
        10: .line 218
            aload 0 /* this */
            aload 1 /* connection */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
        11: .line 219
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 6 /* newHeaders */
        start local 6 // java.util.Map newHeaders
        12: .line 220
            aload 3 /* headers */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 8
            goto 15
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState org.xnio.StreamConnection java.net.URI java.util.Map org.xnio.ChannelListener org.xnio.http.HandshakeChecker java.util.Map top java.util.Iterator
      StackMap stack:
        13: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 7 /* entry */
        start local 7 // java.util.Map$Entry entry
        14: .line 221
            aload 6 /* newHeaders */
            aload 7 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 7 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // java.util.Map$Entry entry
        15: .line 220
      StackMap locals:
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        16: .line 223
            aload 0 /* this */
            aload 6 /* newHeaders */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.headers:Ljava/util/Map;
        17: .line 224
            return
        end local 6 // java.util.Map newHeaders
        end local 5 // org.xnio.http.HandshakeChecker handshakeChecker
        end local 4 // org.xnio.ChannelListener openListener
        end local 3 // java.util.Map headers
        end local 2 // java.net.URI uri
        end local 1 // org.xnio.StreamConnection connection
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   18     0              this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            0   18     1        connection  TT;
            0   18     2               uri  Ljava/net/URI;
            0   18     3           headers  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            0   18     4      openListener  Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;
            0   18     5  handshakeChecker  Lorg/xnio/http/HandshakeChecker;
           12   18     6        newHeaders  Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
           14   15     7             entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/String;>;
    Signature: (TT;Ljava/net/URI;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;Lorg/xnio/http/HandshakeChecker;)V
    MethodParameters:
                  Name  Flags
      connection        final
      uri               final
      headers           final
      openListener      final
      handshakeChecker  final

  public void <init>(T, java.net.URI, java.util.Map<java.lang.String, java.util.List<java.lang.String>>, org.xnio.ChannelListener<? super org.xnio.StreamConnection>, org.xnio.http.ExtendedHandshakeChecker);
    descriptor: (Lorg/xnio/StreamConnection;Ljava/net/URI;Ljava/util/Map;Lorg/xnio/ChannelListener;Lorg/xnio/http/ExtendedHandshakeChecker;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=6
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
        start local 1 // org.xnio.StreamConnection connection
        start local 2 // java.net.URI uri
        start local 3 // java.util.Map headers
        start local 4 // org.xnio.ChannelListener openListener
        start local 5 // org.xnio.http.ExtendedHandshakeChecker handshakeChecker
         0: .line 226
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 177
            aload 0 /* this */
            new org.xnio.FutureResult
            dup
            invokespecial org.xnio.FutureResult.<init>:()V
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
         2: .line 227
            aload 0 /* this */
            aload 1 /* connection */
            invokevirtual org.xnio.StreamConnection.getWorker:()Lorg/xnio/XnioWorker;
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.worker:Lorg/xnio/XnioWorker;
         3: .line 228
            aload 0 /* this */
            aconst_null
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.ssl:Lorg/xnio/ssl/XnioSsl;
         4: .line 229
            aload 0 /* this */
            aconst_null
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindAddress:Ljava/net/InetSocketAddress;
         5: .line 230
            aload 0 /* this */
            aload 2 /* uri */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
         6: .line 231
            aload 0 /* this */
            aload 3 /* headers */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.headers:Ljava/util/Map;
         7: .line 232
            aload 0 /* this */
            aload 4 /* openListener */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.openListener:Lorg/xnio/ChannelListener;
         8: .line 233
            aload 0 /* this */
            aconst_null
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindListener:Lorg/xnio/ChannelListener;
         9: .line 234
            aload 0 /* this */
            getstatic org.xnio.OptionMap.EMPTY:Lorg/xnio/OptionMap;
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.optionMap:Lorg/xnio/OptionMap;
        10: .line 235
            aload 0 /* this */
            aload 5 /* handshakeChecker */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.handshakeChecker:Ljava/lang/Object;
        11: .line 236
            aload 0 /* this */
            aload 1 /* connection */
            putfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
        12: .line 237
            return
        end local 5 // org.xnio.http.ExtendedHandshakeChecker handshakeChecker
        end local 4 // org.xnio.ChannelListener openListener
        end local 3 // java.util.Map headers
        end local 2 // java.net.URI uri
        end local 1 // org.xnio.StreamConnection connection
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0              this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            0   13     1        connection  TT;
            0   13     2               uri  Ljava/net/URI;
            0   13     3           headers  Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
            0   13     4      openListener  Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;
            0   13     5  handshakeChecker  Lorg/xnio/http/ExtendedHandshakeChecker;
    Signature: (TT;Ljava/net/URI;Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;Lorg/xnio/http/ExtendedHandshakeChecker;)V
    MethodParameters:
                  Name  Flags
      connection        final
      uri               final
      headers           final
      openListener      final
      handshakeChecker  final

  private org.xnio.IoFuture<T> doUpgrade();
    descriptor: ()Lorg/xnio/IoFuture;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=4, args_size=1
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
         0: .line 241
            new java.net.InetSocketAddress
            dup
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getHost:()Ljava/lang/String;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getPort:()I
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
            astore 1 /* address */
        start local 1 // java.net.InetSocketAddress address
         1: .line 243
            new org.xnio.http.HttpUpgrade$HttpUpgradeState$ConnectionOpenListener
            dup
            aload 0 /* this */
            invokespecial org.xnio.http.HttpUpgrade$HttpUpgradeState$ConnectionOpenListener.<init>:(Lorg/xnio/http/HttpUpgrade$HttpUpgradeState;)V
            astore 2 /* connectListener */
        start local 2 // org.xnio.ChannelListener connectListener
         2: .line 244
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            astore 3 /* scheme */
        start local 3 // java.lang.String scheme
         3: .line 245
            aload 3 /* scheme */
            ldc "http"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         4: .line 246
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindAddress:Ljava/net/InetSocketAddress;
            ifnonnull 7
         5: .line 247
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.worker:Lorg/xnio/XnioWorker;
            aload 1 /* address */
            aload 2 /* connectListener */
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindListener:Lorg/xnio/ChannelListener;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.optionMap:Lorg/xnio/OptionMap;
            invokevirtual org.xnio.XnioWorker.openStreamConnection:(Ljava/net/SocketAddress;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture;
            new org.xnio.http.HttpUpgrade$HttpUpgradeState$FailureNotifier
            dup
            aload 0 /* this */
            invokespecial org.xnio.http.HttpUpgrade$HttpUpgradeState$FailureNotifier.<init>:(Lorg/xnio/http/HttpUpgrade$HttpUpgradeState;)V
            aconst_null
            invokeinterface org.xnio.IoFuture.addNotifier:(Lorg/xnio/IoFuture$Notifier;Ljava/lang/Object;)Lorg/xnio/IoFuture;
            pop
         6: .line 248
            goto 18
         7: .line 249
      StackMap locals: java.net.InetSocketAddress org.xnio.ChannelListener java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.worker:Lorg/xnio/XnioWorker;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindAddress:Ljava/net/InetSocketAddress;
            aload 1 /* address */
            aload 2 /* connectListener */
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindListener:Lorg/xnio/ChannelListener;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.optionMap:Lorg/xnio/OptionMap;
            invokevirtual org.xnio.XnioWorker.openStreamConnection:(Ljava/net/SocketAddress;Ljava/net/SocketAddress;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture;
            new org.xnio.http.HttpUpgrade$HttpUpgradeState$FailureNotifier
            dup
            aload 0 /* this */
            invokespecial org.xnio.http.HttpUpgrade$HttpUpgradeState$FailureNotifier.<init>:(Lorg/xnio/http/HttpUpgrade$HttpUpgradeState;)V
            aconst_null
            invokeinterface org.xnio.IoFuture.addNotifier:(Lorg/xnio/IoFuture$Notifier;Ljava/lang/Object;)Lorg/xnio/IoFuture;
            pop
         8: .line 251
            goto 18
      StackMap locals:
      StackMap stack:
         9: aload 3 /* scheme */
            ldc "https"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
        10: .line 252
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.ssl:Lorg/xnio/ssl/XnioSsl;
            ifnonnull 12
        11: .line 253
            getstatic org.xnio._private.Messages.msg:Lorg/xnio/_private/Messages;
            invokeinterface org.xnio._private.Messages.missingSslProvider:()Ljava/lang/IllegalArgumentException;
            athrow
        12: .line 255
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindAddress:Ljava/net/InetSocketAddress;
            ifnonnull 15
        13: .line 256
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.ssl:Lorg/xnio/ssl/XnioSsl;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.worker:Lorg/xnio/XnioWorker;
            aload 1 /* address */
            aload 2 /* connectListener */
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindListener:Lorg/xnio/ChannelListener;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.optionMap:Lorg/xnio/OptionMap;
            invokevirtual org.xnio.ssl.XnioSsl.openSslConnection:(Lorg/xnio/XnioWorker;Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture;
            new org.xnio.http.HttpUpgrade$HttpUpgradeState$FailureNotifier
            dup
            aload 0 /* this */
            invokespecial org.xnio.http.HttpUpgrade$HttpUpgradeState$FailureNotifier.<init>:(Lorg/xnio/http/HttpUpgrade$HttpUpgradeState;)V
            aconst_null
            invokeinterface org.xnio.IoFuture.addNotifier:(Lorg/xnio/IoFuture$Notifier;Ljava/lang/Object;)Lorg/xnio/IoFuture;
            pop
        14: .line 257
            goto 18
        15: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.ssl:Lorg/xnio/ssl/XnioSsl;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.worker:Lorg/xnio/XnioWorker;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindAddress:Ljava/net/InetSocketAddress;
            aload 1 /* address */
            aload 2 /* connectListener */
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.bindListener:Lorg/xnio/ChannelListener;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.optionMap:Lorg/xnio/OptionMap;
            invokevirtual org.xnio.ssl.XnioSsl.openSslConnection:(Lorg/xnio/XnioWorker;Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture;
            new org.xnio.http.HttpUpgrade$HttpUpgradeState$FailureNotifier
            dup
            aload 0 /* this */
            invokespecial org.xnio.http.HttpUpgrade$HttpUpgradeState$FailureNotifier.<init>:(Lorg/xnio/http/HttpUpgrade$HttpUpgradeState;)V
            aconst_null
            invokeinterface org.xnio.IoFuture.addNotifier:(Lorg/xnio/IoFuture$Notifier;Ljava/lang/Object;)Lorg/xnio/IoFuture;
            pop
        16: .line 260
            goto 18
        17: .line 261
      StackMap locals:
      StackMap stack:
            getstatic org.xnio._private.Messages.msg:Lorg/xnio/_private/Messages;
            aload 3 /* scheme */
            invokeinterface org.xnio._private.Messages.invalidURLScheme:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
            athrow
        18: .line 263
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
            invokevirtual org.xnio.FutureResult.getIoFuture:()Lorg/xnio/IoFuture;
            areturn
        end local 3 // java.lang.String scheme
        end local 2 // org.xnio.ChannelListener connectListener
        end local 1 // java.net.InetSocketAddress address
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   19     0             this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            1   19     1          address  Ljava/net/InetSocketAddress;
            2   19     2  connectListener  Lorg/xnio/ChannelListener<Lorg/xnio/StreamConnection;>;
            3   19     3           scheme  Ljava/lang/String;
    Signature: ()Lorg/xnio/IoFuture<TT;>;

  private java.lang.String buildHttpRequest();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
         0: .line 268
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* builder */
        start local 1 // java.lang.StringBuilder builder
         1: .line 269
            aload 1 /* builder */
            ldc "GET "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 270
            aload 1 /* builder */
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getPath:()Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 3
            ldc "/"
            goto 4
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState java.lang.StringBuilder
      StackMap stack: java.lang.StringBuilder
         3: aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getPath:()Ljava/lang/String;
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState java.lang.StringBuilder
      StackMap stack: java.lang.StringBuilder java.lang.String
         4: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 271
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getQuery:()Ljava/lang/String;
            ifnull 8
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getQuery:()Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 8
         6: .line 272
            aload 1 /* builder */
            bipush 63
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         7: .line 273
            aload 1 /* builder */
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getQuery:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 275
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            ldc " HTTP/1.1\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 276
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 2 /* seen */
        start local 2 // java.util.Set seen
        10: .line 277
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.headers:Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 20
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState java.lang.StringBuilder java.util.Set top java.util.Iterator
      StackMap stack:
        11: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* headerEntry */
        start local 3 // java.util.Map$Entry headerEntry
        12: .line 278
            aload 3 /* headerEntry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.util.List
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 19
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState java.lang.StringBuilder java.util.Set java.util.Map$Entry java.util.Iterator top java.util.Iterator
      StackMap stack:
        13: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* value */
        start local 5 // java.lang.String value
        14: .line 279
            aload 1 /* builder */
            aload 3 /* headerEntry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        15: .line 280
            aload 1 /* builder */
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        16: .line 281
            aload 1 /* builder */
            aload 5 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        17: .line 282
            aload 1 /* builder */
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        18: .line 283
            aload 2 /* seen */
            aload 3 /* headerEntry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // java.lang.String value
        19: .line 278
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        end local 3 // java.util.Map$Entry headerEntry
        20: .line 277
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState java.lang.StringBuilder java.util.Set top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 11
        21: .line 286
            aload 2 /* seen */
            ldc "host"
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 25
        22: .line 287
            aload 1 /* builder */
            ldc "Host: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        23: .line 288
            aload 1 /* builder */
            aload 0 /* this */
            invokevirtual org.xnio.http.HttpUpgrade$HttpUpgradeState.getHost:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        24: .line 289
            aload 1 /* builder */
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        25: .line 291
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState java.lang.StringBuilder java.util.Set
      StackMap stack:
            aload 2 /* seen */
            ldc "connection"
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 27
        26: .line 292
            aload 1 /* builder */
            ldc "Connection: upgrade\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        27: .line 294
      StackMap locals:
      StackMap stack:
            aload 2 /* seen */
            ldc "upgrade"
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 29
        28: .line 295
            new java.lang.IllegalArgumentException
            dup
            ldc "Upgrade: header was not supplied in header arguments"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        29: .line 297
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        30: .line 298
            aload 1 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.util.Set seen
        end local 1 // java.lang.StringBuilder builder
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   31     0         this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            1   31     1      builder  Ljava/lang/StringBuilder;
           10   31     2         seen  Ljava/util/Set<Ljava/lang/String;>;
           12   20     3  headerEntry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
           14   19     5        value  Ljava/lang/String;

  private java.lang.String getHost();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
         0: .line 302
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            astore 1 /* scheme */
        start local 1 // java.lang.String scheme
         1: .line 303
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getPort:()I
            istore 2 /* port */
        start local 2 // int port
         2: .line 305
            iload 2 /* port */
            iflt 4
            ldc "http"
            aload 1 /* scheme */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
            iload 2 /* port */
            bipush 80
            if_icmpeq 4
      StackMap locals: java.lang.String int
      StackMap stack:
         3: ldc "https"
            aload 1 /* scheme */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
            iload 2 /* port */
            sipush 443
            if_icmpne 5
         4: .line 307
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getHost:()Ljava/lang/String;
            areturn
         5: .line 310
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.uri:Ljava/net/URI;
            invokevirtual java.net.URI.getHost:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 2 /* port */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // int port
        end local 1 // java.lang.String scheme
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            1    6     1  scheme  Ljava/lang/String;
            2    6     2    port  I

  public org.xnio.IoFuture<T> upgradeExistingConnection();
    descriptor: ()Lorg/xnio/IoFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
         0: .line 314
            new org.xnio.http.HttpUpgrade$HttpUpgradeState$ConnectionOpenListener
            dup
            aload 0 /* this */
            invokespecial org.xnio.http.HttpUpgrade$HttpUpgradeState$ConnectionOpenListener.<init>:(Lorg/xnio/http/HttpUpgrade$HttpUpgradeState;)V
            astore 1 /* connectListener */
        start local 1 // org.xnio.ChannelListener connectListener
         1: .line 315
            aload 1 /* connectListener */
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
            invokeinterface org.xnio.ChannelListener.handleEvent:(Ljava/nio/channels/Channel;)V
         2: .line 316
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
            invokevirtual org.xnio.FutureResult.getIoFuture:()Lorg/xnio/IoFuture;
            areturn
        end local 1 // org.xnio.ChannelListener connectListener
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    3     0             this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            1    3     1  connectListener  Lorg/xnio/ChannelListener<Lorg/xnio/StreamConnection;>;
    Signature: ()Lorg/xnio/IoFuture<TT;>;

  private void flushUpgradeChannel();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
         0: .line 346
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.flush:()Z
            ifne 10
         1: .line 348
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
            new org.xnio.http.HttpUpgrade$HttpUpgradeState$1
            dup
            aload 0 /* this */
            invokespecial org.xnio.http.HttpUpgrade$HttpUpgradeState$1.<init>:(Lorg/xnio/http/HttpUpgrade$HttpUpgradeState;)V
         2: .line 354
            new org.xnio.http.HttpUpgrade$HttpUpgradeState$2
            dup
            aload 0 /* this */
            invokespecial org.xnio.http.HttpUpgrade$HttpUpgradeState$2.<init>:(Lorg/xnio/http/HttpUpgrade$HttpUpgradeState;)V
         3: .line 348
            invokestatic org.xnio.ChannelListeners.flushingChannelListener:(Lorg/xnio/ChannelListener;Lorg/xnio/ChannelExceptionHandler;)Lorg/xnio/ChannelListener;
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
         4: .line 361
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.resumeWrites:()V
         5: .line 362
            return
         6: .line 364
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
         7: .line 365
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         8: .line 366
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
            aload 1 /* e */
            invokevirtual org.xnio.FutureResult.setException:(Ljava/io/IOException;)Z
            pop
         9: .line 367
            return
        end local 1 // java.io.IOException e
        10: .line 369
      StackMap locals:
      StackMap stack:
            new org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener
            dup
            aload 0 /* this */
            invokespecial org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener.<init>:(Lorg/xnio/http/HttpUpgrade$HttpUpgradeState;)V
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            invokevirtual org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener.handleEvent:(Lorg/xnio/channels/StreamSourceChannel;)V
        11: .line 370
            return
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            7   10     1     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     5       6  Class java.io.IOException

  private void handleUpgrade(org.xnio.http.HttpUpgradeParser);
    descriptor: (Lorg/xnio/http/HttpUpgradeParser;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
        start local 1 // org.xnio.http.HttpUpgradeParser parser
         0: .line 477
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* simpleHeaders */
        start local 2 // java.util.Map simpleHeaders
         1: .line 478
            aload 1 /* parser */
            invokevirtual org.xnio.http.HttpUpgradeParser.getHeaders:()Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState org.xnio.http.HttpUpgradeParser java.util.Map top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* e */
        start local 3 // java.util.Map$Entry e
         3: .line 479
            aload 2 /* simpleHeaders */
            aload 3 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 3 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.util.List
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // java.util.Map$Entry e
         4: .line 478
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 481
            aload 2 /* simpleHeaders */
            ldc "content-length"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* contentLength */
        start local 3 // java.lang.String contentLength
         6: .line 482
            aload 3 /* contentLength */
            ifnull 10
         7: .line 483
            ldc "0"
            aload 3 /* contentLength */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         8: .line 484
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
            new java.io.IOException
            dup
            ldc "Upgrade responses must have a content length of zero."
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            invokevirtual org.xnio.FutureResult.setException:(Ljava/io/IOException;)Z
            pop
         9: .line 485
            return
        10: .line 488
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState org.xnio.http.HttpUpgradeParser java.util.Map java.lang.String
      StackMap stack:
            aload 2 /* simpleHeaders */
            ldc "transfer-encoding"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* transferCoding */
        start local 4 // java.lang.String transferCoding
        11: .line 489
            aload 4 /* transferCoding */
            ifnull 14
        12: .line 490
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
            new java.io.IOException
            dup
            ldc "Upgrade responses cannot have a transfer coding"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            invokevirtual org.xnio.FutureResult.setException:(Ljava/io/IOException;)Z
            pop
        13: .line 491
            return
        14: .line 494
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.handshakeChecker:Ljava/lang/Object;
            ifnull 24
        15: .line 496
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.handshakeChecker:Ljava/lang/Object;
            instanceof org.xnio.http.ExtendedHandshakeChecker
            ifeq 18
        16: .line 497
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.handshakeChecker:Ljava/lang/Object;
            checkcast org.xnio.http.ExtendedHandshakeChecker
            aload 1 /* parser */
            invokevirtual org.xnio.http.HttpUpgradeParser.getHeaders:()Ljava/util/Map;
            invokeinterface org.xnio.http.ExtendedHandshakeChecker.checkHandshakeExtended:(Ljava/util/Map;)V
        17: .line 498
            goto 24
        18: .line 499
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.handshakeChecker:Ljava/lang/Object;
            checkcast org.xnio.http.HandshakeChecker
            aload 2 /* simpleHeaders */
            invokeinterface org.xnio.http.HandshakeChecker.checkHandshake:(Ljava/util/Map;)V
        19: .line 501
            goto 24
      StackMap locals:
      StackMap stack: java.io.IOException
        20: astore 5 /* e */
        start local 5 // java.io.IOException e
        21: .line 502
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        22: .line 503
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
            aload 5 /* e */
            invokevirtual org.xnio.FutureResult.setException:(Ljava/io/IOException;)Z
            pop
        23: .line 504
            return
        end local 5 // java.io.IOException e
        24: .line 507
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.FutureResult.setResult:(Ljava/lang/Object;)Z
            pop
        25: .line 508
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.connection:Lorg/xnio/StreamConnection;
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.openListener:Lorg/xnio/ChannelListener;
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Z
            pop
        26: .line 509
            return
        end local 4 // java.lang.String transferCoding
        end local 3 // java.lang.String contentLength
        end local 2 // java.util.Map simpleHeaders
        end local 1 // org.xnio.http.HttpUpgradeParser parser
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   27     0            this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            0   27     1          parser  Lorg/xnio/http/HttpUpgradeParser;
            1   27     2   simpleHeaders  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            3    4     3               e  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
            6   27     3   contentLength  Ljava/lang/String;
           11   27     4  transferCoding  Ljava/lang/String;
           21   24     5               e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          15    19      20  Class java.io.IOException
    MethodParameters:
        Name  Flags
      parser  final

  private void handleRedirect(org.xnio.http.HttpUpgradeParser);
    descriptor: (Lorg/xnio/http/HttpUpgradeParser;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
        start local 1 // org.xnio.http.HttpUpgradeParser parser
         0: .line 512
            aload 1 /* parser */
            invokevirtual org.xnio.http.HttpUpgradeParser.getHeaders:()Ljava/util/Map;
            ldc "location"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 2 /* location */
        start local 2 // java.util.List location
         1: .line 513
            aload 0 /* this */
            getfield org.xnio.http.HttpUpgrade$HttpUpgradeState.future:Lorg/xnio/FutureResult;
         2: new org.xnio.http.RedirectException
            dup
            getstatic org.xnio._private.Messages.msg:Lorg/xnio/_private/Messages;
            invokeinterface org.xnio._private.Messages.redirect:()Ljava/lang/String;
            aload 1 /* parser */
            invokevirtual org.xnio.http.HttpUpgradeParser.getResponseCode:()I
            aload 2 /* location */
            ifnonnull 3
            aconst_null
            goto 4
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState org.xnio.http.HttpUpgradeParser java.util.List
      StackMap stack: org.xnio.FutureResult new 2 new 2 java.lang.String int
         3: aload 2 /* location */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
      StackMap locals: org.xnio.http.HttpUpgrade$HttpUpgradeState org.xnio.http.HttpUpgradeParser java.util.List
      StackMap stack: org.xnio.FutureResult new 2 new 2 java.lang.String int java.lang.String
         4: invokespecial org.xnio.http.RedirectException.<init>:(Ljava/lang/String;ILjava/lang/String;)V
            invokevirtual org.xnio.FutureResult.setException:(Ljava/io/IOException;)Z
            pop
         5: .line 514
            return
        end local 2 // java.util.List location
        end local 1 // org.xnio.http.HttpUpgradeParser parser
        end local 0 // org.xnio.http.HttpUpgrade$HttpUpgradeState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/xnio/http/HttpUpgrade$HttpUpgradeState<TT;>;
            0    6     1    parser  Lorg/xnio/http/HttpUpgradeParser;
            1    6     2  location  Ljava/util/List<Ljava/lang/String;>;
    MethodParameters:
        Name  Flags
      parser  final
}
Signature: <T:Lorg/xnio/StreamConnection;>Ljava/lang/Object;
SourceFile: "HttpUpgrade.java"
NestHost: org.xnio.http.HttpUpgrade
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public abstract Setter = org.xnio.ChannelListener$Setter of org.xnio.ChannelListener
  public abstract Notifier = org.xnio.IoFuture$Notifier of org.xnio.IoFuture
  private HttpUpgradeState = org.xnio.http.HttpUpgrade$HttpUpgradeState of org.xnio.http.HttpUpgrade
  org.xnio.http.HttpUpgrade$HttpUpgradeState$1
  org.xnio.http.HttpUpgrade$HttpUpgradeState$2
  private ConnectionOpenListener = org.xnio.http.HttpUpgrade$HttpUpgradeState$ConnectionOpenListener of org.xnio.http.HttpUpgrade$HttpUpgradeState
  private FailureNotifier = org.xnio.http.HttpUpgrade$HttpUpgradeState$FailureNotifier of org.xnio.http.HttpUpgrade$HttpUpgradeState
  private final StringWriteListener = org.xnio.http.HttpUpgrade$HttpUpgradeState$StringWriteListener of org.xnio.http.HttpUpgrade$HttpUpgradeState
  private final UpgradeResultListener = org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener of org.xnio.http.HttpUpgrade$HttpUpgradeState