public class org.eclipse.jdt.launching.SocketUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.jdt.launching.SocketUtil
  super_class: java.lang.Object
{
  private static final java.util.Random fgRandom;
    descriptor: Ljava/util/Random;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 29
            new java.util.Random
            dup
            invokestatic java.lang.System.currentTimeMillis:()J
            invokespecial java.util.Random.<init>:(J)V
            putstatic org.eclipse.jdt.launching.SocketUtil.fgRandom:Ljava/util/Random;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.launching.SocketUtil this
         0: .line 28
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.eclipse.jdt.launching.SocketUtil this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/launching/SocketUtil;

  public static int findUnusedLocalPort(java.lang.String, int, int);
    descriptor: (Ljava/lang/String;II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // java.lang.String host
        start local 1 // int searchFrom
        start local 2 // int searchTo
         0: .line 46
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         1: goto 15
         2: .line 47
      StackMap locals: int
      StackMap stack:
            iload 1 /* searchFrom */
            iload 2 /* searchTo */
            invokestatic org.eclipse.jdt.launching.SocketUtil.getRandomPort:(II)I
            istore 4 /* port */
        start local 4 // int port
         3: .line 48
            aconst_null
            astore 5
            aconst_null
            astore 6
         4: new java.net.Socket
            dup
            aload 0 /* host */
            iload 4 /* port */
            invokespecial java.net.Socket.<init>:(Ljava/lang/String;I)V
            astore 7 /* s */
        start local 7 // java.net.Socket s
         5: .line 49
            aload 7 /* s */
            ifnull 14
            aload 7 /* s */
            invokevirtual java.net.Socket.close:()V
            goto 14
      StackMap locals: java.lang.String int int int int java.lang.Throwable java.lang.Throwable java.net.Socket
      StackMap stack: java.lang.Throwable
         6: astore 5
            aload 7 /* s */
            ifnull 7
            aload 7 /* s */
            invokevirtual java.net.Socket.close:()V
        end local 7 // java.net.Socket s
      StackMap locals:
      StackMap stack:
         7: aload 5
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 6
            aload 5
            ifnonnull 9
            aload 6
            astore 5
            goto 10
      StackMap locals:
      StackMap stack:
         9: aload 5
            aload 6
            if_acmpeq 10
            aload 5
            aload 6
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        10: aload 5
            athrow
      StackMap locals: java.lang.String int int int int
      StackMap stack: java.net.ConnectException
        11: pop
        12: .line 50
            iload 4 /* port */
            ireturn
        13: .line 51
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        end local 4 // int port
        14: .line 46
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 3 /* i */
            bipush 10
            if_icmplt 2
        end local 3 // int i
        16: .line 54
            iconst_m1
            ireturn
        end local 2 // int searchTo
        end local 1 // int searchFrom
        end local 0 // java.lang.String host
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0        host  Ljava/lang/String;
            0   17     1  searchFrom  I
            0   17     2    searchTo  I
            1   16     3           i  I
            3   14     4        port  I
            5    7     7           s  Ljava/net/Socket;
      Exception table:
        from    to  target  type
           4     8       8  any
           3    11      11  Class java.net.ConnectException
           3    11      13  Class java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
            Name  Flags
      host        
      searchFrom  
      searchTo    

  private static int getRandomPort(int, int);
    descriptor: (II)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // int low
        start local 1 // int high
         0: .line 58
            getstatic org.eclipse.jdt.launching.SocketUtil.fgRandom:Ljava/util/Random;
            invokevirtual java.util.Random.nextFloat:()F
            iload 1 /* high */
            iload 0 /* low */
            isub
            i2f
            fmul
            f2i
            iload 0 /* low */
            iadd
            ireturn
        end local 1 // int high
        end local 0 // int low
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   low  I
            0    1     1  high  I
    MethodParameters:
      Name  Flags
      low   
      high  

  public static int findFreePort();
    descriptor: ()I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=0
         0: .line 68
            aconst_null
            astore 0
            aconst_null
            astore 1
         1: new java.net.ServerSocket
            dup
            iconst_0
            invokespecial java.net.ServerSocket.<init>:(I)V
            astore 2 /* socket */
        start local 2 // java.net.ServerSocket socket
         2: .line 69
            aload 2 /* socket */
            invokevirtual java.net.ServerSocket.getLocalPort:()I
         3: .line 70
            aload 2 /* socket */
            ifnull 4
            aload 2 /* socket */
            invokevirtual java.net.ServerSocket.close:()V
         4: .line 69
      StackMap locals: java.lang.Throwable java.lang.Throwable java.net.ServerSocket
      StackMap stack: int
            ireturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: astore 0
         6: .line 70
            aload 2 /* socket */
            ifnull 7
            aload 2 /* socket */
            invokevirtual java.net.ServerSocket.close:()V
        end local 2 // java.net.ServerSocket socket
      StackMap locals:
      StackMap stack:
         7: aload 0
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 1
            aload 0
            ifnonnull 9
            aload 1
            astore 0
            goto 10
      StackMap locals:
      StackMap stack:
         9: aload 0
            aload 1
            if_acmpeq 10
            aload 0
            aload 1
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        10: aload 0
            athrow
      StackMap locals:
      StackMap stack: java.io.IOException
        11: pop
        12: .line 72
            iconst_m1
            ireturn
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            2    7     2  socket  Ljava/net/ServerSocket;
      Exception table:
        from    to  target  type
           2     3       5  any
           1     4       8  any
           5     8       8  any
           0     4      11  Class java.io.IOException
           5    11      11  Class java.io.IOException
}
SourceFile: "SocketUtil.java"