public final class com.google.common.net.InternetDomainName
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.google.common.net.InternetDomainName
  super_class: java.lang.Object
{
  private static final com.google.common.base.CharMatcher DOTS_MATCHER;
    descriptor: Lcom/google/common/base/CharMatcher;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final com.google.common.base.Splitter DOT_SPLITTER;
    descriptor: Lcom/google/common/base/Splitter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final com.google.common.base.Joiner DOT_JOINER;
    descriptor: Lcom/google/common/base/Joiner;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int NO_SUFFIX_FOUND;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  private static final int MAX_PARTS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 127

  private static final int MAX_LENGTH;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 253

  private static final int MAX_DOMAIN_PART_LENGTH;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 63

  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.google.common.collect.ImmutableList<java.lang.String> parts;
    descriptor: Lcom/google/common/collect/ImmutableList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/google/common/collect/ImmutableList<Ljava/lang/String;>;

  private final int publicSuffixIndex;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int registrySuffixIndex;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final com.google.common.base.CharMatcher DASH_MATCHER;
    descriptor: Lcom/google/common/base/CharMatcher;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final com.google.common.base.CharMatcher PART_CHAR_MATCHER;
    descriptor: Lcom/google/common/base/CharMatcher;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 79
            ldc ".\u3002\uFF0E\uFF61"
            invokestatic com.google.common.base.CharMatcher.anyOf:(Ljava/lang/CharSequence;)Lcom/google/common/base/CharMatcher;
            putstatic com.google.common.net.InternetDomainName.DOTS_MATCHER:Lcom/google/common/base/CharMatcher;
         1: .line 80
            bipush 46
            invokestatic com.google.common.base.Splitter.on:(C)Lcom/google/common/base/Splitter;
            putstatic com.google.common.net.InternetDomainName.DOT_SPLITTER:Lcom/google/common/base/Splitter;
         2: .line 81
            bipush 46
            invokestatic com.google.common.base.Joiner.on:(C)Lcom/google/common/base/Joiner;
            putstatic com.google.common.net.InternetDomainName.DOT_JOINER:Lcom/google/common/base/Joiner;
         3: .line 238
            ldc "-_"
            invokestatic com.google.common.base.CharMatcher.anyOf:(Ljava/lang/CharSequence;)Lcom/google/common/base/CharMatcher;
            putstatic com.google.common.net.InternetDomainName.DASH_MATCHER:Lcom/google/common/base/CharMatcher;
         4: .line 241
            invokestatic com.google.common.base.CharMatcher.javaLetterOrDigit:()Lcom/google/common/base/CharMatcher;
            getstatic com.google.common.net.InternetDomainName.DASH_MATCHER:Lcom/google/common/base/CharMatcher;
            invokevirtual com.google.common.base.CharMatcher.or:(Lcom/google/common/base/CharMatcher;)Lcom/google/common/base/CharMatcher;
         5: .line 240
            putstatic com.google.common.net.InternetDomainName.PART_CHAR_MATCHER:Lcom/google/common/base/CharMatcher;
         6: .line 241
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.common.net.InternetDomainName this
        start local 1 // java.lang.String name
         0: .line 132
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 138
            getstatic com.google.common.net.InternetDomainName.DOTS_MATCHER:Lcom/google/common/base/CharMatcher;
            aload 1 /* name */
            bipush 46
            invokevirtual com.google.common.base.CharMatcher.replaceFrom:(Ljava/lang/CharSequence;C)Ljava/lang/String;
            invokestatic com.google.common.base.Ascii.toLowerCase:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* name */
         2: .line 140
            aload 1 /* name */
            ldc "."
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 141
            aload 1 /* name */
            iconst_0
            aload 1 /* name */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 1 /* name */
         4: .line 144
      StackMap locals: com.google.common.net.InternetDomainName java.lang.String
      StackMap stack:
            aload 1 /* name */
            invokevirtual java.lang.String.length:()I
            sipush 253
            if_icmpgt 5
            iconst_1
            goto 6
      StackMap locals:
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: ldc "Domain name too long: '%s':"
            aload 1 /* name */
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
         7: .line 145
            aload 0 /* this */
            aload 1 /* name */
            putfield com.google.common.net.InternetDomainName.name:Ljava/lang/String;
         8: .line 147
            aload 0 /* this */
            getstatic com.google.common.net.InternetDomainName.DOT_SPLITTER:Lcom/google/common/base/Splitter;
            aload 1 /* name */
            invokevirtual com.google.common.base.Splitter.split:(Ljava/lang/CharSequence;)Ljava/lang/Iterable;
            invokestatic com.google.common.collect.ImmutableList.copyOf:(Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableList;
            putfield com.google.common.net.InternetDomainName.parts:Lcom/google/common/collect/ImmutableList;
         9: .line 148
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.parts:Lcom/google/common/collect/ImmutableList;
            invokevirtual com.google.common.collect.ImmutableList.size:()I
            bipush 127
            if_icmpgt 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: ldc "Domain has too many parts: '%s'"
            aload 1 /* name */
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
        12: .line 149
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.parts:Lcom/google/common/collect/ImmutableList;
            invokestatic com.google.common.net.InternetDomainName.validateSyntax:(Ljava/util/List;)Z
            ldc "Not a valid domain name: '%s'"
            aload 1 /* name */
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
        13: .line 151
            aload 0 /* this */
            aload 0 /* this */
            invokestatic com.google.common.base.Optional.absent:()Lcom/google/common/base/Optional;
            invokevirtual com.google.common.net.InternetDomainName.findSuffixOfType:(Lcom/google/common/base/Optional;)I
            putfield com.google.common.net.InternetDomainName.publicSuffixIndex:I
        14: .line 152
            aload 0 /* this */
            aload 0 /* this */
            getstatic com.google.thirdparty.publicsuffix.PublicSuffixType.REGISTRY:Lcom/google/thirdparty/publicsuffix/PublicSuffixType;
            invokestatic com.google.common.base.Optional.of:(Ljava/lang/Object;)Lcom/google/common/base/Optional;
            invokevirtual com.google.common.net.InternetDomainName.findSuffixOfType:(Lcom/google/common/base/Optional;)I
            putfield com.google.common.net.InternetDomainName.registrySuffixIndex:I
        15: .line 153
            return
        end local 1 // java.lang.String name
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lcom/google/common/net/InternetDomainName;
            0   16     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  private int findSuffixOfType(com.google.common.base.Optional<com.google.thirdparty.publicsuffix.PublicSuffixType>);
    descriptor: (Lcom/google/common/base/Optional;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // com.google.common.net.InternetDomainName this
        start local 1 // com.google.common.base.Optional desiredType
         0: .line 165
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.parts:Lcom/google/common/collect/ImmutableList;
            invokevirtual com.google.common.collect.ImmutableList.size:()I
            istore 2 /* partsSize */
        start local 2 // int partsSize
         1: .line 167
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 13
         3: .line 168
      StackMap locals: int int
      StackMap stack:
            getstatic com.google.common.net.InternetDomainName.DOT_JOINER:Lcom/google/common/base/Joiner;
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.parts:Lcom/google/common/collect/ImmutableList;
            iload 3 /* i */
            iload 2 /* partsSize */
            invokevirtual com.google.common.collect.ImmutableList.subList:(II)Lcom/google/common/collect/ImmutableList;
            invokevirtual com.google.common.base.Joiner.join:(Ljava/lang/Iterable;)Ljava/lang/String;
            astore 4 /* ancestorName */
        start local 4 // java.lang.String ancestorName
         4: .line 171
            aload 1 /* desiredType */
            getstatic com.google.thirdparty.publicsuffix.PublicSuffixPatterns.EXACT:Lcom/google/common/collect/ImmutableMap;
            aload 4 /* ancestorName */
            invokevirtual com.google.common.collect.ImmutableMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.google.thirdparty.publicsuffix.PublicSuffixType
            invokestatic com.google.common.base.Optional.fromNullable:(Ljava/lang/Object;)Lcom/google/common/base/Optional;
         5: .line 170
            invokestatic com.google.common.net.InternetDomainName.matchesType:(Lcom/google/common/base/Optional;Lcom/google/common/base/Optional;)Z
         6: .line 171
            ifeq 8
         7: .line 172
            iload 3 /* i */
            ireturn
         8: .line 178
      StackMap locals: java.lang.String
      StackMap stack:
            getstatic com.google.thirdparty.publicsuffix.PublicSuffixPatterns.EXCLUDED:Lcom/google/common/collect/ImmutableMap;
            aload 4 /* ancestorName */
            invokevirtual com.google.common.collect.ImmutableMap.containsKey:(Ljava/lang/Object;)Z
            ifeq 10
         9: .line 179
            iload 3 /* i */
            iconst_1
            iadd
            ireturn
        10: .line 182
      StackMap locals:
      StackMap stack:
            aload 1 /* desiredType */
            aload 4 /* ancestorName */
            invokestatic com.google.common.net.InternetDomainName.matchesWildcardSuffixType:(Lcom/google/common/base/Optional;Ljava/lang/String;)Z
            ifeq 12
        11: .line 183
            iload 3 /* i */
            ireturn
        end local 4 // java.lang.String ancestorName
        12: .line 167
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 3 /* i */
            iload 2 /* partsSize */
            if_icmplt 3
        end local 3 // int i
        14: .line 187
            iconst_m1
            ireturn
        end local 2 // int partsSize
        end local 1 // com.google.common.base.Optional desiredType
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lcom/google/common/net/InternetDomainName;
            0   15     1   desiredType  Lcom/google/common/base/Optional<Lcom/google/thirdparty/publicsuffix/PublicSuffixType;>;
            1   15     2     partsSize  I
            2   14     3             i  I
            4   12     4  ancestorName  Ljava/lang/String;
    Signature: (Lcom/google/common/base/Optional<Lcom/google/thirdparty/publicsuffix/PublicSuffixType;>;)I
    MethodParameters:
             Name  Flags
      desiredType  

  public static com.google.common.net.InternetDomainName from(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/google/common/net/InternetDomainName;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String domain
         0: .line 210
            new com.google.common.net.InternetDomainName
            dup
            aload 0 /* domain */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokespecial com.google.common.net.InternetDomainName.<init>:(Ljava/lang/String;)V
            areturn
        end local 0 // java.lang.String domain
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  domain  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      domain  

  private static boolean validateSyntax(java.util.List<java.lang.String>);
    descriptor: (Ljava/util/List;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.util.List parts
         0: .line 220
            aload 0 /* parts */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            istore 1 /* lastIndex */
        start local 1 // int lastIndex
         1: .line 224
            aload 0 /* parts */
            iload 1 /* lastIndex */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            iconst_1
            invokestatic com.google.common.net.InternetDomainName.validatePart:(Ljava/lang/String;Z)Z
            ifne 3
         2: .line 225
            iconst_0
            ireturn
         3: .line 228
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 9
         5: .line 229
      StackMap locals: int
      StackMap stack:
            aload 0 /* parts */
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* part */
        start local 3 // java.lang.String part
         6: .line 230
            aload 3 /* part */
            iconst_0
            invokestatic com.google.common.net.InternetDomainName.validatePart:(Ljava/lang/String;Z)Z
            ifne 8
         7: .line 231
            iconst_0
            ireturn
        end local 3 // java.lang.String part
         8: .line 228
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 2 /* i */
            iload 1 /* lastIndex */
            if_icmplt 5
        end local 2 // int i
        10: .line 235
            iconst_1
            ireturn
        end local 1 // int lastIndex
        end local 0 // java.util.List parts
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0      parts  Ljava/util/List<Ljava/lang/String;>;
            1   11     1  lastIndex  I
            4   10     2          i  I
            6    8     3       part  Ljava/lang/String;
    Signature: (Ljava/util/List<Ljava/lang/String;>;)Z
    MethodParameters:
       Name  Flags
      parts  

  private static boolean validatePart(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.lang.String part
        start local 1 // boolean isFinalPart
         0: .line 256
            aload 0 /* part */
            invokevirtual java.lang.String.length:()I
            iconst_1
            if_icmplt 1
            aload 0 /* part */
            invokevirtual java.lang.String.length:()I
            bipush 63
            if_icmple 2
         1: .line 257
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 270
      StackMap locals:
      StackMap stack:
            invokestatic com.google.common.base.CharMatcher.ascii:()Lcom/google/common/base/CharMatcher;
            aload 0 /* part */
            invokevirtual com.google.common.base.CharMatcher.retainFrom:(Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 2 /* asciiChars */
        start local 2 // java.lang.String asciiChars
         3: .line 272
            getstatic com.google.common.net.InternetDomainName.PART_CHAR_MATCHER:Lcom/google/common/base/CharMatcher;
            aload 2 /* asciiChars */
            invokevirtual com.google.common.base.CharMatcher.matchesAllOf:(Ljava/lang/CharSequence;)Z
            ifne 5
         4: .line 273
            iconst_0
            ireturn
         5: .line 278
      StackMap locals: java.lang.String
      StackMap stack:
            getstatic com.google.common.net.InternetDomainName.DASH_MATCHER:Lcom/google/common/base/CharMatcher;
            aload 0 /* part */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            invokevirtual com.google.common.base.CharMatcher.matches:(C)Z
            ifne 7
         6: .line 279
            getstatic com.google.common.net.InternetDomainName.DASH_MATCHER:Lcom/google/common/base/CharMatcher;
            aload 0 /* part */
            aload 0 /* part */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            invokevirtual com.google.common.base.CharMatcher.matches:(C)Z
            ifeq 8
         7: .line 280
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         8: .line 290
      StackMap locals:
      StackMap stack:
            iload 1 /* isFinalPart */
            ifeq 10
            invokestatic com.google.common.base.CharMatcher.digit:()Lcom/google/common/base/CharMatcher;
            aload 0 /* part */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            invokevirtual com.google.common.base.CharMatcher.matches:(C)Z
            ifeq 10
         9: .line 291
            iconst_0
            ireturn
        10: .line 294
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // java.lang.String asciiChars
        end local 1 // boolean isFinalPart
        end local 0 // java.lang.String part
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0         part  Ljava/lang/String;
            0   11     1  isFinalPart  Z
            3   11     2   asciiChars  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      part         
      isFinalPart  

  public com.google.common.collect.ImmutableList<java.lang.String> parts();
    descriptor: ()Lcom/google/common/collect/ImmutableList;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 303
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.parts:Lcom/google/common/collect/ImmutableList;
            areturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/net/InternetDomainName;
    Signature: ()Lcom/google/common/collect/ImmutableList<Ljava/lang/String;>;

  public boolean isPublicSuffix();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 327
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.publicSuffixIndex:I
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/net/InternetDomainName;

  public boolean hasPublicSuffix();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 343
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.publicSuffixIndex:I
            iconst_m1
            if_icmpeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/net/InternetDomainName;

  public com.google.common.net.InternetDomainName publicSuffix();
    descriptor: ()Lcom/google/common/net/InternetDomainName;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 353
            aload 0 /* this */
            invokevirtual com.google.common.net.InternetDomainName.hasPublicSuffix:()Z
            ifeq 1
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.publicSuffixIndex:I
            invokevirtual com.google.common.net.InternetDomainName.ancestor:(I)Lcom/google/common/net/InternetDomainName;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: com.google.common.net.InternetDomainName
         2: areturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/common/net/InternetDomainName;

  public boolean isUnderPublicSuffix();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 369
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.publicSuffixIndex:I
            ifle 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/net/InternetDomainName;

  public boolean isTopPrivateDomain();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 385
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.publicSuffixIndex:I
            iconst_1
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/net/InternetDomainName;

  public com.google.common.net.InternetDomainName topPrivateDomain();
    descriptor: ()Lcom/google/common/net/InternetDomainName;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 405
            aload 0 /* this */
            invokevirtual com.google.common.net.InternetDomainName.isTopPrivateDomain:()Z
            ifeq 2
         1: .line 406
            aload 0 /* this */
            areturn
         2: .line 408
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.common.net.InternetDomainName.isUnderPublicSuffix:()Z
            ldc "Not under a public suffix: %s"
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.name:Ljava/lang/String;
            invokestatic com.google.common.base.Preconditions.checkState:(ZLjava/lang/String;Ljava/lang/Object;)V
         3: .line 409
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.publicSuffixIndex:I
            iconst_1
            isub
            invokevirtual com.google.common.net.InternetDomainName.ancestor:(I)Lcom/google/common/net/InternetDomainName;
            areturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/google/common/net/InternetDomainName;

  public boolean isRegistrySuffix();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 436
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.registrySuffixIndex:I
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/net/InternetDomainName;

  public boolean hasRegistrySuffix();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 451
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.registrySuffixIndex:I
            iconst_m1
            if_icmpeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/net/InternetDomainName;

  public com.google.common.net.InternetDomainName registrySuffix();
    descriptor: ()Lcom/google/common/net/InternetDomainName;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 461
            aload 0 /* this */
            invokevirtual com.google.common.net.InternetDomainName.hasRegistrySuffix:()Z
            ifeq 1
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.registrySuffixIndex:I
            invokevirtual com.google.common.net.InternetDomainName.ancestor:(I)Lcom/google/common/net/InternetDomainName;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: com.google.common.net.InternetDomainName
         2: areturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/common/net/InternetDomainName;

  public boolean isUnderRegistrySuffix();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 473
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.registrySuffixIndex:I
            ifle 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/net/InternetDomainName;

  public boolean isTopDomainUnderRegistrySuffix();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 488
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.registrySuffixIndex:I
            iconst_1
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/net/InternetDomainName;

  public com.google.common.net.InternetDomainName topDomainUnderRegistrySuffix();
    descriptor: ()Lcom/google/common/net/InternetDomainName;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 507
            aload 0 /* this */
            invokevirtual com.google.common.net.InternetDomainName.isTopDomainUnderRegistrySuffix:()Z
            ifeq 2
         1: .line 508
            aload 0 /* this */
            areturn
         2: .line 510
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.common.net.InternetDomainName.isUnderRegistrySuffix:()Z
            ldc "Not under a registry suffix: %s"
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.name:Ljava/lang/String;
            invokestatic com.google.common.base.Preconditions.checkState:(ZLjava/lang/String;Ljava/lang/Object;)V
         3: .line 511
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.registrySuffixIndex:I
            iconst_1
            isub
            invokevirtual com.google.common.net.InternetDomainName.ancestor:(I)Lcom/google/common/net/InternetDomainName;
            areturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/google/common/net/InternetDomainName;

  public boolean hasParent();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 516
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.parts:Lcom/google/common/collect/ImmutableList;
            invokevirtual com.google.common.collect.ImmutableList.size:()I
            iconst_1
            if_icmple 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/net/InternetDomainName;

  public com.google.common.net.InternetDomainName parent();
    descriptor: ()Lcom/google/common/net/InternetDomainName;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 527
            aload 0 /* this */
            invokevirtual com.google.common.net.InternetDomainName.hasParent:()Z
            ldc "Domain '%s' has no parent"
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.name:Ljava/lang/String;
            invokestatic com.google.common.base.Preconditions.checkState:(ZLjava/lang/String;Ljava/lang/Object;)V
         1: .line 528
            aload 0 /* this */
            iconst_1
            invokevirtual com.google.common.net.InternetDomainName.ancestor:(I)Lcom/google/common/net/InternetDomainName;
            areturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/net/InternetDomainName;

  private com.google.common.net.InternetDomainName ancestor(int);
    descriptor: (I)Lcom/google/common/net/InternetDomainName;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.common.net.InternetDomainName this
        start local 1 // int levels
         0: .line 539
            getstatic com.google.common.net.InternetDomainName.DOT_JOINER:Lcom/google/common/base/Joiner;
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.parts:Lcom/google/common/collect/ImmutableList;
            iload 1 /* levels */
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.parts:Lcom/google/common/collect/ImmutableList;
            invokevirtual com.google.common.collect.ImmutableList.size:()I
            invokevirtual com.google.common.collect.ImmutableList.subList:(II)Lcom/google/common/collect/ImmutableList;
            invokevirtual com.google.common.base.Joiner.join:(Ljava/lang/Iterable;)Ljava/lang/String;
            invokestatic com.google.common.net.InternetDomainName.from:(Ljava/lang/String;)Lcom/google/common/net/InternetDomainName;
            areturn
        end local 1 // int levels
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/google/common/net/InternetDomainName;
            0    1     1  levels  I
    MethodParameters:
        Name  Flags
      levels  

  public com.google.common.net.InternetDomainName child(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/google/common/net/InternetDomainName;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.google.common.net.InternetDomainName this
        start local 1 // java.lang.String leftParts
         0: .line 552
            new java.lang.StringBuilder
            dup
            aload 1 /* leftParts */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic com.google.common.net.InternetDomainName.from:(Ljava/lang/String;)Lcom/google/common/net/InternetDomainName;
            areturn
        end local 1 // java.lang.String leftParts
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/google/common/net/InternetDomainName;
            0    1     1  leftParts  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      leftParts  

  public static boolean isValid(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String name
         0: .line 580
            aload 0 /* name */
            invokestatic com.google.common.net.InternetDomainName.from:(Ljava/lang/String;)Lcom/google/common/net/InternetDomainName;
            pop
         1: .line 581
            iconst_1
            ireturn
         2: .line 582
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            pop
         3: .line 583
            iconst_0
            ireturn
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  name  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.IllegalArgumentException
    MethodParameters:
      Name  Flags
      name  

  private static boolean matchesWildcardSuffixType(com.google.common.base.Optional<com.google.thirdparty.publicsuffix.PublicSuffixType>, java.lang.String);
    descriptor: (Lcom/google/common/base/Optional;Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.google.common.base.Optional desiredType
        start local 1 // java.lang.String domain
         0: .line 593
            getstatic com.google.common.net.InternetDomainName.DOT_SPLITTER:Lcom/google/common/base/Splitter;
            iconst_2
            invokevirtual com.google.common.base.Splitter.limit:(I)Lcom/google/common/base/Splitter;
            aload 1 /* domain */
            invokevirtual com.google.common.base.Splitter.splitToList:(Ljava/lang/CharSequence;)Ljava/util/List;
            astore 2 /* pieces */
        start local 2 // java.util.List pieces
         1: .line 594
            aload 2 /* pieces */
            invokeinterface java.util.List.size:()I
            iconst_2
            if_icmpne 6
         2: .line 596
            aload 0 /* desiredType */
            getstatic com.google.thirdparty.publicsuffix.PublicSuffixPatterns.UNDER:Lcom/google/common/collect/ImmutableMap;
            aload 2 /* pieces */
            iconst_1
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokevirtual com.google.common.collect.ImmutableMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.google.thirdparty.publicsuffix.PublicSuffixType
            invokestatic com.google.common.base.Optional.fromNullable:(Ljava/lang/Object;)Lcom/google/common/base/Optional;
         3: .line 595
            invokestatic com.google.common.net.InternetDomainName.matchesType:(Lcom/google/common/base/Optional;Lcom/google/common/base/Optional;)Z
         4: .line 596
            ifeq 6
         5: .line 594
            iconst_1
            ireturn
      StackMap locals: java.util.List
      StackMap stack:
         6: iconst_0
            ireturn
        end local 2 // java.util.List pieces
        end local 1 // java.lang.String domain
        end local 0 // com.google.common.base.Optional desiredType
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0  desiredType  Lcom/google/common/base/Optional<Lcom/google/thirdparty/publicsuffix/PublicSuffixType;>;
            0    7     1       domain  Ljava/lang/String;
            1    7     2       pieces  Ljava/util/List<Ljava/lang/String;>;
    Signature: (Lcom/google/common/base/Optional<Lcom/google/thirdparty/publicsuffix/PublicSuffixType;>;Ljava/lang/String;)Z
    MethodParameters:
             Name  Flags
      desiredType  
      domain       

  private static boolean matchesType(com.google.common.base.Optional<com.google.thirdparty.publicsuffix.PublicSuffixType>, com.google.common.base.Optional<com.google.thirdparty.publicsuffix.PublicSuffixType>);
    descriptor: (Lcom/google/common/base/Optional;Lcom/google/common/base/Optional;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.base.Optional desiredType
        start local 1 // com.google.common.base.Optional actualType
         0: .line 605
            aload 0 /* desiredType */
            invokevirtual com.google.common.base.Optional.isPresent:()Z
            ifeq 1
            aload 0 /* desiredType */
            aload 1 /* actualType */
            invokevirtual com.google.common.base.Optional.equals:(Ljava/lang/Object;)Z
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* actualType */
            invokevirtual com.google.common.base.Optional.isPresent:()Z
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 1 // com.google.common.base.Optional actualType
        end local 0 // com.google.common.base.Optional desiredType
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0  desiredType  Lcom/google/common/base/Optional<Lcom/google/thirdparty/publicsuffix/PublicSuffixType;>;
            0    3     1   actualType  Lcom/google/common/base/Optional<Lcom/google/thirdparty/publicsuffix/PublicSuffixType;>;
    Signature: (Lcom/google/common/base/Optional<Lcom/google/thirdparty/publicsuffix/PublicSuffixType;>;Lcom/google/common/base/Optional<Lcom/google/thirdparty/publicsuffix/PublicSuffixType;>;)Z
    MethodParameters:
             Name  Flags
      desiredType  
      actualType   

  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.google.common.net.InternetDomainName this
         0: .line 611
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.name:Ljava/lang/String;
            areturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/net/InternetDomainName;

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.google.common.net.InternetDomainName this
        start local 1 // java.lang.Object object
         0: .line 621
            aload 1 /* object */
            aload 0 /* this */
            if_acmpne 2
         1: .line 622
            iconst_1
            ireturn
         2: .line 625
      StackMap locals:
      StackMap stack:
            aload 1 /* object */
            instanceof com.google.common.net.InternetDomainName
            ifeq 5
         3: .line 626
            aload 1 /* object */
            checkcast com.google.common.net.InternetDomainName
            astore 2 /* that */
        start local 2 // com.google.common.net.InternetDomainName that
         4: .line 627
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.name:Ljava/lang/String;
            aload 2 /* that */
            getfield com.google.common.net.InternetDomainName.name:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 2 // com.google.common.net.InternetDomainName that
         5: .line 630
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.Object object
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lcom/google/common/net/InternetDomainName;
            0    6     1  object  Ljava/lang/Object;
            4    5     2    that  Lcom/google/common/net/InternetDomainName;
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
        Name  Flags
      object  

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.net.InternetDomainName this
         0: .line 635
            aload 0 /* this */
            getfield com.google.common.net.InternetDomainName.name:Ljava/lang/String;
            invokevirtual java.lang.String.hashCode:()I
            ireturn
        end local 0 // com.google.common.net.InternetDomainName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/net/InternetDomainName;
}
SourceFile: "InternetDomainName.java"
    RuntimeVisibleAnnotations: 
      com.google.errorprone.annotations.Immutable()
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
      com.google.common.annotations.GwtCompatible()