public final class io.netty.resolver.HostsFileParser
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: io.netty.resolver.HostsFileParser
  super_class: java.lang.Object
{
  private static final java.lang.String WINDOWS_DEFAULT_SYSTEM_ROOT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "C:\\Windows"

  private static final java.lang.String WINDOWS_HOSTS_FILE_RELATIVE_PATH;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "\\system32\\drivers\\etc\\hosts"

  private static final java.lang.String X_PLATFORMS_HOSTS_FILE_PATH;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "/etc/hosts"

  private static final java.util.regex.Pattern WHITESPACES;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final io.netty.util.internal.logging.InternalLogger logger;
    descriptor: Lio/netty/util/internal/logging/InternalLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 51
            ldc "[ \t]+"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic io.netty.resolver.HostsFileParser.WHITESPACES:Ljava/util/regex/Pattern;
         1: .line 53
            ldc Lio/netty/resolver/HostsFileParser;
            invokestatic io.netty.util.internal.logging.InternalLoggerFactory.getInstance:(Ljava/lang/Class;)Lio/netty/util/internal/logging/InternalLogger;
            putstatic io.netty.resolver.HostsFileParser.logger:Lio/netty/util/internal/logging/InternalLogger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.io.File locateHostsFile();
    descriptor: ()Ljava/io/File;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=0
         0: .line 57
            invokestatic io.netty.util.internal.PlatformDependent.isWindows:()Z
            ifeq 5
         1: .line 58
            new java.io.File
            dup
            new java.lang.StringBuilder
            dup
            ldc "SystemRoot"
            invokestatic java.lang.System.getenv:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\\system32\\drivers\\etc\\hosts"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 0 /* hostsFile */
        start local 0 // java.io.File hostsFile
         2: .line 59
            aload 0 /* hostsFile */
            invokevirtual java.io.File.exists:()Z
            ifne 6
         3: .line 60
            new java.io.File
            dup
            ldc "C:\\Windows\\system32\\drivers\\etc\\hosts"
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 0 /* hostsFile */
         4: .line 62
            goto 6
        end local 0 // java.io.File hostsFile
         5: .line 63
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            ldc "/etc/hosts"
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 0 /* hostsFile */
        start local 0 // java.io.File hostsFile
         6: .line 65
      StackMap locals: java.io.File
      StackMap stack:
            aload 0 /* hostsFile */
            areturn
        end local 0 // java.io.File hostsFile
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            2    5     0  hostsFile  Ljava/io/File;
            6    7     0  hostsFile  Ljava/io/File;

  public static io.netty.resolver.HostsFileEntries parseSilently();
    descriptor: ()Lio/netty/resolver/HostsFileEntries;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=0
         0: .line 74
            invokestatic io.netty.resolver.HostsFileParser.locateHostsFile:()Ljava/io/File;
            astore 0 /* hostsFile */
        start local 0 // java.io.File hostsFile
         1: .line 76
            aload 0 /* hostsFile */
            invokestatic io.netty.resolver.HostsFileParser.parse:(Ljava/io/File;)Lio/netty/resolver/HostsFileEntries;
         2: areturn
         3: .line 77
      StackMap locals: java.io.File
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
         4: .line 78
            getstatic io.netty.resolver.HostsFileParser.logger:Lio/netty/util/internal/logging/InternalLogger;
            new java.lang.StringBuilder
            dup
            ldc "Failed to load and parse hosts file at "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* hostsFile */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
         5: .line 79
            getstatic io.netty.resolver.HostsFileEntries.EMPTY:Lio/netty/resolver/HostsFileEntries;
            areturn
        end local 1 // java.io.IOException e
        end local 0 // java.io.File hostsFile
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            1    6     0  hostsFile  Ljava/io/File;
            4    6     1          e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException

  public static io.netty.resolver.HostsFileEntries parse();
    descriptor: ()Lio/netty/resolver/HostsFileEntries;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 90
            invokestatic io.netty.resolver.HostsFileParser.locateHostsFile:()Ljava/io/File;
            invokestatic io.netty.resolver.HostsFileParser.parse:(Ljava/io/File;)Lio/netty/resolver/HostsFileEntries;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException

  public static io.netty.resolver.HostsFileEntries parse(java.io.File);
    descriptor: (Ljava/io/File;)Lio/netty/resolver/HostsFileEntries;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.io.File file
         0: .line 101
            aload 0 /* file */
            ldc "file"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 102
            aload 0 /* file */
            invokevirtual java.io.File.exists:()Z
            ifeq 3
            aload 0 /* file */
            invokevirtual java.io.File.isFile:()Z
            ifeq 3
         2: .line 103
            new java.io.BufferedReader
            dup
            new java.io.FileReader
            dup
            aload 0 /* file */
            invokespecial java.io.FileReader.<init>:(Ljava/io/File;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            invokestatic io.netty.resolver.HostsFileParser.parse:(Ljava/io/Reader;)Lio/netty/resolver/HostsFileEntries;
            areturn
         3: .line 105
      StackMap locals:
      StackMap stack:
            getstatic io.netty.resolver.HostsFileEntries.EMPTY:Lio/netty/resolver/HostsFileEntries;
            areturn
        end local 0 // java.io.File file
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  file  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      file  

  public static io.netty.resolver.HostsFileEntries parse(java.io.Reader);
    descriptor: (Ljava/io/Reader;)Lio/netty/resolver/HostsFileEntries;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=16, args_size=1
        start local 0 // java.io.Reader reader
         0: .line 117
            aload 0 /* reader */
            ldc "reader"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 118
            new java.io.BufferedReader
            dup
            aload 0 /* reader */
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            astore 1 /* buff */
        start local 1 // java.io.BufferedReader buff
         2: .line 120
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* ipv4Entries */
        start local 2 // java.util.Map ipv4Entries
         3: .line 121
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 3 /* ipv6Entries */
        start local 3 // java.util.Map ipv6Entries
         4: .line 123
            goto 38
        start local 4 // java.lang.String line
         5: .line 125
      StackMap locals: java.io.Reader java.io.BufferedReader java.util.Map java.util.Map java.lang.String
      StackMap stack:
            aload 4 /* line */
            bipush 35
            invokevirtual java.lang.String.indexOf:(I)I
            istore 5 /* commentPosition */
        start local 5 // int commentPosition
         6: .line 126
            iload 5 /* commentPosition */
            iconst_m1
            if_icmpeq 8
         7: .line 127
            aload 4 /* line */
            iconst_0
            iload 5 /* commentPosition */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 4 /* line */
         8: .line 130
      StackMap locals: int
      StackMap stack:
            aload 4 /* line */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 4 /* line */
         9: .line 131
            aload 4 /* line */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 11
        10: .line 132
            goto 38
        11: .line 136
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* lineParts */
        start local 6 // java.util.List lineParts
        12: .line 137
            getstatic io.netty.resolver.HostsFileParser.WHITESPACES:Ljava/util/regex/Pattern;
            aload 4 /* line */
            invokevirtual java.util.regex.Pattern.split:(Ljava/lang/CharSequence;)[Ljava/lang/String;
            dup
            astore 10
            arraylength
            istore 9
            iconst_0
            istore 8
            goto 17
      StackMap locals: java.io.Reader java.io.BufferedReader java.util.Map java.util.Map java.lang.String int java.util.List top int int java.lang.String[]
      StackMap stack:
        13: aload 10
            iload 8
            aaload
            astore 7 /* s */
        start local 7 // java.lang.String s
        14: .line 138
            aload 7 /* s */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 16
        15: .line 139
            aload 6 /* lineParts */
            aload 7 /* s */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // java.lang.String s
        16: .line 137
      StackMap locals:
      StackMap stack:
            iinc 8 1
      StackMap locals:
      StackMap stack:
        17: iload 8
            iload 9
            if_icmplt 13
        18: .line 144
            aload 6 /* lineParts */
            invokeinterface java.util.List.size:()I
            iconst_2
            if_icmpge 20
        19: .line 146
            goto 38
        20: .line 149
      StackMap locals: java.io.Reader java.io.BufferedReader java.util.Map java.util.Map java.lang.String int java.util.List
      StackMap stack:
            aload 6 /* lineParts */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic io.netty.util.NetUtil.createByteArrayFromIpAddressString:(Ljava/lang/String;)[B
            astore 7 /* ipBytes */
        start local 7 // byte[] ipBytes
        21: .line 151
            aload 7 /* ipBytes */
            ifnonnull 23
        22: .line 153
            goto 38
        23: .line 157
      StackMap locals: byte[]
      StackMap stack:
            iconst_1
            istore 8 /* i */
        start local 8 // int i
        24: goto 37
        25: .line 158
      StackMap locals: int
      StackMap stack:
            aload 6 /* lineParts */
            iload 8 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 9 /* hostname */
        start local 9 // java.lang.String hostname
        26: .line 159
            aload 9 /* hostname */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 10 /* hostnameLower */
        start local 10 // java.lang.String hostnameLower
        27: .line 160
            aload 9 /* hostname */
            aload 7 /* ipBytes */
            invokestatic java.net.InetAddress.getByAddress:(Ljava/lang/String;[B)Ljava/net/InetAddress;
            astore 11 /* address */
        start local 11 // java.net.InetAddress address
        28: .line 161
            aload 11 /* address */
            instanceof java.net.Inet4Address
            ifeq 33
        29: .line 162
            aload 2 /* ipv4Entries */
            aload 10 /* hostnameLower */
            aload 11 /* address */
            checkcast java.net.Inet4Address
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.net.Inet4Address
            astore 12 /* previous */
        start local 12 // java.net.Inet4Address previous
        30: .line 163
            aload 12 /* previous */
            ifnull 36
        31: .line 165
            aload 2 /* ipv4Entries */
            aload 10 /* hostnameLower */
            aload 12 /* previous */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 12 // java.net.Inet4Address previous
        32: .line 167
            goto 36
        33: .line 168
      StackMap locals: java.lang.String java.lang.String java.net.InetAddress
      StackMap stack:
            aload 3 /* ipv6Entries */
            aload 10 /* hostnameLower */
            aload 11 /* address */
            checkcast java.net.Inet6Address
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.net.Inet6Address
            astore 12 /* previous */
        start local 12 // java.net.Inet6Address previous
        34: .line 169
            aload 12 /* previous */
            ifnull 36
        35: .line 171
            aload 3 /* ipv6Entries */
            aload 10 /* hostnameLower */
            aload 12 /* previous */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 12 // java.net.Inet6Address previous
        end local 11 // java.net.InetAddress address
        end local 10 // java.lang.String hostnameLower
        end local 9 // java.lang.String hostname
        36: .line 157
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        37: iload 8 /* i */
            aload 6 /* lineParts */
            invokeinterface java.util.List.size:()I
            if_icmplt 25
        end local 8 // int i
        end local 7 // byte[] ipBytes
        end local 6 // java.util.List lineParts
        end local 5 // int commentPosition
        end local 4 // java.lang.String line
        38: .line 123
      StackMap locals: java.io.Reader java.io.BufferedReader java.util.Map java.util.Map
      StackMap stack:
            aload 1 /* buff */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            dup
            astore 4 /* line */
        start local 4 // java.lang.String line
        39: ifnonnull 5
        40: .line 176
            aload 2 /* ipv4Entries */
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 42
            aload 3 /* ipv6Entries */
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 42
        41: .line 177
            getstatic io.netty.resolver.HostsFileEntries.EMPTY:Lio/netty/resolver/HostsFileEntries;
            goto 43
        42: .line 178
      StackMap locals: java.lang.String
      StackMap stack:
            new io.netty.resolver.HostsFileEntries
            dup
            aload 2 /* ipv4Entries */
            aload 3 /* ipv6Entries */
            invokespecial io.netty.resolver.HostsFileEntries.<init>:(Ljava/util/Map;Ljava/util/Map;)V
      StackMap locals:
      StackMap stack: io.netty.resolver.HostsFileEntries
        43: astore 14
        44: .line 181
            aload 1 /* buff */
            invokevirtual java.io.BufferedReader.close:()V
        45: .line 182
            goto 48
      StackMap locals: java.io.Reader java.io.BufferedReader java.util.Map java.util.Map java.lang.String top top top top top top top top top io.netty.resolver.HostsFileEntries
      StackMap stack: java.io.IOException
        46: astore 15 /* e */
        start local 15 // java.io.IOException e
        47: .line 183
            getstatic io.netty.resolver.HostsFileParser.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "Failed to close a reader"
            aload 15 /* e */
            invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 15 // java.io.IOException e
        48: .line 176
      StackMap locals:
      StackMap stack:
            aload 14
            areturn
        end local 4 // java.lang.String line
        end local 3 // java.util.Map ipv6Entries
        end local 2 // java.util.Map ipv4Entries
        49: .line 179
      StackMap locals: java.io.Reader java.io.BufferedReader
      StackMap stack: java.lang.Throwable
            astore 13
        50: .line 181
            aload 1 /* buff */
            invokevirtual java.io.BufferedReader.close:()V
        51: .line 182
            goto 54
      StackMap locals: java.io.Reader java.io.BufferedReader top top top top top top top top top top top java.lang.Throwable
      StackMap stack: java.io.IOException
        52: astore 15 /* e */
        start local 15 // java.io.IOException e
        53: .line 183
            getstatic io.netty.resolver.HostsFileParser.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "Failed to close a reader"
            aload 15 /* e */
            invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 15 // java.io.IOException e
        54: .line 185
      StackMap locals:
      StackMap stack:
            aload 13
            athrow
        end local 1 // java.io.BufferedReader buff
        end local 0 // java.io.Reader reader
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   55     0           reader  Ljava/io/Reader;
            2   55     1             buff  Ljava/io/BufferedReader;
            3   49     2      ipv4Entries  Ljava/util/Map<Ljava/lang/String;Ljava/net/Inet4Address;>;
            4   49     3      ipv6Entries  Ljava/util/Map<Ljava/lang/String;Ljava/net/Inet6Address;>;
            5   38     4             line  Ljava/lang/String;
           39   49     4             line  Ljava/lang/String;
            6   38     5  commentPosition  I
           12   38     6        lineParts  Ljava/util/List<Ljava/lang/String;>;
           14   16     7                s  Ljava/lang/String;
           21   38     7          ipBytes  [B
           24   38     8                i  I
           26   36     9         hostname  Ljava/lang/String;
           27   36    10    hostnameLower  Ljava/lang/String;
           28   36    11          address  Ljava/net/InetAddress;
           30   32    12         previous  Ljava/net/Inet4Address;
           34   36    12         previous  Ljava/net/Inet6Address;
           47   48    15                e  Ljava/io/IOException;
           53   54    15                e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          44    45      46  Class java.io.IOException
           2    44      49  any
          50    51      52  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      reader  

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.resolver.HostsFileParser this
         0: .line 191
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 192
            return
        end local 0 // io.netty.resolver.HostsFileParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/resolver/HostsFileParser;
}
SourceFile: "HostsFileParser.java"