public final class com.google.common.hash.Hashing
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.google.common.hash.Hashing
  super_class: java.lang.Object
{
  static final int GOOD_FAST_HASH_SEED;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 90
            invokestatic java.lang.System.currentTimeMillis:()J
            l2i
            putstatic com.google.common.hash.Hashing.GOOD_FAST_HASH_SEED:I
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.hash.HashFunction goodFastHash(int);
    descriptor: (I)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // int minimumBits
         0: .line 65
            iload 0 /* minimumBits */
            invokestatic com.google.common.hash.Hashing.checkPositiveAndMakeMultipleOf32:(I)I
            istore 1 /* bits */
        start local 1 // int bits
         1: .line 67
            iload 1 /* bits */
            bipush 32
            if_icmpne 3
         2: .line 68
            getstatic com.google.common.hash.Murmur3_32HashFunction.GOOD_FAST_HASH_32:Lcom/google/common/hash/HashFunction;
            areturn
         3: .line 70
      StackMap locals: int
      StackMap stack:
            iload 1 /* bits */
            sipush 128
            if_icmpgt 5
         4: .line 71
            getstatic com.google.common.hash.Murmur3_128HashFunction.GOOD_FAST_HASH_128:Lcom/google/common/hash/HashFunction;
            areturn
         5: .line 75
      StackMap locals:
      StackMap stack:
            iload 1 /* bits */
            bipush 127
            iadd
            sipush 128
            idiv
            istore 2 /* hashFunctionsNeeded */
        start local 2 // int hashFunctionsNeeded
         6: .line 76
            iload 2 /* hashFunctionsNeeded */
            anewarray com.google.common.hash.HashFunction
            astore 3 /* hashFunctions */
        start local 3 // com.google.common.hash.HashFunction[] hashFunctions
         7: .line 77
            aload 3 /* hashFunctions */
            iconst_0
            getstatic com.google.common.hash.Murmur3_128HashFunction.GOOD_FAST_HASH_128:Lcom/google/common/hash/HashFunction;
            aastore
         8: .line 78
            getstatic com.google.common.hash.Hashing.GOOD_FAST_HASH_SEED:I
            istore 4 /* seed */
        start local 4 // int seed
         9: .line 79
            iconst_1
            istore 5 /* i */
        start local 5 // int i
        10: goto 14
        11: .line 80
      StackMap locals: int int int com.google.common.hash.HashFunction[] int int
      StackMap stack:
            iload 4 /* seed */
            ldc 1500450271
            iadd
            istore 4 /* seed */
        12: .line 81
            aload 3 /* hashFunctions */
            iload 5 /* i */
            iload 4 /* seed */
            invokestatic com.google.common.hash.Hashing.murmur3_128:(I)Lcom/google/common/hash/HashFunction;
            aastore
        13: .line 79
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 5 /* i */
            iload 2 /* hashFunctionsNeeded */
            if_icmplt 11
        end local 5 // int i
        15: .line 83
            new com.google.common.hash.Hashing$ConcatenatedHashFunction
            dup
            aload 3 /* hashFunctions */
            invokespecial com.google.common.hash.Hashing$ConcatenatedHashFunction.<init>:([Lcom/google/common/hash/HashFunction;)V
            areturn
        end local 4 // int seed
        end local 3 // com.google.common.hash.HashFunction[] hashFunctions
        end local 2 // int hashFunctionsNeeded
        end local 1 // int bits
        end local 0 // int minimumBits
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   16     0          minimumBits  I
            1   16     1                 bits  I
            6   16     2  hashFunctionsNeeded  I
            7   16     3        hashFunctions  [Lcom/google/common/hash/HashFunction;
            9   16     4                 seed  I
           10   15     5                    i  I
    MethodParameters:
             Name  Flags
      minimumBits  

  public static com.google.common.hash.HashFunction murmur3_32(int);
    descriptor: (I)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int seed
         0: .line 100
            new com.google.common.hash.Murmur3_32HashFunction
            dup
            iload 0 /* seed */
            invokespecial com.google.common.hash.Murmur3_32HashFunction.<init>:(I)V
            areturn
        end local 0 // int seed
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  seed  I
    MethodParameters:
      Name  Flags
      seed  

  public static com.google.common.hash.HashFunction murmur3_32();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 111
            getstatic com.google.common.hash.Murmur3_32HashFunction.MURMUR3_32:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.hash.HashFunction murmur3_128(int);
    descriptor: (I)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int seed
         0: .line 122
            new com.google.common.hash.Murmur3_128HashFunction
            dup
            iload 0 /* seed */
            invokespecial com.google.common.hash.Murmur3_128HashFunction.<init>:(I)V
            areturn
        end local 0 // int seed
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  seed  I
    MethodParameters:
      Name  Flags
      seed  

  public static com.google.common.hash.HashFunction murmur3_128();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 133
            getstatic com.google.common.hash.Murmur3_128HashFunction.MURMUR3_128:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.hash.HashFunction sipHash24();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 143
            getstatic com.google.common.hash.SipHashFunction.SIP_HASH_24:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.hash.HashFunction sipHash24(long, long);
    descriptor: (JJ)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=4, args_size=2
        start local 0 // long k0
        start local 2 // long k1
         0: .line 153
            new com.google.common.hash.SipHashFunction
            dup
            iconst_2
            iconst_4
            lload 0 /* k0 */
            lload 2 /* k1 */
            invokespecial com.google.common.hash.SipHashFunction.<init>:(IIJJ)V
            areturn
        end local 2 // long k1
        end local 0 // long k0
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    k0  J
            0    1     2    k1  J
    MethodParameters:
      Name  Flags
      k0    
      k1    

  public static com.google.common.hash.HashFunction md5();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 170
            getstatic com.google.common.hash.Hashing$Md5Holder.MD5:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public static com.google.common.hash.HashFunction sha1();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 191
            getstatic com.google.common.hash.Hashing$Sha1Holder.SHA_1:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public static com.google.common.hash.HashFunction sha256();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 200
            getstatic com.google.common.hash.Hashing$Sha256Holder.SHA_256:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.hash.HashFunction sha384();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 214
            getstatic com.google.common.hash.Hashing$Sha384Holder.SHA_384:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.hash.HashFunction sha512();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 224
            getstatic com.google.common.hash.Hashing$Sha512Holder.SHA_512:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.hash.HashFunction hmacMd5(java.security.Key);
    descriptor: (Ljava/security/Key;)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // java.security.Key key
         0: .line 242
            new com.google.common.hash.MacHashFunction
            dup
            ldc "HmacMD5"
            aload 0 /* key */
            ldc "hmacMd5"
            aload 0 /* key */
            invokestatic com.google.common.hash.Hashing.hmacToString:(Ljava/lang/String;Ljava/security/Key;)Ljava/lang/String;
            invokespecial com.google.common.hash.MacHashFunction.<init>:(Ljava/lang/String;Ljava/security/Key;Ljava/lang/String;)V
            areturn
        end local 0 // java.security.Key key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  Ljava/security/Key;
    MethodParameters:
      Name  Flags
      key   

  public static com.google.common.hash.HashFunction hmacMd5(byte[]);
    descriptor: ([B)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // byte[] key
         0: .line 255
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 0 /* key */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast byte[]
            ldc "HmacMD5"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            invokestatic com.google.common.hash.Hashing.hmacMd5:(Ljava/security/Key;)Lcom/google/common/hash/HashFunction;
            areturn
        end local 0 // byte[] key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  [B
    MethodParameters:
      Name  Flags
      key   

  public static com.google.common.hash.HashFunction hmacSha1(java.security.Key);
    descriptor: (Ljava/security/Key;)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // java.security.Key key
         0: .line 268
            new com.google.common.hash.MacHashFunction
            dup
            ldc "HmacSHA1"
            aload 0 /* key */
            ldc "hmacSha1"
            aload 0 /* key */
            invokestatic com.google.common.hash.Hashing.hmacToString:(Ljava/lang/String;Ljava/security/Key;)Ljava/lang/String;
            invokespecial com.google.common.hash.MacHashFunction.<init>:(Ljava/lang/String;Ljava/security/Key;Ljava/lang/String;)V
            areturn
        end local 0 // java.security.Key key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  Ljava/security/Key;
    MethodParameters:
      Name  Flags
      key   

  public static com.google.common.hash.HashFunction hmacSha1(byte[]);
    descriptor: ([B)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // byte[] key
         0: .line 281
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 0 /* key */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast byte[]
            ldc "HmacSHA1"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            invokestatic com.google.common.hash.Hashing.hmacSha1:(Ljava/security/Key;)Lcom/google/common/hash/HashFunction;
            areturn
        end local 0 // byte[] key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  [B
    MethodParameters:
      Name  Flags
      key   

  public static com.google.common.hash.HashFunction hmacSha256(java.security.Key);
    descriptor: (Ljava/security/Key;)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // java.security.Key key
         0: .line 294
            new com.google.common.hash.MacHashFunction
            dup
            ldc "HmacSHA256"
            aload 0 /* key */
            ldc "hmacSha256"
            aload 0 /* key */
            invokestatic com.google.common.hash.Hashing.hmacToString:(Ljava/lang/String;Ljava/security/Key;)Ljava/lang/String;
            invokespecial com.google.common.hash.MacHashFunction.<init>:(Ljava/lang/String;Ljava/security/Key;Ljava/lang/String;)V
            areturn
        end local 0 // java.security.Key key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  Ljava/security/Key;
    MethodParameters:
      Name  Flags
      key   

  public static com.google.common.hash.HashFunction hmacSha256(byte[]);
    descriptor: ([B)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // byte[] key
         0: .line 307
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 0 /* key */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast byte[]
            ldc "HmacSHA256"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            invokestatic com.google.common.hash.Hashing.hmacSha256:(Ljava/security/Key;)Lcom/google/common/hash/HashFunction;
            areturn
        end local 0 // byte[] key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  [B
    MethodParameters:
      Name  Flags
      key   

  public static com.google.common.hash.HashFunction hmacSha512(java.security.Key);
    descriptor: (Ljava/security/Key;)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // java.security.Key key
         0: .line 320
            new com.google.common.hash.MacHashFunction
            dup
            ldc "HmacSHA512"
            aload 0 /* key */
            ldc "hmacSha512"
            aload 0 /* key */
            invokestatic com.google.common.hash.Hashing.hmacToString:(Ljava/lang/String;Ljava/security/Key;)Ljava/lang/String;
            invokespecial com.google.common.hash.MacHashFunction.<init>:(Ljava/lang/String;Ljava/security/Key;Ljava/lang/String;)V
            areturn
        end local 0 // java.security.Key key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  Ljava/security/Key;
    MethodParameters:
      Name  Flags
      key   

  public static com.google.common.hash.HashFunction hmacSha512(byte[]);
    descriptor: ([B)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // byte[] key
         0: .line 333
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 0 /* key */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast byte[]
            ldc "HmacSHA512"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            invokestatic com.google.common.hash.Hashing.hmacSha512:(Ljava/security/Key;)Lcom/google/common/hash/HashFunction;
            areturn
        end local 0 // byte[] key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  [B
    MethodParameters:
      Name  Flags
      key   

  private static java.lang.String hmacToString(java.lang.String, java.security.Key);
    descriptor: (Ljava/lang/String;Ljava/security/Key;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.lang.String methodName
        start local 1 // java.security.Key key
         0: .line 338
            ldc "Hashing.%s(Key[algorithm=%s, format=%s])"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         1: .line 339
            aload 0 /* methodName */
            aastore
            dup
            iconst_1
            aload 1 /* key */
            invokeinterface java.security.Key.getAlgorithm:()Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 1 /* key */
            invokeinterface java.security.Key.getFormat:()Ljava/lang/String;
            aastore
         2: .line 337
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            areturn
        end local 1 // java.security.Key key
        end local 0 // java.lang.String methodName
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0  methodName  Ljava/lang/String;
            0    3     1         key  Ljava/security/Key;
    MethodParameters:
            Name  Flags
      methodName  
      key         

  public static com.google.common.hash.HashFunction crc32c();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 353
            getstatic com.google.common.hash.Crc32cHashFunction.CRC_32_C:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.hash.HashFunction crc32();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 369
            getstatic com.google.common.hash.Hashing$ChecksumType.CRC_32:Lcom/google/common/hash/Hashing$ChecksumType;
            getfield com.google.common.hash.Hashing$ChecksumType.hashFunction:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.hash.HashFunction adler32();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 385
            getstatic com.google.common.hash.Hashing$ChecksumType.ADLER_32:Lcom/google/common/hash/Hashing$ChecksumType;
            getfield com.google.common.hash.Hashing$ChecksumType.hashFunction:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.hash.HashFunction farmHashFingerprint64();
    descriptor: ()Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 429
            getstatic com.google.common.hash.FarmHashFingerprint64.FARMHASH_FINGERPRINT_64:Lcom/google/common/hash/HashFunction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static int consistentHash(com.google.common.hash.HashCode, int);
    descriptor: (Lcom/google/common/hash/HashCode;I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.google.common.hash.HashCode hashCode
        start local 1 // int buckets
         0: .line 464
            aload 0 /* hashCode */
            invokevirtual com.google.common.hash.HashCode.padToLong:()J
            iload 1 /* buckets */
            invokestatic com.google.common.hash.Hashing.consistentHash:(JI)I
            ireturn
        end local 1 // int buckets
        end local 0 // com.google.common.hash.HashCode hashCode
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  hashCode  Lcom/google/common/hash/HashCode;
            0    1     1   buckets  I
    MethodParameters:
          Name  Flags
      hashCode  
      buckets   

  public static int consistentHash(long, int);
    descriptor: (JI)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // long input
        start local 2 // int buckets
         0: .line 499
            iload 2 /* buckets */
            ifle 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "buckets must be positive: %s"
            iload 2 /* buckets */
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;I)V
         3: .line 500
            new com.google.common.hash.Hashing$LinearCongruentialGenerator
            dup
            lload 0 /* input */
            invokespecial com.google.common.hash.Hashing$LinearCongruentialGenerator.<init>:(J)V
            astore 3 /* generator */
        start local 3 // com.google.common.hash.Hashing$LinearCongruentialGenerator generator
         4: .line 501
            iconst_0
            istore 4 /* candidate */
        start local 4 // int candidate
         5: .line 506
      StackMap locals: com.google.common.hash.Hashing$LinearCongruentialGenerator int
      StackMap stack:
            iload 4 /* candidate */
            iconst_1
            iadd
            i2d
            aload 3 /* generator */
            invokevirtual com.google.common.hash.Hashing$LinearCongruentialGenerator.nextDouble:()D
            ddiv
            d2i
            istore 5 /* next */
        start local 5 // int next
         6: .line 507
            iload 5 /* next */
            iflt 9
            iload 5 /* next */
            iload 2 /* buckets */
            if_icmpge 9
         7: .line 508
            iload 5 /* next */
            istore 4 /* candidate */
         8: .line 509
            goto 5
         9: .line 510
      StackMap locals: int
      StackMap stack:
            iload 4 /* candidate */
            ireturn
        end local 5 // int next
        end local 4 // int candidate
        end local 3 // com.google.common.hash.Hashing$LinearCongruentialGenerator generator
        end local 2 // int buckets
        end local 0 // long input
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0      input  J
            0   10     2    buckets  I
            4   10     3  generator  Lcom/google/common/hash/Hashing$LinearCongruentialGenerator;
            5   10     4  candidate  I
            6   10     5       next  I
    MethodParameters:
         Name  Flags
      input    
      buckets  

  public static com.google.common.hash.HashCode combineOrdered(java.lang.Iterable<com.google.common.hash.HashCode>);
    descriptor: (Ljava/lang/Iterable;)Lcom/google/common/hash/HashCode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // java.lang.Iterable hashCodes
         0: .line 525
            aload 0 /* hashCodes */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 1 /* iterator */
        start local 1 // java.util.Iterator iterator
         1: .line 526
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ldc "Must be at least 1 hash code to combine."
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/Object;)V
         2: .line 527
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.hash.HashCode
            invokevirtual com.google.common.hash.HashCode.bits:()I
            istore 2 /* bits */
        start local 2 // int bits
         3: .line 528
            iload 2 /* bits */
            bipush 8
            idiv
            newarray 8
            astore 3 /* resultBytes */
        start local 3 // byte[] resultBytes
         4: .line 529
            aload 0 /* hashCodes */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 16
      StackMap locals: java.lang.Iterable java.util.Iterator int byte[] top java.util.Iterator
      StackMap stack:
         5: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.hash.HashCode
            astore 4 /* hashCode */
        start local 4 // com.google.common.hash.HashCode hashCode
         6: .line 530
            aload 4 /* hashCode */
            invokevirtual com.google.common.hash.HashCode.asBytes:()[B
            astore 6 /* nextBytes */
        start local 6 // byte[] nextBytes
         7: .line 532
            aload 6 /* nextBytes */
            arraylength
            aload 3 /* resultBytes */
            arraylength
            if_icmpne 8
            iconst_1
            goto 9
      StackMap locals: java.lang.Iterable java.util.Iterator int byte[] com.google.common.hash.HashCode java.util.Iterator byte[]
      StackMap stack:
         8: iconst_0
      StackMap locals:
      StackMap stack: int
         9: ldc "All hashcodes must have the same bit length."
        10: .line 531
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/Object;)V
        11: .line 533
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        12: goto 15
        13: .line 534
      StackMap locals: int
      StackMap stack:
            aload 3 /* resultBytes */
            iload 7 /* i */
            aload 3 /* resultBytes */
            iload 7 /* i */
            baload
            bipush 37
            imul
            aload 6 /* nextBytes */
            iload 7 /* i */
            baload
            ixor
            i2b
            bastore
        14: .line 533
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 7 /* i */
            aload 6 /* nextBytes */
            arraylength
            if_icmplt 13
        end local 7 // int i
        end local 6 // byte[] nextBytes
        end local 4 // com.google.common.hash.HashCode hashCode
        16: .line 529
      StackMap locals: java.lang.Iterable java.util.Iterator int byte[] top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        17: .line 537
            aload 3 /* resultBytes */
            invokestatic com.google.common.hash.HashCode.fromBytesNoCopy:([B)Lcom/google/common/hash/HashCode;
            areturn
        end local 3 // byte[] resultBytes
        end local 2 // int bits
        end local 1 // java.util.Iterator iterator
        end local 0 // java.lang.Iterable hashCodes
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   18     0    hashCodes  Ljava/lang/Iterable<Lcom/google/common/hash/HashCode;>;
            1   18     1     iterator  Ljava/util/Iterator<Lcom/google/common/hash/HashCode;>;
            3   18     2         bits  I
            4   18     3  resultBytes  [B
            6   16     4     hashCode  Lcom/google/common/hash/HashCode;
            7   16     6    nextBytes  [B
           12   16     7            i  I
    Signature: (Ljava/lang/Iterable<Lcom/google/common/hash/HashCode;>;)Lcom/google/common/hash/HashCode;
    MethodParameters:
           Name  Flags
      hashCodes  

  public static com.google.common.hash.HashCode combineUnordered(java.lang.Iterable<com.google.common.hash.HashCode>);
    descriptor: (Ljava/lang/Iterable;)Lcom/google/common/hash/HashCode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // java.lang.Iterable hashCodes
         0: .line 550
            aload 0 /* hashCodes */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 1 /* iterator */
        start local 1 // java.util.Iterator iterator
         1: .line 551
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ldc "Must be at least 1 hash code to combine."
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/Object;)V
         2: .line 552
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.hash.HashCode
            invokevirtual com.google.common.hash.HashCode.bits:()I
            bipush 8
            idiv
            newarray 8
            astore 2 /* resultBytes */
        start local 2 // byte[] resultBytes
         3: .line 553
            aload 0 /* hashCodes */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 4
            goto 15
      StackMap locals: java.lang.Iterable java.util.Iterator byte[] top java.util.Iterator
      StackMap stack:
         4: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.hash.HashCode
            astore 3 /* hashCode */
        start local 3 // com.google.common.hash.HashCode hashCode
         5: .line 554
            aload 3 /* hashCode */
            invokevirtual com.google.common.hash.HashCode.asBytes:()[B
            astore 5 /* nextBytes */
        start local 5 // byte[] nextBytes
         6: .line 556
            aload 5 /* nextBytes */
            arraylength
            aload 2 /* resultBytes */
            arraylength
            if_icmpne 7
            iconst_1
            goto 8
      StackMap locals: java.lang.Iterable java.util.Iterator byte[] com.google.common.hash.HashCode java.util.Iterator byte[]
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: ldc "All hashcodes must have the same bit length."
         9: .line 555
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/Object;)V
        10: .line 557
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        11: goto 14
        12: .line 558
      StackMap locals: int
      StackMap stack:
            aload 2 /* resultBytes */
            iload 6 /* i */
            dup2
            baload
            aload 5 /* nextBytes */
            iload 6 /* i */
            baload
            iadd
            i2b
            bastore
        13: .line 557
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 6 /* i */
            aload 5 /* nextBytes */
            arraylength
            if_icmplt 12
        end local 6 // int i
        end local 5 // byte[] nextBytes
        end local 3 // com.google.common.hash.HashCode hashCode
        15: .line 553
      StackMap locals: java.lang.Iterable java.util.Iterator byte[] top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        16: .line 561
            aload 2 /* resultBytes */
            invokestatic com.google.common.hash.HashCode.fromBytesNoCopy:([B)Lcom/google/common/hash/HashCode;
            areturn
        end local 2 // byte[] resultBytes
        end local 1 // java.util.Iterator iterator
        end local 0 // java.lang.Iterable hashCodes
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0    hashCodes  Ljava/lang/Iterable<Lcom/google/common/hash/HashCode;>;
            1   17     1     iterator  Ljava/util/Iterator<Lcom/google/common/hash/HashCode;>;
            3   17     2  resultBytes  [B
            5   15     3     hashCode  Lcom/google/common/hash/HashCode;
            6   15     5    nextBytes  [B
           11   15     6            i  I
    Signature: (Ljava/lang/Iterable<Lcom/google/common/hash/HashCode;>;)Lcom/google/common/hash/HashCode;
    MethodParameters:
           Name  Flags
      hashCodes  

  static int checkPositiveAndMakeMultipleOf32(int);
    descriptor: (I)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int bits
         0: .line 566
            iload 0 /* bits */
            ifle 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "Number of bits must be positive"
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/Object;)V
         3: .line 567
            iload 0 /* bits */
            bipush 31
            iadd
            bipush -32
            iand
            ireturn
        end local 0 // int bits
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  bits  I
    MethodParameters:
      Name  Flags
      bits  

  public static com.google.common.hash.HashFunction concatenating(com.google.common.hash.HashFunction, com.google.common.hash.HashFunction, com.google.common.hash.HashFunction[]);
    descriptor: (Lcom/google/common/hash/HashFunction;Lcom/google/common/hash/HashFunction;[Lcom/google/common/hash/HashFunction;)Lcom/google/common/hash/HashFunction;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.google.common.hash.HashFunction first
        start local 1 // com.google.common.hash.HashFunction second
        start local 2 // com.google.common.hash.HashFunction[] rest
         0: .line 583
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* list */
        start local 3 // java.util.List list
         1: .line 584
            aload 3 /* list */
            aload 0 /* first */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 585
            aload 3 /* list */
            aload 1 /* second */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 586
            aload 3 /* list */
            aload 2 /* rest */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         4: .line 587
            new com.google.common.hash.Hashing$ConcatenatedHashFunction
            dup
            aload 3 /* list */
            iconst_0
            anewarray com.google.common.hash.HashFunction
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast com.google.common.hash.HashFunction[]
            invokespecial com.google.common.hash.Hashing$ConcatenatedHashFunction.<init>:([Lcom/google/common/hash/HashFunction;)V
            areturn
        end local 3 // java.util.List list
        end local 2 // com.google.common.hash.HashFunction[] rest
        end local 1 // com.google.common.hash.HashFunction second
        end local 0 // com.google.common.hash.HashFunction first
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0   first  Lcom/google/common/hash/HashFunction;
            0    5     1  second  Lcom/google/common/hash/HashFunction;
            0    5     2    rest  [Lcom/google/common/hash/HashFunction;
            1    5     3    list  Ljava/util/List<Lcom/google/common/hash/HashFunction;>;
    MethodParameters:
        Name  Flags
      first   
      second  
      rest    

  public static com.google.common.hash.HashFunction concatenating(java.lang.Iterable<com.google.common.hash.HashFunction>);
    descriptor: (Ljava/lang/Iterable;)Lcom/google/common/hash/HashFunction;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // java.lang.Iterable hashFunctions
         0: .line 601
            aload 0 /* hashFunctions */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 603
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* list */
        start local 1 // java.util.List list
         2: .line 604
            aload 0 /* hashFunctions */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: java.lang.Iterable java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.hash.HashFunction
            astore 2 /* hashFunction */
        start local 2 // com.google.common.hash.HashFunction hashFunction
         4: .line 605
            aload 1 /* list */
            aload 2 /* hashFunction */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // com.google.common.hash.HashFunction hashFunction
         5: .line 604
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 607
            aload 1 /* list */
            invokeinterface java.util.List.size:()I
            ifle 7
            iconst_1
            goto 8
      StackMap locals: java.lang.Iterable java.util.List
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: ldc "number of hash functions (%s) must be > 0"
            aload 1 /* list */
            invokeinterface java.util.List.size:()I
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;I)V
         9: .line 608
            new com.google.common.hash.Hashing$ConcatenatedHashFunction
            dup
            aload 1 /* list */
            iconst_0
            anewarray com.google.common.hash.HashFunction
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast com.google.common.hash.HashFunction[]
            invokespecial com.google.common.hash.Hashing$ConcatenatedHashFunction.<init>:([Lcom/google/common/hash/HashFunction;)V
            areturn
        end local 1 // java.util.List list
        end local 0 // java.lang.Iterable hashFunctions
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0  hashFunctions  Ljava/lang/Iterable<Lcom/google/common/hash/HashFunction;>;
            2   10     1           list  Ljava/util/List<Lcom/google/common/hash/HashFunction;>;
            4    5     2   hashFunction  Lcom/google/common/hash/HashFunction;
    Signature: (Ljava/lang/Iterable<Lcom/google/common/hash/HashFunction;>;)Lcom/google/common/hash/HashFunction;
    MethodParameters:
               Name  Flags
      hashFunctions  

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.hash.Hashing this
         0: .line 676
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.common.hash.Hashing this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/hash/Hashing;
}
SourceFile: "Hashing.java"
NestMembers:
  com.google.common.hash.Hashing$ChecksumType  com.google.common.hash.Hashing$ChecksumType$1  com.google.common.hash.Hashing$ChecksumType$2  com.google.common.hash.Hashing$ConcatenatedHashFunction  com.google.common.hash.Hashing$LinearCongruentialGenerator  com.google.common.hash.Hashing$Md5Holder  com.google.common.hash.Hashing$Sha1Holder  com.google.common.hash.Hashing$Sha256Holder  com.google.common.hash.Hashing$Sha384Holder  com.google.common.hash.Hashing$Sha512Holder
InnerClasses:
  abstract ChecksumType = com.google.common.hash.Hashing$ChecksumType of com.google.common.hash.Hashing
  private final ConcatenatedHashFunction = com.google.common.hash.Hashing$ConcatenatedHashFunction of com.google.common.hash.Hashing
  private final LinearCongruentialGenerator = com.google.common.hash.Hashing$LinearCongruentialGenerator of com.google.common.hash.Hashing
  private Md5Holder = com.google.common.hash.Hashing$Md5Holder of com.google.common.hash.Hashing
  private Sha1Holder = com.google.common.hash.Hashing$Sha1Holder of com.google.common.hash.Hashing
  private Sha256Holder = com.google.common.hash.Hashing$Sha256Holder of com.google.common.hash.Hashing
  private Sha384Holder = com.google.common.hash.Hashing$Sha384Holder of com.google.common.hash.Hashing
  private Sha512Holder = com.google.common.hash.Hashing$Sha512Holder of com.google.common.hash.Hashing
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()