public class org.I0Itec.zkclient.NetworkUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.I0Itec.zkclient.NetworkUtil
  super_class: java.lang.Object
{
  public static final java.lang.String OVERWRITE_HOSTNAME_SYSTEM_PROPERTY;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "zkclient.hostname.overwritten"

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

  public static java.lang.String[] getLocalHostNames();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=0
         0: .line 34
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 0 /* hostNames */
        start local 0 // java.util.Set hostNames
         1: .line 39
            aload 0 /* hostNames */
            ldc "localhost"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         2: .line 41
            invokestatic java.net.NetworkInterface.getNetworkInterfaces:()Ljava/util/Enumeration;
            astore 1 /* networkInterfaces */
        start local 1 // java.util.Enumeration networkInterfaces
         3: .line 42
            aload 1 /* networkInterfaces */
            astore 2 /* ifaces */
        start local 2 // java.util.Enumeration ifaces
         4: goto 13
         5: .line 43
      StackMap locals: java.util.Set java.util.Enumeration java.util.Enumeration
      StackMap stack:
            aload 2 /* ifaces */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.net.NetworkInterface
            astore 3 /* iface */
        start local 3 // java.net.NetworkInterface iface
         6: .line 44
            aconst_null
            astore 4 /* ia */
        start local 4 // java.net.InetAddress ia
         7: .line 45
            aload 3 /* iface */
            invokevirtual java.net.NetworkInterface.getInetAddresses:()Ljava/util/Enumeration;
            astore 5 /* ips */
        start local 5 // java.util.Enumeration ips
         8: goto 12
         9: .line 46
      StackMap locals: java.net.NetworkInterface java.net.InetAddress java.util.Enumeration
      StackMap stack:
            aload 5 /* ips */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 4 /* ia */
        10: .line 47
            aload 0 /* hostNames */
            aload 4 /* ia */
            invokevirtual java.net.InetAddress.getCanonicalHostName:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        11: .line 48
            aload 0 /* hostNames */
            aload 4 /* ia */
            invokevirtual java.net.InetAddress.getAddress:()[B
            invokestatic org.I0Itec.zkclient.NetworkUtil.ipToString:([B)Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        12: .line 45
      StackMap locals:
      StackMap stack:
            aload 5 /* ips */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 9
        end local 5 // java.util.Enumeration ips
        end local 4 // java.net.InetAddress ia
        end local 3 // java.net.NetworkInterface iface
        13: .line 42
      StackMap locals:
      StackMap stack:
            aload 2 /* ifaces */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 5
        end local 2 // java.util.Enumeration ifaces
        end local 1 // java.util.Enumeration networkInterfaces
        14: .line 51
            goto 17
      StackMap locals: java.util.Set
      StackMap stack: java.net.SocketException
        15: pop
        16: .line 52
            new java.lang.RuntimeException
            dup
            ldc "unable to retrieve host names of localhost"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 54
      StackMap locals:
      StackMap stack:
            aload 0 /* hostNames */
            aload 0 /* hostNames */
            invokeinterface java.util.Set.size:()I
            anewarray java.lang.String
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            areturn
        end local 0 // java.util.Set hostNames
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            1   18     0          hostNames  Ljava/util/Set<Ljava/lang/String;>;
            3   14     1  networkInterfaces  Ljava/util/Enumeration<Ljava/net/NetworkInterface;>;
            4   14     2             ifaces  Ljava/util/Enumeration<Ljava/net/NetworkInterface;>;
            6   13     3              iface  Ljava/net/NetworkInterface;
            7   13     4                 ia  Ljava/net/InetAddress;
            8   13     5                ips  Ljava/util/Enumeration<Ljava/net/InetAddress;>;
      Exception table:
        from    to  target  type
           2    14      15  Class java.net.SocketException

  private static java.lang.String ipToString(byte[]);
    descriptor: ([B)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // byte[] bytes
         0: .line 58
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 1 /* addrStr */
        start local 1 // java.lang.StringBuffer addrStr
         1: .line 59
            iconst_0
            istore 2 /* cnt */
        start local 2 // int cnt
         2: goto 10
         3: .line 60
      StackMap locals: java.lang.StringBuffer int
      StackMap stack:
            aload 0 /* bytes */
            iload 2 /* cnt */
            baload
            ifge 4
            aload 0 /* bytes */
            iload 2 /* cnt */
            baload
            sipush 256
            iadd
            goto 5
      StackMap locals:
      StackMap stack:
         4: aload 0 /* bytes */
            iload 2 /* cnt */
            baload
      StackMap locals:
      StackMap stack: int
         5: istore 3 /* uByte */
        start local 3 // int uByte
         6: .line 61
            aload 1 /* addrStr */
            iload 3 /* uByte */
            invokevirtual java.lang.StringBuffer.append:(I)Ljava/lang/StringBuffer;
            pop
         7: .line 62
            iload 2 /* cnt */
            iconst_3
            if_icmpge 9
         8: .line 63
            aload 1 /* addrStr */
            bipush 46
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
        end local 3 // int uByte
         9: .line 59
      StackMap locals:
      StackMap stack:
            iinc 2 /* cnt */ 1
      StackMap locals:
      StackMap stack:
        10: iload 2 /* cnt */
            aload 0 /* bytes */
            arraylength
            if_icmplt 3
        end local 2 // int cnt
        11: .line 65
            aload 1 /* addrStr */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuffer addrStr
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0    bytes  [B
            1   12     1  addrStr  Ljava/lang/StringBuffer;
            2   11     2      cnt  I
            6    9     3    uByte  I
    MethodParameters:
       Name  Flags
      bytes  final

  public static int hostNamesInList(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=8, args_size=2
        start local 0 // java.lang.String serverList
        start local 1 // java.lang.String[] hostNames
         0: .line 69
            aload 0 /* serverList */
            ldc ","
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* serverNames */
        start local 2 // java.lang.String[] serverNames
         1: .line 70
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 13
         3: .line 71
      StackMap locals: java.lang.String[] int
      StackMap stack:
            aload 1 /* hostNames */
            iload 3 /* i */
            aaload
            astore 4 /* hostname */
        start local 4 // java.lang.String hostname
         4: .line 72
            iconst_0
            istore 5 /* j */
        start local 5 // int j
         5: goto 11
         6: .line 73
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 2 /* serverNames */
            iload 5 /* j */
            aaload
            astore 6 /* serverNameAndPort */
        start local 6 // java.lang.String serverNameAndPort
         7: .line 74
            aload 6 /* serverNameAndPort */
            ldc ":"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            iconst_0
            aaload
            astore 7 /* serverName */
        start local 7 // java.lang.String serverName
         8: .line 75
            aload 7 /* serverName */
            aload 4 /* hostname */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 10
         9: .line 76
            iload 5 /* j */
            ireturn
        end local 7 // java.lang.String serverName
        end local 6 // java.lang.String serverNameAndPort
        10: .line 72
      StackMap locals:
      StackMap stack:
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        11: iload 5 /* j */
            aload 2 /* serverNames */
            arraylength
            if_icmplt 6
        end local 5 // int j
        end local 4 // java.lang.String hostname
        12: .line 70
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 3 /* i */
            aload 1 /* hostNames */
            arraylength
            if_icmplt 3
        end local 3 // int i
        14: .line 80
            iconst_m1
            ireturn
        end local 2 // java.lang.String[] serverNames
        end local 1 // java.lang.String[] hostNames
        end local 0 // java.lang.String serverList
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   15     0         serverList  Ljava/lang/String;
            0   15     1          hostNames  [Ljava/lang/String;
            1   15     2        serverNames  [Ljava/lang/String;
            2   14     3                  i  I
            4   12     4           hostname  Ljava/lang/String;
            5   12     5                  j  I
            7   10     6  serverNameAndPort  Ljava/lang/String;
            8   10     7         serverName  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      serverList  final
      hostNames   final

  public static boolean hostNameInArray(java.lang.String[], java.lang.String);
    descriptor: ([Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // java.lang.String[] hostNames
        start local 1 // java.lang.String hostName
         0: .line 84
            aload 0 /* hostNames */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: java.lang.String[] java.lang.String top int int java.lang.String[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* name */
        start local 2 // java.lang.String name
         2: .line 85
            aload 2 /* name */
            aload 1 /* hostName */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 86
            iconst_1
            ireturn
        end local 2 // java.lang.String name
         4: .line 84
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 1
         6: .line 89
            iconst_0
            ireturn
        end local 1 // java.lang.String hostName
        end local 0 // java.lang.String[] hostNames
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0  hostNames  [Ljava/lang/String;
            0    7     1   hostName  Ljava/lang/String;
            2    4     2       name  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      hostNames  final
      hostName   final

  public static boolean isPortFree(int);
    descriptor: (I)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // int port
         0: .line 94
            new java.net.Socket
            dup
            ldc "localhost"
            iload 0 /* port */
            invokespecial java.net.Socket.<init>:(Ljava/lang/String;I)V
            astore 1 /* socket */
        start local 1 // java.net.Socket socket
         1: .line 95
            aload 1 /* socket */
            invokevirtual java.net.Socket.close:()V
         2: .line 96
            iconst_0
            ireturn
        end local 1 // java.net.Socket socket
         3: .line 97
      StackMap locals:
      StackMap stack: java.net.ConnectException
            pop
         4: .line 98
            iconst_1
            ireturn
         5: .line 99
      StackMap locals:
      StackMap stack: java.net.SocketException
            astore 1 /* e */
        start local 1 // java.net.SocketException e
         6: .line 100
            aload 1 /* e */
            invokevirtual java.net.SocketException.getMessage:()Ljava/lang/String;
            ldc "Connection reset by peer"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 101
            iconst_1
            ireturn
         8: .line 103
      StackMap locals: java.net.SocketException
      StackMap stack:
            new java.lang.RuntimeException
            dup
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.net.SocketException e
         9: .line 104
      StackMap locals: int
      StackMap stack: java.net.UnknownHostException
            astore 1 /* e */
        start local 1 // java.net.UnknownHostException e
        10: .line 105
            new java.lang.RuntimeException
            dup
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.net.UnknownHostException e
        11: .line 106
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
        12: .line 107
            new java.lang.RuntimeException
            dup
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.io.IOException e
        end local 0 // int port
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    port  I
            1    3     1  socket  Ljava/net/Socket;
            6    9     1       e  Ljava/net/SocketException;
           10   11     1       e  Ljava/net/UnknownHostException;
           12   13     1       e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     2       3  Class java.net.ConnectException
           0     2       5  Class java.net.SocketException
           0     2       9  Class java.net.UnknownHostException
           0     2      11  Class java.io.IOException
    MethodParameters:
      Name  Flags
      port  

  public static java.lang.String getLocalhostName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 112
            ldc "zkclient.hostname.overwritten"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* property */
        start local 0 // java.lang.String property
         1: .line 113
            aload 0 /* property */
            ifnull 3
            aload 0 /* property */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifle 3
         2: .line 114
            aload 0 /* property */
            areturn
         3: .line 117
      StackMap locals: java.lang.String
      StackMap stack:
            invokestatic java.net.InetAddress.getLocalHost:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getHostName:()Ljava/lang/String;
         4: areturn
         5: .line 118
      StackMap locals:
      StackMap stack: java.net.UnknownHostException
            pop
         6: .line 119
            new java.lang.RuntimeException
            dup
            ldc "unable to retrieve localhost name"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.String property
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            1    7     0  property  Ljava/lang/String;
      Exception table:
        from    to  target  type
           3     4       5  Class java.net.UnknownHostException
}
SourceFile: "NetworkUtil.java"