public class com.sun.tools.jdi.SocketTransportService extends com.sun.jdi.connect.spi.TransportService
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.tools.jdi.SocketTransportService
  super_class: com.sun.jdi.connect.spi.TransportService
{
  private java.util.ResourceBundle messages;
    descriptor: Ljava/util/ResourceBundle;
    flags: (0x0002) ACC_PRIVATE

  void handshake(java.net.Socket, long);
    descriptor: (Ljava/net/Socket;J)V
    flags: (0x0000) 
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // com.sun.tools.jdi.SocketTransportService this
        start local 1 // java.net.Socket s
        start local 2 // long timeout
         0: .line 121
            aload 1 /* s */
            lload 2 /* timeout */
            l2i
            invokevirtual java.net.Socket.setSoTimeout:(I)V
         1: .line 123
            ldc "JDWP-Handshake"
            ldc "UTF-8"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            astore 4 /* hello */
        start local 4 // byte[] hello
         2: .line 124
            aload 1 /* s */
            invokevirtual java.net.Socket.getOutputStream:()Ljava/io/OutputStream;
            aload 4 /* hello */
            invokevirtual java.io.OutputStream.write:([B)V
         3: .line 126
            aload 4 /* hello */
            arraylength
            newarray 8
            astore 5 /* b */
        start local 5 // byte[] b
         4: .line 127
            iconst_0
            istore 6 /* received */
        start local 6 // int received
         5: .line 128
            goto 14
         6: .line 131
      StackMap locals: byte[] byte[] int
      StackMap stack:
            aload 1 /* s */
            invokevirtual java.net.Socket.getInputStream:()Ljava/io/InputStream;
            aload 5 /* b */
            iload 6 /* received */
            aload 4 /* hello */
            arraylength
            iload 6 /* received */
            isub
            invokevirtual java.io.InputStream.read:([BII)I
            istore 7 /* n */
        start local 7 // int n
         7: .line 132
            goto 10
        end local 7 // int n
      StackMap locals:
      StackMap stack: java.net.SocketTimeoutException
         8: pop
         9: .line 133
            new java.io.IOException
            dup
            ldc "handshake timeout"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        start local 7 // int n
        10: .line 135
      StackMap locals: int
      StackMap stack:
            iload 7 /* n */
            ifge 13
        11: .line 136
            aload 1 /* s */
            invokevirtual java.net.Socket.close:()V
        12: .line 137
            new java.io.IOException
            dup
            ldc "handshake failed - connection prematurally closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 139
      StackMap locals:
      StackMap stack:
            iload 6 /* received */
            iload 7 /* n */
            iadd
            istore 6 /* received */
        end local 7 // int n
        14: .line 128
      StackMap locals:
      StackMap stack:
            iload 6 /* received */
            aload 4 /* hello */
            arraylength
            if_icmplt 6
        15: .line 141
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        16: goto 20
        17: .line 142
      StackMap locals: int
      StackMap stack:
            aload 5 /* b */
            iload 7 /* i */
            baload
            aload 4 /* hello */
            iload 7 /* i */
            baload
            if_icmpeq 19
        18: .line 143
            new java.io.IOException
            dup
            ldc "handshake failed - unrecognized message from target VM"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 141
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 7 /* i */
            aload 4 /* hello */
            arraylength
            if_icmplt 17
        end local 7 // int i
        21: .line 148
            aload 1 /* s */
            iconst_0
            invokevirtual java.net.Socket.setSoTimeout:(I)V
        22: .line 149
            return
        end local 6 // int received
        end local 5 // byte[] b
        end local 4 // byte[] hello
        end local 2 // long timeout
        end local 1 // java.net.Socket s
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   23     0      this  Lcom/sun/tools/jdi/SocketTransportService;
            0   23     1         s  Ljava/net/Socket;
            0   23     2   timeout  J
            2   23     4     hello  [B
            4   23     5         b  [B
            5   23     6  received  I
            7    8     7         n  I
           10   14     7         n  I
           16   21     7         i  I
      Exception table:
        from    to  target  type
           6     7       8  Class java.net.SocketTimeoutException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      s        
      timeout  

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.tools.jdi.SocketTransportService this
         0: .line 154
            aload 0 /* this */
            invokespecial com.sun.jdi.connect.spi.TransportService.<init>:()V
         1: .line 48
            aload 0 /* this */
            aconst_null
            putfield com.sun.tools.jdi.SocketTransportService.messages:Ljava/util/ResourceBundle;
         2: .line 155
            return
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/tools/jdi/SocketTransportService;

  public java.lang.String name();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.jdi.SocketTransportService this
         0: .line 161
            ldc "Socket"
            areturn
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/jdi/SocketTransportService;

  public java.lang.String description();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.tools.jdi.SocketTransportService this
         0: .line 168
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 169
            aload 0 /* this */
            getfield com.sun.tools.jdi.SocketTransportService.messages:Ljava/util/ResourceBundle;
            ifnonnull 3
         2: .line 170
            aload 0 /* this */
            ldc "com.sun.tools.jdi.resources.jdi"
            invokestatic java.util.ResourceBundle.getBundle:(Ljava/lang/String;)Ljava/util/ResourceBundle;
            putfield com.sun.tools.jdi.SocketTransportService.messages:Ljava/util/ResourceBundle;
         3: .line 168
      StackMap locals: com.sun.tools.jdi.SocketTransportService
      StackMap stack:
            aload 1
            monitorexit
         4: goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: aload 1
            monitorexit
         6: athrow
         7: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.jdi.SocketTransportService.messages:Ljava/util/ResourceBundle;
            ldc "socket_transportservice.description"
            invokevirtual java.util.ResourceBundle.getString:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/sun/tools/jdi/SocketTransportService;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any

  public com.sun.jdi.connect.spi.TransportService$Capabilities capabilities();
    descriptor: ()Lcom/sun/jdi/connect/spi/TransportService$Capabilities;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.tools.jdi.SocketTransportService this
         0: .line 180
            new com.sun.tools.jdi.SocketTransportService$1
            dup
            aload 0 /* this */
            invokespecial com.sun.tools.jdi.SocketTransportService$1.<init>:(Lcom/sun/tools/jdi/SocketTransportService;)V
            areturn
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/jdi/SocketTransportService;

  public com.sun.jdi.connect.spi.Connection attach(java.lang.String, long, long);
    descriptor: (Ljava/lang/String;JJ)Lcom/sun/jdi/connect/spi/Connection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=4
        start local 0 // com.sun.tools.jdi.SocketTransportService this
        start local 1 // java.lang.String address
        start local 2 // long attachTimeout
        start local 4 // long handshakeTimeout
         0: .line 244
            aload 1 /* address */
            ifnonnull 2
         1: .line 245
            new java.lang.NullPointerException
            dup
            ldc "address is null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 247
      StackMap locals:
      StackMap stack:
            lload 2 /* attachTimeout */
            lconst_0
            lcmp
            iflt 3
            lload 4 /* handshakeTimeout */
            lconst_0
            lcmp
            ifge 4
         3: .line 248
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "timeout is negative"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 251
      StackMap locals:
      StackMap stack:
            aload 1 /* address */
            invokestatic com.sun.tools.jdi.SocketTransportService$HostPort.parse:(Ljava/lang/String;)Lcom/sun/tools/jdi/SocketTransportService$HostPort;
            astore 6 /* hostPort */
        start local 6 // com.sun.tools.jdi.SocketTransportService$HostPort hostPort
         5: .line 256
            new java.net.InetSocketAddress
            dup
            aload 6 /* hostPort */
            getfield com.sun.tools.jdi.SocketTransportService$HostPort.host:Ljava/lang/String;
            ifnonnull 7
         6: .line 257
            invokestatic java.net.InetAddress.getLoopbackAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            goto 8
         7: .line 258
      StackMap locals: com.sun.tools.jdi.SocketTransportService java.lang.String long long com.sun.tools.jdi.SocketTransportService$HostPort
      StackMap stack: new 5 new 5
            aload 6 /* hostPort */
            getfield com.sun.tools.jdi.SocketTransportService$HostPort.host:Ljava/lang/String;
      StackMap locals: com.sun.tools.jdi.SocketTransportService java.lang.String long long com.sun.tools.jdi.SocketTransportService$HostPort
      StackMap stack: new 5 new 5 java.lang.String
         8: aload 6 /* hostPort */
            getfield com.sun.tools.jdi.SocketTransportService$HostPort.port:I
         9: .line 256
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
            astore 7 /* sa */
        start local 7 // java.net.InetSocketAddress sa
        10: .line 259
            new java.net.Socket
            dup
            invokespecial java.net.Socket.<init>:()V
            astore 8 /* s */
        start local 8 // java.net.Socket s
        11: .line 261
            aload 8 /* s */
            aload 7 /* sa */
            lload 2 /* attachTimeout */
            l2i
            invokevirtual java.net.Socket.connect:(Ljava/net/SocketAddress;I)V
        12: .line 262
            goto 18
      StackMap locals: com.sun.tools.jdi.SocketTransportService java.lang.String long long com.sun.tools.jdi.SocketTransportService$HostPort java.net.InetSocketAddress java.net.Socket
      StackMap stack: java.net.SocketTimeoutException
        13: pop
        14: .line 264
            aload 8 /* s */
            invokevirtual java.net.Socket.close:()V
        15: .line 265
            goto 17
      StackMap locals:
      StackMap stack: java.io.IOException
        16: pop
        17: .line 266
      StackMap locals:
      StackMap stack:
            new com.sun.jdi.connect.TransportTimeoutException
            dup
            ldc "timed out trying to establish connection"
            invokespecial com.sun.jdi.connect.TransportTimeoutException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 271
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* s */
            lload 4 /* handshakeTimeout */
            invokevirtual com.sun.tools.jdi.SocketTransportService.handshake:(Ljava/net/Socket;J)V
        19: .line 272
            goto 25
      StackMap locals:
      StackMap stack: java.io.IOException
        20: astore 9 /* exc */
        start local 9 // java.io.IOException exc
        21: .line 274
            aload 8 /* s */
            invokevirtual java.net.Socket.close:()V
        22: .line 275
            goto 24
      StackMap locals: com.sun.tools.jdi.SocketTransportService java.lang.String long long com.sun.tools.jdi.SocketTransportService$HostPort java.net.InetSocketAddress java.net.Socket java.io.IOException
      StackMap stack: java.io.IOException
        23: pop
        24: .line 276
      StackMap locals:
      StackMap stack:
            aload 9 /* exc */
            athrow
        end local 9 // java.io.IOException exc
        25: .line 279
      StackMap locals:
      StackMap stack:
            new com.sun.tools.jdi.SocketConnection
            dup
            aload 8 /* s */
            invokespecial com.sun.tools.jdi.SocketConnection.<init>:(Ljava/net/Socket;)V
            areturn
        end local 8 // java.net.Socket s
        end local 7 // java.net.InetSocketAddress sa
        end local 6 // com.sun.tools.jdi.SocketTransportService$HostPort hostPort
        end local 4 // long handshakeTimeout
        end local 2 // long attachTimeout
        end local 1 // java.lang.String address
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   26     0              this  Lcom/sun/tools/jdi/SocketTransportService;
            0   26     1           address  Ljava/lang/String;
            0   26     2     attachTimeout  J
            0   26     4  handshakeTimeout  J
            5   26     6          hostPort  Lcom/sun/tools/jdi/SocketTransportService$HostPort;
           10   26     7                sa  Ljava/net/InetSocketAddress;
           11   26     8                 s  Ljava/net/Socket;
           21   25     9               exc  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          11    12      13  Class java.net.SocketTimeoutException
          14    15      16  Class java.io.IOException
          18    19      20  Class java.io.IOException
          21    22      23  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                  Name  Flags
      address           
      attachTimeout     
      handshakeTimeout  

  com.sun.jdi.connect.spi.TransportService$ListenKey startListening(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Lcom/sun/jdi/connect/spi/TransportService$ListenKey;
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.sun.tools.jdi.SocketTransportService this
        start local 1 // java.lang.String localaddress
        start local 2 // int port
         0: .line 288
            aload 1 /* localaddress */
            ifnonnull 3
         1: .line 289
            new java.net.InetSocketAddress
            dup
            iload 2 /* port */
            invokespecial java.net.InetSocketAddress.<init>:(I)V
            astore 3 /* sa */
        start local 3 // java.net.InetSocketAddress sa
         2: .line 290
            goto 4
        end local 3 // java.net.InetSocketAddress sa
         3: .line 291
      StackMap locals:
      StackMap stack:
            new java.net.InetSocketAddress
            dup
            aload 1 /* localaddress */
            iload 2 /* port */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
            astore 3 /* sa */
        start local 3 // java.net.InetSocketAddress sa
         4: .line 293
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            new java.net.ServerSocket
            dup
            invokespecial java.net.ServerSocket.<init>:()V
            astore 4 /* ss */
        start local 4 // java.net.ServerSocket ss
         5: .line 294
            iload 2 /* port */
            ifne 7
         6: .line 298
            aload 4 /* ss */
            iconst_0
            invokevirtual java.net.ServerSocket.setReuseAddress:(Z)V
         7: .line 300
      StackMap locals: java.net.ServerSocket
      StackMap stack:
            aload 4 /* ss */
            aload 3 /* sa */
            invokevirtual java.net.ServerSocket.bind:(Ljava/net/SocketAddress;)V
         8: .line 301
            new com.sun.tools.jdi.SocketTransportService$SocketListenKey
            dup
            aload 4 /* ss */
            invokespecial com.sun.tools.jdi.SocketTransportService$SocketListenKey.<init>:(Ljava/net/ServerSocket;)V
            areturn
        end local 4 // java.net.ServerSocket ss
        end local 3 // java.net.InetSocketAddress sa
        end local 2 // int port
        end local 1 // java.lang.String localaddress
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lcom/sun/tools/jdi/SocketTransportService;
            0    9     1  localaddress  Ljava/lang/String;
            0    9     2          port  I
            2    3     3            sa  Ljava/net/InetSocketAddress;
            4    9     3            sa  Ljava/net/InetSocketAddress;
            5    9     4            ss  Ljava/net/ServerSocket;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      localaddress  
      port          

  public com.sun.jdi.connect.spi.TransportService$ListenKey startListening(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/sun/jdi/connect/spi/TransportService$ListenKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.sun.tools.jdi.SocketTransportService this
        start local 1 // java.lang.String address
         0: .line 309
            aload 1 /* address */
            ifnull 1
            aload 1 /* address */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 2
      StackMap locals:
      StackMap stack:
         1: ldc "0"
            goto 3
      StackMap locals:
      StackMap stack:
         2: aload 1 /* address */
      StackMap locals:
      StackMap stack: java.lang.String
         3: invokestatic com.sun.tools.jdi.SocketTransportService$HostPort.parse:(Ljava/lang/String;)Lcom/sun/tools/jdi/SocketTransportService$HostPort;
            astore 2 /* hostPort */
        start local 2 // com.sun.tools.jdi.SocketTransportService$HostPort hostPort
         4: .line 310
            aload 0 /* this */
            aload 2 /* hostPort */
            getfield com.sun.tools.jdi.SocketTransportService$HostPort.host:Ljava/lang/String;
            aload 2 /* hostPort */
            getfield com.sun.tools.jdi.SocketTransportService$HostPort.port:I
            invokevirtual com.sun.tools.jdi.SocketTransportService.startListening:(Ljava/lang/String;I)Lcom/sun/jdi/connect/spi/TransportService$ListenKey;
            areturn
        end local 2 // com.sun.tools.jdi.SocketTransportService$HostPort hostPort
        end local 1 // java.lang.String address
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lcom/sun/tools/jdi/SocketTransportService;
            0    5     1   address  Ljava/lang/String;
            4    5     2  hostPort  Lcom/sun/tools/jdi/SocketTransportService$HostPort;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      address  

  public com.sun.jdi.connect.spi.TransportService$ListenKey startListening();
    descriptor: ()Lcom/sun/jdi/connect/spi/TransportService$ListenKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.tools.jdi.SocketTransportService this
         0: .line 317
            aload 0 /* this */
            aconst_null
            invokevirtual com.sun.tools.jdi.SocketTransportService.startListening:(Ljava/lang/String;)Lcom/sun/jdi/connect/spi/TransportService$ListenKey;
            areturn
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/jdi/SocketTransportService;
    Exceptions:
      throws java.io.IOException

  public void stopListening(com.sun.jdi.connect.spi.TransportService$ListenKey);
    descriptor: (Lcom/sun/jdi/connect/spi/TransportService$ListenKey;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.sun.tools.jdi.SocketTransportService this
        start local 1 // com.sun.jdi.connect.spi.TransportService$ListenKey listener
         0: .line 324
            aload 1 /* listener */
            instanceof com.sun.tools.jdi.SocketTransportService$SocketListenKey
            ifne 2
         1: .line 325
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid listener"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 328
      StackMap locals:
      StackMap stack:
            aload 1 /* listener */
            dup
            astore 2
            monitorenter
         3: .line 329
            aload 1 /* listener */
            checkcast com.sun.tools.jdi.SocketTransportService$SocketListenKey
            invokevirtual com.sun.tools.jdi.SocketTransportService$SocketListenKey.socket:()Ljava/net/ServerSocket;
            astore 3 /* ss */
        start local 3 // java.net.ServerSocket ss
         4: .line 333
            aload 3 /* ss */
            invokevirtual java.net.ServerSocket.isClosed:()Z
            ifeq 6
         5: .line 334
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid listener"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 336
      StackMap locals: com.sun.jdi.connect.spi.TransportService$ListenKey java.net.ServerSocket
      StackMap stack:
            aload 3 /* ss */
            invokevirtual java.net.ServerSocket.close:()V
        end local 3 // java.net.ServerSocket ss
         7: .line 328
            aload 2
            monitorexit
         8: goto 11
      StackMap locals: com.sun.tools.jdi.SocketTransportService com.sun.jdi.connect.spi.TransportService$ListenKey com.sun.jdi.connect.spi.TransportService$ListenKey
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 338
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.sun.jdi.connect.spi.TransportService$ListenKey listener
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lcom/sun/tools/jdi/SocketTransportService;
            0   12     1  listener  Lcom/sun/jdi/connect/spi/TransportService$ListenKey;
            4    7     3        ss  Ljava/net/ServerSocket;
      Exception table:
        from    to  target  type
           3     8       9  any
           9    10       9  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      listener  

  public com.sun.jdi.connect.spi.Connection accept(com.sun.jdi.connect.spi.TransportService$ListenKey, long, long);
    descriptor: (Lcom/sun/jdi/connect/spi/TransportService$ListenKey;JJ)Lcom/sun/jdi/connect/spi/Connection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // com.sun.tools.jdi.SocketTransportService this
        start local 1 // com.sun.jdi.connect.spi.TransportService$ListenKey listener
        start local 2 // long acceptTimeout
        start local 4 // long handshakeTimeout
         0: .line 344
            lload 2 /* acceptTimeout */
            lconst_0
            lcmp
            iflt 1
            lload 4 /* handshakeTimeout */
            lconst_0
            lcmp
            ifge 2
         1: .line 345
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "timeout is negative"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 347
      StackMap locals:
      StackMap stack:
            aload 1 /* listener */
            instanceof com.sun.tools.jdi.SocketTransportService$SocketListenKey
            ifne 4
         3: .line 348
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid listener"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 354
      StackMap locals:
      StackMap stack:
            aload 1 /* listener */
            dup
            astore 7
            monitorenter
         5: .line 355
            aload 1 /* listener */
            checkcast com.sun.tools.jdi.SocketTransportService$SocketListenKey
            invokevirtual com.sun.tools.jdi.SocketTransportService$SocketListenKey.socket:()Ljava/net/ServerSocket;
            astore 6 /* ss */
        start local 6 // java.net.ServerSocket ss
         6: .line 356
            aload 6 /* ss */
            invokevirtual java.net.ServerSocket.isClosed:()Z
            ifeq 8
         7: .line 357
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid listener"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 354
      StackMap locals: java.net.ServerSocket com.sun.jdi.connect.spi.TransportService$ListenKey
      StackMap stack:
            aload 7
            monitorexit
         9: goto 12
        end local 6 // java.net.ServerSocket ss
      StackMap locals: com.sun.tools.jdi.SocketTransportService com.sun.jdi.connect.spi.TransportService$ListenKey long long top com.sun.jdi.connect.spi.TransportService$ListenKey
      StackMap stack: java.lang.Throwable
        10: aload 7
            monitorexit
        11: athrow
        start local 6 // java.net.ServerSocket ss
        12: .line 372
      StackMap locals: com.sun.tools.jdi.SocketTransportService com.sun.jdi.connect.spi.TransportService$ListenKey long long java.net.ServerSocket
      StackMap stack:
            aload 6 /* ss */
            lload 2 /* acceptTimeout */
            l2i
            invokevirtual java.net.ServerSocket.setSoTimeout:(I)V
        13: .line 375
            aload 6 /* ss */
            invokevirtual java.net.ServerSocket.accept:()Ljava/net/Socket;
            astore 7 /* s */
        start local 7 // java.net.Socket s
        14: .line 376
            goto 17
        end local 7 // java.net.Socket s
      StackMap locals:
      StackMap stack: java.net.SocketTimeoutException
        15: pop
        16: .line 377
            new com.sun.jdi.connect.TransportTimeoutException
            dup
            ldc "timeout waiting for connection"
            invokespecial com.sun.jdi.connect.TransportTimeoutException.<init>:(Ljava/lang/String;)V
            athrow
        start local 7 // java.net.Socket s
        17: .line 381
      StackMap locals: java.net.Socket
      StackMap stack:
            aload 0 /* this */
            aload 7 /* s */
            lload 4 /* handshakeTimeout */
            invokevirtual com.sun.tools.jdi.SocketTransportService.handshake:(Ljava/net/Socket;J)V
        18: .line 383
            new com.sun.tools.jdi.SocketConnection
            dup
            aload 7 /* s */
            invokespecial com.sun.tools.jdi.SocketConnection.<init>:(Ljava/net/Socket;)V
            areturn
        end local 7 // java.net.Socket s
        end local 6 // java.net.ServerSocket ss
        end local 4 // long handshakeTimeout
        end local 2 // long acceptTimeout
        end local 1 // com.sun.jdi.connect.spi.TransportService$ListenKey listener
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   19     0              this  Lcom/sun/tools/jdi/SocketTransportService;
            0   19     1          listener  Lcom/sun/jdi/connect/spi/TransportService$ListenKey;
            0   19     2     acceptTimeout  J
            0   19     4  handshakeTimeout  J
            6   10     6                ss  Ljava/net/ServerSocket;
           12   19     6                ss  Ljava/net/ServerSocket;
           14   15     7                 s  Ljava/net/Socket;
           17   19     7                 s  Ljava/net/Socket;
      Exception table:
        from    to  target  type
           5     9      10  any
          10    11      10  any
          13    14      15  Class java.net.SocketTimeoutException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                  Name  Flags
      listener          
      acceptTimeout     
      handshakeTimeout  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.jdi.SocketTransportService this
         0: .line 387
            aload 0 /* this */
            invokevirtual com.sun.tools.jdi.SocketTransportService.name:()Ljava/lang/String;
            areturn
        end local 0 // com.sun.tools.jdi.SocketTransportService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/jdi/SocketTransportService;
}
SourceFile: "SocketTransportService.java"
NestMembers:
  com.sun.tools.jdi.SocketTransportService$1  com.sun.tools.jdi.SocketTransportService$HostPort  com.sun.tools.jdi.SocketTransportService$SocketListenKey
InnerClasses:
  public abstract Capabilities = com.sun.jdi.connect.spi.TransportService$Capabilities of com.sun.jdi.connect.spi.TransportService
  public abstract ListenKey = com.sun.jdi.connect.spi.TransportService$ListenKey of com.sun.jdi.connect.spi.TransportService
  com.sun.tools.jdi.SocketTransportService$1
  private HostPort = com.sun.tools.jdi.SocketTransportService$HostPort of com.sun.tools.jdi.SocketTransportService
  SocketListenKey = com.sun.tools.jdi.SocketTransportService$SocketListenKey of com.sun.tools.jdi.SocketTransportService