abstract class com.google.common.math.LongMath$MillerRabinTester extends java.lang.Enum<com.google.common.math.LongMath$MillerRabinTester>
  minor version: 0
  major version: 59
  flags: flags: (0x4420) ACC_SUPER, ACC_ABSTRACT, ACC_ANNOTATION
  this_class: com.google.common.math.LongMath$MillerRabinTester
  super_class: java.lang.Enum
{
  public static final com.google.common.math.LongMath$MillerRabinTester SMALL;
    descriptor: Lcom/google/common/math/LongMath$MillerRabinTester;
    flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ANNOTATION

  public static final com.google.common.math.LongMath$MillerRabinTester LARGE;
    descriptor: Lcom/google/common/math/LongMath$MillerRabinTester;
    flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ANNOTATION

  private static final com.google.common.math.LongMath$MillerRabinTester[] ENUM$VALUES;
    descriptor: [Lcom/google/common/math/LongMath$MillerRabinTester;
    flags: (0x101a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 1089
            new com.google.common.math.LongMath$MillerRabinTester$1
            dup
            ldc "SMALL"
            iconst_0
            invokespecial com.google.common.math.LongMath$MillerRabinTester$1.<init>:(Ljava/lang/String;I)V
         1: .line 1090
            putstatic com.google.common.math.LongMath$MillerRabinTester.SMALL:Lcom/google/common/math/LongMath$MillerRabinTester;
         2: .line 1107
            new com.google.common.math.LongMath$MillerRabinTester$2
            dup
            ldc "LARGE"
            iconst_1
            invokespecial com.google.common.math.LongMath$MillerRabinTester$2.<init>:(Ljava/lang/String;I)V
         3: .line 1108
            putstatic com.google.common.math.LongMath$MillerRabinTester.LARGE:Lcom/google/common/math/LongMath$MillerRabinTester;
         4: .line 1088
            iconst_2
            anewarray com.google.common.math.LongMath$MillerRabinTester
            dup
            iconst_0
            getstatic com.google.common.math.LongMath$MillerRabinTester.SMALL:Lcom/google/common/math/LongMath$MillerRabinTester;
            aastore
            dup
            iconst_1
            getstatic com.google.common.math.LongMath$MillerRabinTester.LARGE:Lcom/google/common/math/LongMath$MillerRabinTester;
            aastore
            putstatic com.google.common.math.LongMath$MillerRabinTester.ENUM$VALUES:[Lcom/google/common/math/LongMath$MillerRabinTester;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.google.common.math.LongMath$MillerRabinTester this
         0: .line 1088
            aload 0 /* this */
            aload 1
            iload 2
            invokespecial java.lang.Enum.<init>:(Ljava/lang/String;I)V
            return
        end local 0 // com.google.common.math.LongMath$MillerRabinTester this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/math/LongMath$MillerRabinTester;
    MethodParameters:
               Name  Flags
      $enum$name     
      $enum$ordinal  

  static boolean test(long, long);
    descriptor: (JJ)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // long base
        start local 2 // long n
         0: .line 1180
            lload 2 /* n */
            ldc 3037000499
            lcmp
            ifgt 1
            getstatic com.google.common.math.LongMath$MillerRabinTester.SMALL:Lcom/google/common/math/LongMath$MillerRabinTester;
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic com.google.common.math.LongMath$MillerRabinTester.LARGE:Lcom/google/common/math/LongMath$MillerRabinTester;
      StackMap locals:
      StackMap stack: com.google.common.math.LongMath$MillerRabinTester
         2: lload 0 /* base */
            lload 2 /* n */
            invokevirtual com.google.common.math.LongMath$MillerRabinTester.testWitness:(JJ)Z
            ireturn
        end local 2 // long n
        end local 0 // long base
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  base  J
            0    3     2     n  J
    MethodParameters:
      Name  Flags
      base  
      n     

  abstract long mulMod(long, long, long);
    descriptor: (JJJ)J
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      a     
      b     
      m     

  abstract long squareMod(long, long);
    descriptor: (JJ)J
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      a     
      m     

  private long powMod(long, long, long);
    descriptor: (JJJ)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=9, args_size=4
        start local 0 // com.google.common.math.LongMath$MillerRabinTester this
        start local 1 // long a
        start local 3 // long p
        start local 5 // long m
         0: .line 1191
            lconst_1
            lstore 7 /* res */
        start local 7 // long res
         1: .line 1192
            goto 6
         2: .line 1193
      StackMap locals: long
      StackMap stack:
            lload 3 /* p */
            lconst_1
            land
            lconst_0
            lcmp
            ifeq 4
         3: .line 1194
            aload 0 /* this */
            lload 7 /* res */
            lload 1 /* a */
            lload 5 /* m */
            invokevirtual com.google.common.math.LongMath$MillerRabinTester.mulMod:(JJJ)J
            lstore 7 /* res */
         4: .line 1196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 1 /* a */
            lload 5 /* m */
            invokevirtual com.google.common.math.LongMath$MillerRabinTester.squareMod:(JJ)J
            lstore 1 /* a */
         5: .line 1192
            lload 3 /* p */
            iconst_1
            lshr
            lstore 3 /* p */
      StackMap locals:
      StackMap stack:
         6: lload 3 /* p */
            lconst_0
            lcmp
            ifne 2
         7: .line 1198
            lload 7 /* res */
            lreturn
        end local 7 // long res
        end local 5 // long m
        end local 3 // long p
        end local 1 // long a
        end local 0 // com.google.common.math.LongMath$MillerRabinTester this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/google/common/math/LongMath$MillerRabinTester;
            0    8     1     a  J
            0    8     3     p  J
            0    8     5     m  J
            1    8     7   res  J
    MethodParameters:
      Name  Flags
      a     
      p     
      m     

  private boolean testWitness(long, long);
    descriptor: (JJ)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=11, args_size=3
        start local 0 // com.google.common.math.LongMath$MillerRabinTester this
        start local 1 // long base
        start local 3 // long n
         0: .line 1203
            lload 3 /* n */
            lconst_1
            lsub
            invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
            istore 5 /* r */
        start local 5 // int r
         1: .line 1204
            lload 3 /* n */
            lconst_1
            lsub
            iload 5 /* r */
            lshr
            lstore 6 /* d */
        start local 6 // long d
         2: .line 1205
            lload 1 /* base */
            lload 3 /* n */
            lrem
            lstore 1 /* base */
         3: .line 1206
            lload 1 /* base */
            lconst_0
            lcmp
            ifne 5
         4: .line 1207
            iconst_1
            ireturn
         5: .line 1210
      StackMap locals: int long
      StackMap stack:
            aload 0 /* this */
            lload 1 /* base */
            lload 6 /* d */
            lload 3 /* n */
            invokevirtual com.google.common.math.LongMath$MillerRabinTester.powMod:(JJJ)J
            lstore 8 /* a */
        start local 8 // long a
         6: .line 1214
            lload 8 /* a */
            lconst_1
            lcmp
            ifne 8
         7: .line 1215
            iconst_1
            ireturn
         8: .line 1217
      StackMap locals: long
      StackMap stack:
            iconst_0
            istore 10 /* j */
        start local 10 // int j
         9: .line 1218
            goto 13
        10: .line 1219
      StackMap locals: int
      StackMap stack:
            iinc 10 /* j */ 1
            iload 10 /* j */
            iload 5 /* r */
            if_icmpne 12
        11: .line 1220
            iconst_0
            ireturn
        12: .line 1222
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 8 /* a */
            lload 3 /* n */
            invokevirtual com.google.common.math.LongMath$MillerRabinTester.squareMod:(JJ)J
            lstore 8 /* a */
        13: .line 1218
      StackMap locals:
      StackMap stack:
            lload 8 /* a */
            lload 3 /* n */
            lconst_1
            lsub
            lcmp
            ifne 10
        14: .line 1224
            iconst_1
            ireturn
        end local 10 // int j
        end local 8 // long a
        end local 6 // long d
        end local 5 // int r
        end local 3 // long n
        end local 1 // long base
        end local 0 // com.google.common.math.LongMath$MillerRabinTester this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  this  Lcom/google/common/math/LongMath$MillerRabinTester;
            0   15     1  base  J
            0   15     3     n  J
            1   15     5     r  I
            2   15     6     d  J
            6   15     8     a  J
            9   15    10     j  I
    MethodParameters:
      Name  Flags
      base  
      n     

  public static com.google.common.math.LongMath$MillerRabinTester[] values();
    descriptor: ()[Lcom/google/common/math/LongMath$MillerRabinTester;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=0
         0: .line 1
            getstatic com.google.common.math.LongMath$MillerRabinTester.ENUM$VALUES:[Lcom/google/common/math/LongMath$MillerRabinTester;
            dup
            astore 0
            iconst_0
            aload 0
            arraylength
            dup
            istore 1
            anewarray com.google.common.math.LongMath$MillerRabinTester
            dup
            astore 2
            iconst_0
            iload 1
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
            aload 2
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.google.common.math.LongMath$MillerRabinTester valueOf(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/google/common/math/LongMath$MillerRabinTester;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
         0: .line 1
            ldc Lcom/google/common/math/LongMath$MillerRabinTester;
            aload 0
            invokestatic java.lang.Enum.valueOf:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
            checkcast com.google.common.math.LongMath$MillerRabinTester
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
      Name  Flags
      name  
}
Signature: Ljava/lang/Enum<Lcom/google/common/math/LongMath$MillerRabinTester;>;
SourceFile: "LongMath.java"
NestHost: com.google.common.math.LongMath
InnerClasses:
  private abstract MillerRabinTester = com.google.common.math.LongMath$MillerRabinTester of com.google.common.math.LongMath
  com.google.common.math.LongMath$MillerRabinTester$1
  com.google.common.math.LongMath$MillerRabinTester$2