class sun.net.httpserver.ServerImpl$Dispatcher implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.net.httpserver.ServerImpl$Dispatcher
  super_class: java.lang.Object
{
  final java.util.LinkedList<sun.net.httpserver.HttpConnection> connsToRegister;
    descriptor: Ljava/util/LinkedList;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/LinkedList<Lsun/net/httpserver/HttpConnection;>;

  final sun.net.httpserver.ServerImpl this$0;
    descriptor: Lsun/net/httpserver/ServerImpl;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 285
            ldc Lsun/net/httpserver/ServerImpl;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic sun.net.httpserver.ServerImpl$Dispatcher.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(sun.net.httpserver.ServerImpl);
    descriptor: (Lsun/net/httpserver/ServerImpl;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
         0: .line 285
            aload 0 /* this */
            aload 1
            putfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 323
            aload 0 /* this */
         2: .line 324
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield sun.net.httpserver.ServerImpl$Dispatcher.connsToRegister:Ljava/util/LinkedList;
         3: .line 285
            return
        end local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lsun/net/httpserver/ServerImpl$Dispatcher;
    MethodParameters:
        Name  Flags
      this$0  final

  private void handleEvent(sun.net.httpserver.Event);
    descriptor: (Lsun/net/httpserver/Event;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
        start local 1 // sun.net.httpserver.Event r
         0: .line 288
            aload 1 /* r */
            getfield sun.net.httpserver.Event.exchange:Lsun/net/httpserver/ExchangeImpl;
            astore 2 /* t */
        start local 2 // sun.net.httpserver.ExchangeImpl t
         1: .line 289
            aload 2 /* t */
            invokevirtual sun.net.httpserver.ExchangeImpl.getConnection:()Lsun/net/httpserver/HttpConnection;
            astore 3 /* c */
        start local 3 // sun.net.httpserver.HttpConnection c
         2: .line 291
            aload 1 /* r */
            instanceof sun.net.httpserver.WriteFinishedEvent
            ifeq 25
         3: .line 293
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            invokevirtual sun.net.httpserver.ServerImpl.endExchange:()I
            istore 4 /* exchanges */
        start local 4 // int exchanges
         4: .line 294
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.terminating:Z
            ifeq 6
            iload 4 /* exchanges */
            ifne 6
         5: .line 295
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            iconst_1
            putfield sun.net.httpserver.ServerImpl.finished:Z
         6: .line 297
      StackMap locals: sun.net.httpserver.ExchangeImpl sun.net.httpserver.HttpConnection int
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            aload 3 /* c */
            invokevirtual sun.net.httpserver.ServerImpl.responseCompleted:(Lsun/net/httpserver/HttpConnection;)V
         7: .line 298
            aload 2 /* t */
            invokevirtual sun.net.httpserver.ExchangeImpl.getOriginalInputStream:()Lsun/net/httpserver/LeftOverInputStream;
            astore 5 /* is */
        start local 5 // sun.net.httpserver.LeftOverInputStream is
         8: .line 299
            aload 5 /* is */
            invokevirtual sun.net.httpserver.LeftOverInputStream.isEOF:()Z
            ifne 10
         9: .line 300
            aload 2 /* t */
            iconst_1
            putfield sun.net.httpserver.ExchangeImpl.close:Z
        10: .line 302
      StackMap locals: sun.net.httpserver.LeftOverInputStream
      StackMap stack:
            aload 2 /* t */
            getfield sun.net.httpserver.ExchangeImpl.close:Z
            ifne 11
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.idleConnections:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            getstatic sun.net.httpserver.ServerImpl.MAX_IDLE_CONNECTIONS:I
            if_icmplt 14
        11: .line 303
      StackMap locals:
      StackMap stack:
            aload 3 /* c */
            invokevirtual sun.net.httpserver.HttpConnection.close:()V
        12: .line 304
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.allConnections:Ljava/util/Set;
            aload 3 /* c */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        13: .line 305
            goto 25
        14: .line 306
      StackMap locals:
      StackMap stack:
            aload 5 /* is */
            invokevirtual sun.net.httpserver.LeftOverInputStream.isDataBuffered:()Z
            ifeq 18
        15: .line 308
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            aload 3 /* c */
            invokevirtual sun.net.httpserver.ServerImpl.requestStarted:(Lsun/net/httpserver/HttpConnection;)V
        16: .line 309
            aload 0 /* this */
            aload 3 /* c */
            invokevirtual sun.net.httpserver.HttpConnection.getChannel:()Ljava/nio/channels/SocketChannel;
            aload 3 /* c */
            invokevirtual sun.net.httpserver.ServerImpl$Dispatcher.handle:(Ljava/nio/channels/SocketChannel;Lsun/net/httpserver/HttpConnection;)V
        17: .line 310
            goto 25
        18: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.connsToRegister:Ljava/util/LinkedList;
            aload 3 /* c */
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // sun.net.httpserver.LeftOverInputStream is
        end local 4 // int exchanges
        19: .line 315
            goto 25
      StackMap locals: sun.net.httpserver.ServerImpl$Dispatcher sun.net.httpserver.Event sun.net.httpserver.ExchangeImpl sun.net.httpserver.HttpConnection
      StackMap stack: java.io.IOException
        20: astore 4 /* e */
        start local 4 // java.io.IOException e
        21: .line 316
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.logger:Ljava/lang/System$Logger;
        22: .line 317
            getstatic java.lang.System$Logger$Level.TRACE:Ljava/lang/System$Logger$Level;
            ldc "Dispatcher (1)"
            aload 4 /* e */
        23: .line 316
            invokeinterface java.lang.System$Logger.log:(Ljava/lang/System$Logger$Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        24: .line 319
            aload 3 /* c */
            invokevirtual sun.net.httpserver.HttpConnection.close:()V
        end local 4 // java.io.IOException e
        25: .line 321
      StackMap locals:
      StackMap stack:
            return
        end local 3 // sun.net.httpserver.HttpConnection c
        end local 2 // sun.net.httpserver.ExchangeImpl t
        end local 1 // sun.net.httpserver.Event r
        end local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   26     0       this  Lsun/net/httpserver/ServerImpl$Dispatcher;
            0   26     1          r  Lsun/net/httpserver/Event;
            1   26     2          t  Lsun/net/httpserver/ExchangeImpl;
            2   26     3          c  Lsun/net/httpserver/HttpConnection;
            4   19     4  exchanges  I
            8   19     5         is  Lsun/net/httpserver/LeftOverInputStream;
           21   25     4          e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2    19      20  Class java.io.IOException
    MethodParameters:
      Name  Flags
      r     

  void reRegister(sun.net.httpserver.HttpConnection);
    descriptor: (Lsun/net/httpserver/HttpConnection;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
        start local 1 // sun.net.httpserver.HttpConnection c
         0: .line 329
            aload 1 /* c */
            invokevirtual sun.net.httpserver.HttpConnection.getChannel:()Ljava/nio/channels/SocketChannel;
            astore 2 /* chan */
        start local 2 // java.nio.channels.SocketChannel chan
         1: .line 330
            aload 2 /* chan */
            iconst_0
            invokevirtual java.nio.channels.SocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         2: .line 331
            aload 2 /* chan */
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.selector:Ljava/nio/channels/Selector;
            iconst_1
            invokevirtual java.nio.channels.SocketChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
            astore 3 /* key */
        start local 3 // java.nio.channels.SelectionKey key
         3: .line 332
            aload 3 /* key */
            aload 1 /* c */
            invokevirtual java.nio.channels.SelectionKey.attach:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 333
            aload 1 /* c */
            aload 3 /* key */
            putfield sun.net.httpserver.HttpConnection.selectionKey:Ljava/nio/channels/SelectionKey;
         5: .line 334
            aload 1 /* c */
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            invokevirtual sun.net.httpserver.ServerImpl.getTime:()J
            getstatic sun.net.httpserver.ServerImpl.IDLE_INTERVAL:J
            ladd
            putfield sun.net.httpserver.HttpConnection.time:J
         6: .line 335
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.idleConnections:Ljava/util/Set;
            aload 1 /* c */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.nio.channels.SelectionKey key
        end local 2 // java.nio.channels.SocketChannel chan
         7: .line 336
            goto 12
      StackMap locals:
      StackMap stack: java.io.IOException
         8: astore 2 /* e */
        start local 2 // java.io.IOException e
         9: .line 337
            aload 2 /* e */
            invokestatic sun.net.httpserver.ServerImpl.dprint:(Ljava/lang/Exception;)V
        10: .line 338
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.logger:Ljava/lang/System$Logger;
            getstatic java.lang.System$Logger$Level.TRACE:Ljava/lang/System$Logger$Level;
            ldc "Dispatcher(8)"
            aload 2 /* e */
            invokeinterface java.lang.System$Logger.log:(Ljava/lang/System$Logger$Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        11: .line 339
            aload 1 /* c */
            invokevirtual sun.net.httpserver.HttpConnection.close:()V
        end local 2 // java.io.IOException e
        12: .line 341
      StackMap locals:
      StackMap stack:
            return
        end local 1 // sun.net.httpserver.HttpConnection c
        end local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lsun/net/httpserver/ServerImpl$Dispatcher;
            0   13     1     c  Lsun/net/httpserver/HttpConnection;
            1    7     2  chan  Ljava/nio/channels/SocketChannel;
            3    7     3   key  Ljava/nio/channels/SelectionKey;
            9   12     2     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     7       8  Class java.io.IOException
    MethodParameters:
      Name  Flags
      c     

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=1
        start local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
         0: .line 344
            goto 65
         1: .line 346
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 1 /* list */
        start local 1 // java.util.List list
         2: .line 347
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.lolock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 348
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.events:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            ifle 6
         4: .line 349
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.events:Ljava/util/List;
            astore 1 /* list */
         5: .line 350
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield sun.net.httpserver.ServerImpl.events:Ljava/util/List;
         6: .line 347
      StackMap locals: java.util.List java.lang.Object
      StackMap stack:
            aload 2
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 2
            monitorexit
         9: athrow
        10: .line 354
      StackMap locals:
      StackMap stack:
            aload 1 /* list */
            ifnull 15
        11: .line 355
            aload 1 /* list */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 14
      StackMap locals: sun.net.httpserver.ServerImpl$Dispatcher java.util.List top java.util.Iterator
      StackMap stack:
        12: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.net.httpserver.Event
            astore 2 /* r */
        start local 2 // sun.net.httpserver.Event r
        13: .line 356
            aload 0 /* this */
            aload 2 /* r */
            invokevirtual sun.net.httpserver.ServerImpl$Dispatcher.handleEvent:(Lsun/net/httpserver/Event;)V
        end local 2 // sun.net.httpserver.Event r
        14: .line 355
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        15: .line 360
      StackMap locals: sun.net.httpserver.ServerImpl$Dispatcher java.util.List
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.connsToRegister:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            astore 3
            goto 18
      StackMap locals: sun.net.httpserver.ServerImpl$Dispatcher java.util.List top java.util.Iterator
      StackMap stack:
        16: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.net.httpserver.HttpConnection
            astore 2 /* c */
        start local 2 // sun.net.httpserver.HttpConnection c
        17: .line 361
            aload 0 /* this */
            aload 2 /* c */
            invokevirtual sun.net.httpserver.ServerImpl$Dispatcher.reRegister:(Lsun/net/httpserver/HttpConnection;)V
        end local 2 // sun.net.httpserver.HttpConnection c
        18: .line 360
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 16
        19: .line 363
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.connsToRegister:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.clear:()V
        20: .line 365
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.selector:Ljava/nio/channels/Selector;
            ldc 1000
            invokevirtual java.nio.channels.Selector.select:(J)I
            pop
        21: .line 368
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.selectedKeys:()Ljava/util/Set;
            astore 2 /* selected */
        start local 2 // java.util.Set selected
        22: .line 369
            aload 2 /* selected */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3 /* iter */
        start local 3 // java.util.Iterator iter
        23: .line 370
            goto 57
        24: .line 371
      StackMap locals: sun.net.httpserver.ServerImpl$Dispatcher java.util.List java.util.Set java.util.Iterator
      StackMap stack:
            aload 3 /* iter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.channels.SelectionKey
            astore 4 /* key */
        start local 4 // java.nio.channels.SelectionKey key
        25: .line 372
            aload 3 /* iter */
            invokeinterface java.util.Iterator.remove:()V
        26: .line 373
            aload 4 /* key */
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.listenerKey:Ljava/nio/channels/SelectionKey;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 43
        27: .line 374
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.terminating:Z
            ifeq 29
        28: .line 375
            goto 57
        29: .line 377
      StackMap locals: java.nio.channels.SelectionKey
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.schan:Ljava/nio/channels/ServerSocketChannel;
            invokevirtual java.nio.channels.ServerSocketChannel.accept:()Ljava/nio/channels/SocketChannel;
            astore 5 /* chan */
        start local 5 // java.nio.channels.SocketChannel chan
        30: .line 380
            aload 5 /* chan */
            ifnull 57
        31: .line 382
            invokestatic sun.net.httpserver.ServerConfig.noDelay:()Z
            ifeq 33
        32: .line 383
            aload 5 /* chan */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            iconst_1
            invokevirtual java.net.Socket.setTcpNoDelay:(Z)V
        33: .line 385
      StackMap locals: java.nio.channels.SocketChannel
      StackMap stack:
            aload 5 /* chan */
            iconst_0
            invokevirtual java.nio.channels.SocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
        34: .line 387
            aload 5 /* chan */
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.selector:Ljava/nio/channels/Selector;
            iconst_1
            invokevirtual java.nio.channels.SocketChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
        35: .line 386
            astore 6 /* newkey */
        start local 6 // java.nio.channels.SelectionKey newkey
        36: .line 388
            new sun.net.httpserver.HttpConnection
            dup
            invokespecial sun.net.httpserver.HttpConnection.<init>:()V
            astore 7 /* c */
        start local 7 // sun.net.httpserver.HttpConnection c
        37: .line 389
            aload 7 /* c */
            aload 6 /* newkey */
            putfield sun.net.httpserver.HttpConnection.selectionKey:Ljava/nio/channels/SelectionKey;
        38: .line 390
            aload 7 /* c */
            aload 5 /* chan */
            invokevirtual sun.net.httpserver.HttpConnection.setChannel:(Ljava/nio/channels/SocketChannel;)V
        39: .line 391
            aload 6 /* newkey */
            aload 7 /* c */
            invokevirtual java.nio.channels.SelectionKey.attach:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        40: .line 392
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            aload 7 /* c */
            invokevirtual sun.net.httpserver.ServerImpl.requestStarted:(Lsun/net/httpserver/HttpConnection;)V
        41: .line 393
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.allConnections:Ljava/util/Set;
            aload 7 /* c */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // sun.net.httpserver.HttpConnection c
        end local 6 // java.nio.channels.SelectionKey newkey
        end local 5 // java.nio.channels.SocketChannel chan
        42: .line 395
            goto 57
        43: .line 397
      StackMap locals:
      StackMap stack:
            aload 4 /* key */
            invokevirtual java.nio.channels.SelectionKey.isReadable:()Z
            ifeq 52
        44: .line 399
            aload 4 /* key */
            invokevirtual java.nio.channels.SelectionKey.channel:()Ljava/nio/channels/SelectableChannel;
            checkcast java.nio.channels.SocketChannel
            astore 5 /* chan */
        start local 5 // java.nio.channels.SocketChannel chan
        45: .line 400
            aload 4 /* key */
            invokevirtual java.nio.channels.SelectionKey.attachment:()Ljava/lang/Object;
            checkcast sun.net.httpserver.HttpConnection
            astore 6 /* conn */
        start local 6 // sun.net.httpserver.HttpConnection conn
        46: .line 402
            aload 4 /* key */
            invokevirtual java.nio.channels.SelectionKey.cancel:()V
        47: .line 403
            aload 5 /* chan */
            iconst_1
            invokevirtual java.nio.channels.SocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
        48: .line 404
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.idleConnections:Ljava/util/Set;
            aload 6 /* conn */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            ifeq 50
        49: .line 407
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            aload 6 /* conn */
            invokevirtual sun.net.httpserver.ServerImpl.requestStarted:(Lsun/net/httpserver/HttpConnection;)V
        50: .line 409
      StackMap locals: java.nio.channels.SocketChannel sun.net.httpserver.HttpConnection
      StackMap stack:
            aload 0 /* this */
            aload 5 /* chan */
            aload 6 /* conn */
            invokevirtual sun.net.httpserver.ServerImpl$Dispatcher.handle:(Ljava/nio/channels/SocketChannel;Lsun/net/httpserver/HttpConnection;)V
        end local 6 // sun.net.httpserver.HttpConnection conn
        end local 5 // java.nio.channels.SocketChannel chan
        51: .line 410
            goto 57
        52: .line 411
      StackMap locals:
      StackMap stack:
            getstatic sun.net.httpserver.ServerImpl$Dispatcher.$assertionsDisabled:Z
            ifne 57
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        53: .line 413
      StackMap locals:
      StackMap stack: java.nio.channels.CancelledKeyException
            pop
        54: .line 414
            aload 0 /* this */
            aload 4 /* key */
            aconst_null
            invokevirtual sun.net.httpserver.ServerImpl$Dispatcher.handleException:(Ljava/nio/channels/SelectionKey;Ljava/lang/Exception;)V
            goto 57
        55: .line 415
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 5 /* e */
        start local 5 // java.io.IOException e
        56: .line 416
            aload 0 /* this */
            aload 4 /* key */
            aload 5 /* e */
            invokevirtual sun.net.httpserver.ServerImpl$Dispatcher.handleException:(Ljava/nio/channels/SelectionKey;Ljava/lang/Exception;)V
        end local 5 // java.io.IOException e
        end local 4 // java.nio.channels.SelectionKey key
        57: .line 370
      StackMap locals:
      StackMap stack:
            aload 3 /* iter */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 24
        58: .line 421
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.selectNow:()I
            pop
        end local 3 // java.util.Iterator iter
        end local 2 // java.util.Set selected
        end local 1 // java.util.List list
        59: .line 422
            goto 65
      StackMap locals: sun.net.httpserver.ServerImpl$Dispatcher
      StackMap stack: java.io.IOException
        60: astore 1 /* e */
        start local 1 // java.io.IOException e
        61: .line 423
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.logger:Ljava/lang/System$Logger;
            getstatic java.lang.System$Logger$Level.TRACE:Ljava/lang/System$Logger$Level;
            ldc "Dispatcher (4)"
            aload 1 /* e */
            invokeinterface java.lang.System$Logger.log:(Ljava/lang/System$Logger$Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 1 // java.io.IOException e
        62: goto 65
        63: .line 424
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
        64: .line 425
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.logger:Ljava/lang/System$Logger;
            getstatic java.lang.System$Logger$Level.TRACE:Ljava/lang/System$Logger$Level;
            ldc "Dispatcher (7)"
            aload 1 /* e */
            invokeinterface java.lang.System$Logger.log:(Ljava/lang/System$Logger$Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 1 // java.lang.Exception e
        65: .line 344
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.finished:Z
            ifeq 1
        66: .line 428
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.close:()V
        67: goto 69
      StackMap locals:
      StackMap stack: java.lang.Exception
        68: pop
        69: .line 429
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   70     0      this  Lsun/net/httpserver/ServerImpl$Dispatcher;
            2   59     1      list  Ljava/util/List<Lsun/net/httpserver/Event;>;
           13   14     2         r  Lsun/net/httpserver/Event;
           17   18     2         c  Lsun/net/httpserver/HttpConnection;
           22   59     2  selected  Ljava/util/Set<Ljava/nio/channels/SelectionKey;>;
           23   59     3      iter  Ljava/util/Iterator<Ljava/nio/channels/SelectionKey;>;
           25   57     4       key  Ljava/nio/channels/SelectionKey;
           30   42     5      chan  Ljava/nio/channels/SocketChannel;
           36   42     6    newkey  Ljava/nio/channels/SelectionKey;
           37   42     7         c  Lsun/net/httpserver/HttpConnection;
           45   51     5      chan  Ljava/nio/channels/SocketChannel;
           46   51     6      conn  Lsun/net/httpserver/HttpConnection;
           56   57     5         e  Ljava/io/IOException;
           61   62     1         e  Ljava/io/IOException;
           64   65     1         e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           3     7       8  any
           8     9       8  any
          43    53      53  Class java.nio.channels.CancelledKeyException
          43    53      55  Class java.io.IOException
           1    59      60  Class java.io.IOException
           1    59      63  Class java.lang.Exception
          66    67      68  Class java.lang.Exception

  private void handleException(java.nio.channels.SelectionKey, java.lang.Exception);
    descriptor: (Ljava/nio/channels/SelectionKey;Ljava/lang/Exception;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
        start local 1 // java.nio.channels.SelectionKey key
        start local 2 // java.lang.Exception e
         0: .line 432
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.attachment:()Ljava/lang/Object;
            checkcast sun.net.httpserver.HttpConnection
            astore 3 /* conn */
        start local 3 // sun.net.httpserver.HttpConnection conn
         1: .line 433
            aload 2 /* e */
            ifnull 3
         2: .line 434
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.logger:Ljava/lang/System$Logger;
            getstatic java.lang.System$Logger$Level.TRACE:Ljava/lang/System$Logger$Level;
            ldc "Dispatcher (2)"
            aload 2 /* e */
            invokeinterface java.lang.System$Logger.log:(Ljava/lang/System$Logger$Level;Ljava/lang/String;Ljava/lang/Throwable;)V
         3: .line 436
      StackMap locals: sun.net.httpserver.HttpConnection
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            aload 3 /* conn */
            invokevirtual sun.net.httpserver.ServerImpl.closeConnection:(Lsun/net/httpserver/HttpConnection;)V
         4: .line 437
            return
        end local 3 // sun.net.httpserver.HttpConnection conn
        end local 2 // java.lang.Exception e
        end local 1 // java.nio.channels.SelectionKey key
        end local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/net/httpserver/ServerImpl$Dispatcher;
            0    5     1   key  Ljava/nio/channels/SelectionKey;
            0    5     2     e  Ljava/lang/Exception;
            1    5     3  conn  Lsun/net/httpserver/HttpConnection;
    MethodParameters:
      Name  Flags
      key   
      e     

  public void handle(java.nio.channels.SocketChannel, sun.net.httpserver.HttpConnection);
    descriptor: (Ljava/nio/channels/SocketChannel;Lsun/net/httpserver/HttpConnection;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
        start local 1 // java.nio.channels.SocketChannel chan
        start local 2 // sun.net.httpserver.HttpConnection conn
         0: .line 443
            new sun.net.httpserver.ServerImpl$Exchange
            dup
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            aload 1 /* chan */
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.protocol:Ljava/lang/String;
            aload 2 /* conn */
            invokespecial sun.net.httpserver.ServerImpl$Exchange.<init>:(Lsun/net/httpserver/ServerImpl;Ljava/nio/channels/SocketChannel;Ljava/lang/String;Lsun/net/httpserver/HttpConnection;)V
            astore 3 /* t */
        start local 3 // sun.net.httpserver.ServerImpl$Exchange t
         1: .line 444
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.executor:Ljava/util/concurrent/Executor;
            aload 3 /* t */
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
        end local 3 // sun.net.httpserver.ServerImpl$Exchange t
         2: .line 445
            goto 10
      StackMap locals:
      StackMap stack: sun.net.httpserver.HttpError
         3: astore 3 /* e1 */
        start local 3 // sun.net.httpserver.HttpError e1
         4: .line 446
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.logger:Ljava/lang/System$Logger;
            getstatic java.lang.System$Logger$Level.TRACE:Ljava/lang/System$Logger$Level;
            ldc "Dispatcher (4)"
            aload 3 /* e1 */
            invokeinterface java.lang.System$Logger.log:(Ljava/lang/System$Logger$Level;Ljava/lang/String;Ljava/lang/Throwable;)V
         5: .line 447
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            aload 2 /* conn */
            invokevirtual sun.net.httpserver.ServerImpl.closeConnection:(Lsun/net/httpserver/HttpConnection;)V
        end local 3 // sun.net.httpserver.HttpError e1
         6: goto 10
         7: .line 448
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 3 /* e */
        start local 3 // java.io.IOException e
         8: .line 449
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            getfield sun.net.httpserver.ServerImpl.logger:Ljava/lang/System$Logger;
            getstatic java.lang.System$Logger$Level.TRACE:Ljava/lang/System$Logger$Level;
            ldc "Dispatcher (5)"
            aload 3 /* e */
            invokeinterface java.lang.System$Logger.log:(Ljava/lang/System$Logger$Level;Ljava/lang/String;Ljava/lang/Throwable;)V
         9: .line 450
            aload 0 /* this */
            getfield sun.net.httpserver.ServerImpl$Dispatcher.this$0:Lsun/net/httpserver/ServerImpl;
            aload 2 /* conn */
            invokevirtual sun.net.httpserver.ServerImpl.closeConnection:(Lsun/net/httpserver/HttpConnection;)V
        end local 3 // java.io.IOException e
        10: .line 452
      StackMap locals:
      StackMap stack:
            return
        end local 2 // sun.net.httpserver.HttpConnection conn
        end local 1 // java.nio.channels.SocketChannel chan
        end local 0 // sun.net.httpserver.ServerImpl$Dispatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lsun/net/httpserver/ServerImpl$Dispatcher;
            0   11     1  chan  Ljava/nio/channels/SocketChannel;
            0   11     2  conn  Lsun/net/httpserver/HttpConnection;
            1    2     3     t  Lsun/net/httpserver/ServerImpl$Exchange;
            4    6     3    e1  Lsun/net/httpserver/HttpError;
            8   10     3     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     2       3  Class sun.net.httpserver.HttpError
           0     2       7  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      chan  
      conn  
}
SourceFile: "ServerImpl.java"
NestHost: sun.net.httpserver.ServerImpl
InnerClasses:
  public abstract Logger = java.lang.System$Logger of java.lang.System
  public final Level = java.lang.System$Logger$Level of java.lang.System$Logger
  Dispatcher = sun.net.httpserver.ServerImpl$Dispatcher of sun.net.httpserver.ServerImpl
  Exchange = sun.net.httpserver.ServerImpl$Exchange of sun.net.httpserver.ServerImpl