public final class com.google.common.math.IntMath
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.google.common.math.IntMath
  super_class: java.lang.Object
{
  static final int MAX_SIGNED_POWER_OF_TWO;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1073741824
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  static final int MAX_POWER_OF_SQRT2_UNSIGNED;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: -1257966797
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  static final byte[] maxLog10ForLeadingZeros;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  static final int[] powersOf10;
    descriptor: [I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  static final int[] halfPowersOf10;
    descriptor: [I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  static final int FLOOR_SQRT_MAX_INT;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 46340
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  private static final int[] factorials;
    descriptor: [I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static int[] biggestBinomials;
    descriptor: [I
    flags: (0x0008) ACC_STATIC
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  private static volatile int[] $SWITCH_TABLE$java$math$RoundingMode;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 201
            bipush 33
            newarray 8
            dup
            iconst_0
         1: .line 202
            bipush 9
            bastore
            dup
            iconst_1
            bipush 9
            bastore
            dup
            iconst_2
            bipush 9
            bastore
            dup
            iconst_3
            bipush 8
            bastore
            dup
            iconst_4
            bipush 8
            bastore
            dup
            iconst_5
            bipush 8
            bastore
            dup
            bipush 6
            bipush 7
            bastore
            dup
            bipush 7
            bipush 7
            bastore
            dup
            bipush 8
            bipush 7
            bastore
            dup
            bipush 9
            bipush 6
            bastore
            dup
            bipush 10
            bipush 6
            bastore
            dup
            bipush 11
            bipush 6
            bastore
            dup
            bipush 12
            bipush 6
            bastore
            dup
            bipush 13
            iconst_5
            bastore
            dup
            bipush 14
            iconst_5
            bastore
            dup
            bipush 15
            iconst_5
            bastore
            dup
            bipush 16
            iconst_4
            bastore
            dup
            bipush 17
            iconst_4
            bastore
            dup
            bipush 18
            iconst_4
            bastore
            dup
            bipush 19
            iconst_3
            bastore
            dup
            bipush 20
            iconst_3
            bastore
            dup
            bipush 21
            iconst_3
            bastore
            dup
            bipush 22
            iconst_3
            bastore
            dup
            bipush 23
            iconst_2
            bastore
            dup
            bipush 24
            iconst_2
            bastore
            dup
            bipush 25
            iconst_2
            bastore
            dup
            bipush 26
            iconst_1
            bastore
            dup
            bipush 27
            iconst_1
            bastore
            dup
            bipush 28
            iconst_1
            bastore
         2: .line 201
            putstatic com.google.common.math.IntMath.maxLog10ForLeadingZeros:[B
         3: .line 207
            bipush 10
            newarray 10
            dup
            iconst_0
         4: .line 208
            iconst_1
            iastore
            dup
            iconst_1
            bipush 10
            iastore
            dup
            iconst_2
            bipush 100
            iastore
            dup
            iconst_3
            sipush 1000
            iastore
            dup
            iconst_4
            sipush 10000
            iastore
            dup
            iconst_5
            ldc 100000
            iastore
            dup
            bipush 6
            ldc 1000000
            iastore
            dup
            bipush 7
            ldc 10000000
            iastore
            dup
            bipush 8
            ldc 100000000
            iastore
            dup
            bipush 9
            ldc 1000000000
            iastore
         5: .line 207
            putstatic com.google.common.math.IntMath.powersOf10:[I
         6: .line 213
            bipush 10
            newarray 10
            dup
            iconst_0
         7: .line 214
            iconst_3
            iastore
            dup
            iconst_1
            bipush 31
            iastore
            dup
            iconst_2
            sipush 316
            iastore
            dup
            iconst_3
            sipush 3162
            iastore
            dup
            iconst_4
            sipush 31622
            iastore
            dup
            iconst_5
            ldc 316227
            iastore
            dup
            bipush 6
            ldc 3162277
            iastore
            dup
            bipush 7
            ldc 31622776
            iastore
            dup
            bipush 8
            ldc 316227766
            iastore
            dup
            bipush 9
            ldc 2147483647
            iastore
         8: .line 213
            putstatic com.google.common.math.IntMath.halfPowersOf10:[I
         9: .line 627
            bipush 13
            newarray 10
            dup
            iconst_0
        10: .line 628
            iconst_1
            iastore
            dup
            iconst_1
        11: .line 629
            iconst_1
            iastore
            dup
            iconst_2
        12: .line 630
            iconst_2
            iastore
            dup
            iconst_3
        13: .line 631
            bipush 6
            iastore
            dup
            iconst_4
        14: .line 632
            bipush 24
            iastore
            dup
            iconst_5
        15: .line 633
            bipush 120
            iastore
            dup
            bipush 6
        16: .line 634
            sipush 720
            iastore
            dup
            bipush 7
        17: .line 635
            sipush 5040
            iastore
            dup
            bipush 8
        18: .line 636
            ldc 40320
            iastore
            dup
            bipush 9
        19: .line 637
            ldc 362880
            iastore
            dup
            bipush 10
        20: .line 638
            ldc 3628800
            iastore
            dup
            bipush 11
        21: .line 639
            ldc 39916800
            iastore
            dup
            bipush 12
        22: .line 640
            ldc 479001600
            iastore
        23: .line 627
            putstatic com.google.common.math.IntMath.factorials:[I
        24: .line 676
            bipush 17
            newarray 10
            dup
            iconst_0
        25: .line 677
            ldc 2147483647
            iastore
            dup
            iconst_1
        26: .line 678
            ldc 2147483647
            iastore
            dup
            iconst_2
        27: .line 679
            ldc 65536
            iastore
            dup
            iconst_3
        28: .line 680
            sipush 2345
            iastore
            dup
            iconst_4
        29: .line 681
            sipush 477
            iastore
            dup
            iconst_5
        30: .line 682
            sipush 193
            iastore
            dup
            bipush 6
        31: .line 683
            bipush 110
            iastore
            dup
            bipush 7
        32: .line 684
            bipush 75
            iastore
            dup
            bipush 8
        33: .line 685
            bipush 58
            iastore
            dup
            bipush 9
        34: .line 686
            bipush 49
            iastore
            dup
            bipush 10
        35: .line 687
            bipush 43
            iastore
            dup
            bipush 11
        36: .line 688
            bipush 39
            iastore
            dup
            bipush 12
        37: .line 689
            bipush 37
            iastore
            dup
            bipush 13
        38: .line 690
            bipush 35
            iastore
            dup
            bipush 14
        39: .line 691
            bipush 34
            iastore
            dup
            bipush 15
        40: .line 692
            bipush 34
            iastore
            dup
            bipush 16
        41: .line 693
            bipush 33
            iastore
        42: .line 676
            putstatic com.google.common.math.IntMath.biggestBinomials:[I
        43: .line 694
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static int ceilingPowerOfTwo(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // int x
         0: .line 67
            ldc "x"
            iload 0 /* x */
            invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;I)I
            pop
         1: .line 68
            iload 0 /* x */
            ldc 1073741824
            if_icmple 3
         2: .line 69
            new java.lang.ArithmeticException
            dup
            new java.lang.StringBuilder
            dup
            ldc "ceilingPowerOfTwo("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 0 /* x */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ") not representable as an int"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 71
      StackMap locals:
      StackMap stack:
            iconst_1
            iload 0 /* x */
            iconst_1
            isub
            invokestatic java.lang.Integer.numberOfLeadingZeros:(I)I
            ineg
            ishl
            ireturn
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     x  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
    MethodParameters:
      Name  Flags
      x     

  public static int floorPowerOfTwo(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int x
         0: .line 83
            ldc "x"
            iload 0 /* x */
            invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;I)I
            pop
         1: .line 84
            iload 0 /* x */
            invokestatic java.lang.Integer.highestOneBit:(I)I
            ireturn
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     x  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
    MethodParameters:
      Name  Flags
      x     

  public static boolean isPowerOfTwo(int);
    descriptor: (I)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // int x
         0: .line 94
            iload 0 /* x */
            ifle 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: iload 0 /* x */
            iload 0 /* x */
            iconst_1
            isub
            iand
            ifne 3
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack: int
         3: iconst_0
      StackMap locals: int
      StackMap stack: int int
         4: iand
            ireturn
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     x  I
    MethodParameters:
      Name  Flags
      x     

  static int lessThanBranchFree(int, int);
    descriptor: (II)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // int x
        start local 1 // int y
         0: .line 106
            iload 0 /* x */
            iload 1 /* y */
            isub
            iconst_m1
            ixor
            iconst_m1
            ixor
            bipush 31
            iushr
            ireturn
        end local 1 // int y
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  I
            0    1     1     y  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
      Name  Flags
      x     
      y     

  public static int log2(int, java.math.RoundingMode);
    descriptor: (ILjava/math/RoundingMode;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // int x
        start local 1 // java.math.RoundingMode mode
         0: .line 119
            ldc "x"
            iload 0 /* x */
            invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;I)I
            pop
         1: .line 120
            invokestatic com.google.common.math.IntMath.$SWITCH_TABLE$java$math$RoundingMode:()[I
            aload 1 /* mode */
            invokevirtual java.math.RoundingMode.ordinal:()I
            iaload
            tableswitch { // 1 - 8
                    1: 4
                    2: 3
                    3: 4
                    4: 3
                    5: 5
                    6: 5
                    7: 5
                    8: 2
              default: 9
          }
         2: .line 122
      StackMap locals:
      StackMap stack:
            iload 0 /* x */
            invokestatic com.google.common.math.IntMath.isPowerOfTwo:(I)Z
            invokestatic com.google.common.math.MathPreconditions.checkRoundingUnnecessary:(Z)V
         3: .line 126
      StackMap locals:
      StackMap stack:
            bipush 31
            iload 0 /* x */
            invokestatic java.lang.Integer.numberOfLeadingZeros:(I)I
            isub
            ireturn
         4: .line 130
      StackMap locals:
      StackMap stack:
            bipush 32
            iload 0 /* x */
            iconst_1
            isub
            invokestatic java.lang.Integer.numberOfLeadingZeros:(I)I
            isub
            ireturn
         5: .line 136
      StackMap locals:
      StackMap stack:
            iload 0 /* x */
            invokestatic java.lang.Integer.numberOfLeadingZeros:(I)I
            istore 2 /* leadingZeros */
        start local 2 // int leadingZeros
         6: .line 137
            ldc -1257966797
            iload 2 /* leadingZeros */
            iushr
            istore 3 /* cmp */
        start local 3 // int cmp
         7: .line 139
            bipush 31
            iload 2 /* leadingZeros */
            isub
            istore 4 /* logFloor */
        start local 4 // int logFloor
         8: .line 140
            iload 4 /* logFloor */
            iload 3 /* cmp */
            iload 0 /* x */
            invokestatic com.google.common.math.IntMath.lessThanBranchFree:(II)I
            iadd
            ireturn
        end local 4 // int logFloor
        end local 3 // int cmp
        end local 2 // int leadingZeros
         9: .line 143
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 1 // java.math.RoundingMode mode
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0             x  I
            0   10     1          mode  Ljava/math/RoundingMode;
            6    9     2  leadingZeros  I
            7    9     3           cmp  I
            8    9     4      logFloor  I
    MethodParameters:
      Name  Flags
      x     
      mode  

  public static int log10(int, java.math.RoundingMode);
    descriptor: (ILjava/math/RoundingMode;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // int x
        start local 1 // java.math.RoundingMode mode
         0: .line 160
            ldc "x"
            iload 0 /* x */
            invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;I)I
            pop
         1: .line 161
            iload 0 /* x */
            invokestatic com.google.common.math.IntMath.log10Floor:(I)I
            istore 2 /* logFloor */
        start local 2 // int logFloor
         2: .line 162
            getstatic com.google.common.math.IntMath.powersOf10:[I
            iload 2 /* logFloor */
            iaload
            istore 3 /* floorPow */
        start local 3 // int floorPow
         3: .line 163
            invokestatic com.google.common.math.IntMath.$SWITCH_TABLE$java$math$RoundingMode:()[I
            aload 1 /* mode */
            invokevirtual java.math.RoundingMode.ordinal:()I
            iaload
            tableswitch { // 1 - 8
                    1: 8
                    2: 7
                    3: 8
                    4: 7
                    5: 9
                    6: 9
                    7: 9
                    8: 4
              default: 10
          }
         4: .line 165
      StackMap locals: int int
      StackMap stack:
            iload 0 /* x */
            iload 3 /* floorPow */
            if_icmpne 5
            iconst_1
            goto 6
      StackMap locals:
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: invokestatic com.google.common.math.MathPreconditions.checkRoundingUnnecessary:(Z)V
         7: .line 169
      StackMap locals:
      StackMap stack:
            iload 2 /* logFloor */
            ireturn
         8: .line 172
      StackMap locals:
      StackMap stack:
            iload 2 /* logFloor */
            iload 3 /* floorPow */
            iload 0 /* x */
            invokestatic com.google.common.math.IntMath.lessThanBranchFree:(II)I
            iadd
            ireturn
         9: .line 177
      StackMap locals:
      StackMap stack:
            iload 2 /* logFloor */
            getstatic com.google.common.math.IntMath.halfPowersOf10:[I
            iload 2 /* logFloor */
            iaload
            iload 0 /* x */
            invokestatic com.google.common.math.IntMath.lessThanBranchFree:(II)I
            iadd
            ireturn
        10: .line 179
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 3 // int floorPow
        end local 2 // int logFloor
        end local 1 // java.math.RoundingMode mode
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0         x  I
            0   11     1      mode  Ljava/math/RoundingMode;
            2   11     2  logFloor  I
            3   11     3  floorPow  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.GwtIncompatible()
    MethodParameters:
      Name  Flags
      x     
      mode  

  private static int log10Floor(int);
    descriptor: (I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // int x
         0: .line 191
            getstatic com.google.common.math.IntMath.maxLog10ForLeadingZeros:[B
            iload 0 /* x */
            invokestatic java.lang.Integer.numberOfLeadingZeros:(I)I
            baload
            istore 1 /* y */
        start local 1 // int y
         1: .line 196
            iload 1 /* y */
            iload 0 /* x */
            getstatic com.google.common.math.IntMath.powersOf10:[I
            iload 1 /* y */
            iaload
            invokestatic com.google.common.math.IntMath.lessThanBranchFree:(II)I
            isub
            ireturn
        end local 1 // int y
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     x  I
            1    2     1     y  I
    MethodParameters:
      Name  Flags
      x     

  public static int pow(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // int b
        start local 1 // int k
         0: .line 228
            ldc "exponent"
            iload 1 /* k */
            invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
            pop
         1: .line 229
            iload 0 /* b */
            tableswitch { // -2 - 2
                   -2: 12
                   -1: 6
                    0: 2
                    1: 5
                    2: 9
              default: 17
          }
         2: .line 231
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            ifne 3
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: ireturn
         5: .line 233
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         6: .line 235
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            iand
            ifne 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack:
         7: iconst_m1
      StackMap locals:
      StackMap stack: int
         8: ireturn
         9: .line 237
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            bipush 32
            if_icmpge 10
            iconst_1
            iload 1 /* k */
            ishl
            goto 11
      StackMap locals:
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: ireturn
        12: .line 239
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            bipush 32
            if_icmpge 16
        13: .line 240
            iload 1 /* k */
            iconst_1
            iand
            ifne 14
            iconst_1
            iload 1 /* k */
            ishl
            goto 15
      StackMap locals:
      StackMap stack:
        14: iconst_1
            iload 1 /* k */
            ishl
            ineg
      StackMap locals:
      StackMap stack: int
        15: ireturn
        16: .line 242
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        17: .line 247
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 2 /* accum */
        start local 2 // int accum
        18: .line 248
      StackMap locals: int
      StackMap stack:
            iload 1 /* k */
            tableswitch { // 0 - 1
                    0: 19
                    1: 20
              default: 21
          }
        19: .line 250
      StackMap locals:
      StackMap stack:
            iload 2 /* accum */
            ireturn
        20: .line 252
      StackMap locals:
      StackMap stack:
            iload 0 /* b */
            iload 2 /* accum */
            imul
            ireturn
        21: .line 254
      StackMap locals:
      StackMap stack:
            iload 2 /* accum */
            iload 1 /* k */
            iconst_1
            iand
            ifne 22
            iconst_1
            goto 23
      StackMap locals:
      StackMap stack: int
        22: iload 0 /* b */
      StackMap locals: int int int
      StackMap stack: int int
        23: imul
            istore 2 /* accum */
        24: .line 255
            iload 0 /* b */
            iload 0 /* b */
            imul
            istore 0 /* b */
        25: .line 247
            iload 1 /* k */
            iconst_1
            ishr
            istore 1 /* k */
            goto 18
        end local 2 // int accum
        end local 1 // int k
        end local 0 // int b
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   26     0      b  I
            0   26     1      k  I
           18   26     2  accum  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.GwtIncompatible()
    MethodParameters:
      Name  Flags
      b     
      k     

  public static int sqrt(int, java.math.RoundingMode);
    descriptor: (ILjava/math/RoundingMode;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // int x
        start local 1 // java.math.RoundingMode mode
         0: .line 270
            ldc "x"
            iload 0 /* x */
            invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
            pop
         1: .line 271
            iload 0 /* x */
            invokestatic com.google.common.math.IntMath.sqrtFloor:(I)I
            istore 2 /* sqrtFloor */
        start local 2 // int sqrtFloor
         2: .line 272
            invokestatic com.google.common.math.IntMath.$SWITCH_TABLE$java$math$RoundingMode:()[I
            aload 1 /* mode */
            invokevirtual java.math.RoundingMode.ordinal:()I
            iaload
            tableswitch { // 1 - 8
                    1: 7
                    2: 6
                    3: 7
                    4: 6
                    5: 8
                    6: 8
                    7: 8
                    8: 3
              default: 10
          }
         3: .line 274
      StackMap locals: int
      StackMap stack:
            iload 2 /* sqrtFloor */
            iload 2 /* sqrtFloor */
            imul
            iload 0 /* x */
            if_icmpne 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: invokestatic com.google.common.math.MathPreconditions.checkRoundingUnnecessary:(Z)V
         6: .line 277
      StackMap locals:
      StackMap stack:
            iload 2 /* sqrtFloor */
            ireturn
         7: .line 280
      StackMap locals:
      StackMap stack:
            iload 2 /* sqrtFloor */
            iload 2 /* sqrtFloor */
            iload 2 /* sqrtFloor */
            imul
            iload 0 /* x */
            invokestatic com.google.common.math.IntMath.lessThanBranchFree:(II)I
            iadd
            ireturn
         8: .line 284
      StackMap locals:
      StackMap stack:
            iload 2 /* sqrtFloor */
            iload 2 /* sqrtFloor */
            imul
            iload 2 /* sqrtFloor */
            iadd
            istore 3 /* halfSquare */
        start local 3 // int halfSquare
         9: .line 296
            iload 2 /* sqrtFloor */
            iload 3 /* halfSquare */
            iload 0 /* x */
            invokestatic com.google.common.math.IntMath.lessThanBranchFree:(II)I
            iadd
            ireturn
        end local 3 // int halfSquare
        10: .line 298
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 2 // int sqrtFloor
        end local 1 // java.math.RoundingMode mode
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0           x  I
            0   11     1        mode  Ljava/math/RoundingMode;
            2   11     2   sqrtFloor  I
            9   10     3  halfSquare  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.GwtIncompatible()
    MethodParameters:
      Name  Flags
      x     
      mode  

  private static int sqrtFloor(int);
    descriptor: (I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int x
         0: .line 305
            iload 0 /* x */
            i2d
            invokestatic java.lang.Math.sqrt:(D)D
            d2i
            ireturn
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  I
    MethodParameters:
      Name  Flags
      x     

  public static int divide(int, int, java.math.RoundingMode);
    descriptor: (IILjava/math/RoundingMode;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=9, args_size=3
        start local 0 // int p
        start local 1 // int q
        start local 2 // java.math.RoundingMode mode
         0: .line 317
            aload 2 /* mode */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 318
            iload 1 /* q */
            ifne 3
         2: .line 319
            new java.lang.ArithmeticException
            dup
            ldc "/ by zero"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 321
      StackMap locals:
      StackMap stack:
            iload 0 /* p */
            iload 1 /* q */
            idiv
            istore 3 /* div */
        start local 3 // int div
         4: .line 322
            iload 0 /* p */
            iload 1 /* q */
            iload 3 /* div */
            imul
            isub
            istore 4 /* rem */
        start local 4 // int rem
         5: .line 324
            iload 4 /* rem */
            ifne 7
         6: .line 325
            iload 3 /* div */
            ireturn
         7: .line 335
      StackMap locals: int int
      StackMap stack:
            iconst_1
            iload 0 /* p */
            iload 1 /* q */
            ixor
            bipush 31
            ishr
            ior
            istore 5 /* signum */
        start local 5 // int signum
         8: .line 337
            invokestatic com.google.common.math.IntMath.$SWITCH_TABLE$java$math$RoundingMode:()[I
            aload 2 /* mode */
            invokevirtual java.math.RoundingMode.ordinal:()I
            iaload
            tableswitch { // 1 - 8
                    1: 14
                    2: 12
                    3: 16
                    4: 20
                    5: 24
                    6: 24
                    7: 24
                    8: 9
              default: 39
          }
         9: .line 339
      StackMap locals: int
      StackMap stack:
            iload 4 /* rem */
            ifne 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: invokestatic com.google.common.math.MathPreconditions.checkRoundingUnnecessary:(Z)V
        12: .line 342
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* increment */
        start local 6 // boolean increment
        13: .line 343
            goto 40
        end local 6 // boolean increment
        14: .line 345
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 6 /* increment */
        start local 6 // boolean increment
        15: .line 346
            goto 40
        end local 6 // boolean increment
        16: .line 348
      StackMap locals:
      StackMap stack:
            iload 5 /* signum */
            ifle 17
            iconst_1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: istore 6 /* increment */
        start local 6 // boolean increment
        19: .line 349
            goto 40
        end local 6 // boolean increment
        20: .line 351
      StackMap locals:
      StackMap stack:
            iload 5 /* signum */
            ifge 21
            iconst_1
            goto 22
      StackMap locals:
      StackMap stack:
        21: iconst_0
      StackMap locals:
      StackMap stack: int
        22: istore 6 /* increment */
        start local 6 // boolean increment
        23: .line 352
            goto 40
        end local 6 // boolean increment
        24: .line 356
      StackMap locals:
      StackMap stack:
            iload 4 /* rem */
            invokestatic java.lang.Math.abs:(I)I
            istore 7 /* absRem */
        start local 7 // int absRem
        25: .line 357
            iload 7 /* absRem */
            iload 1 /* q */
            invokestatic java.lang.Math.abs:(I)I
            iload 7 /* absRem */
            isub
            isub
            istore 8 /* cmpRemToHalfDivisor */
        start local 8 // int cmpRemToHalfDivisor
        26: .line 360
            iload 8 /* cmpRemToHalfDivisor */
            ifne 35
        27: .line 361
            aload 2 /* mode */
            getstatic java.math.RoundingMode.HALF_UP:Ljava/math/RoundingMode;
            if_acmpeq 32
            aload 2 /* mode */
            getstatic java.math.RoundingMode.HALF_EVEN:Ljava/math/RoundingMode;
            if_acmpne 28
            iconst_1
            goto 29
      StackMap locals: int int java.math.RoundingMode int int int top int int
      StackMap stack:
        28: iconst_0
      StackMap locals:
      StackMap stack: int
        29: iload 3 /* div */
            iconst_1
            iand
            ifeq 30
            iconst_1
            goto 31
      StackMap locals:
      StackMap stack: int
        30: iconst_0
      StackMap locals: int int java.math.RoundingMode int int int top int int
      StackMap stack: int int
        31: iand
            ifne 32
            iconst_0
            goto 33
      StackMap locals:
      StackMap stack:
        32: iconst_1
      StackMap locals:
      StackMap stack: int
        33: istore 6 /* increment */
        start local 6 // boolean increment
        34: .line 362
            goto 40
        end local 6 // boolean increment
        35: .line 363
      StackMap locals:
      StackMap stack:
            iload 8 /* cmpRemToHalfDivisor */
            ifle 36
            iconst_1
            goto 37
      StackMap locals:
      StackMap stack:
        36: iconst_0
      StackMap locals:
      StackMap stack: int
        37: istore 6 /* increment */
        start local 6 // boolean increment
        38: .line 365
            goto 40
        end local 8 // int cmpRemToHalfDivisor
        end local 7 // int absRem
        end local 6 // boolean increment
        39: .line 367
      StackMap locals: int int java.math.RoundingMode int int int
      StackMap stack:
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        start local 6 // boolean increment
        40: .line 369
      StackMap locals: int
      StackMap stack:
            iload 6 /* increment */
            ifeq 41
            iload 3 /* div */
            iload 5 /* signum */
            iadd
            goto 42
      StackMap locals:
      StackMap stack:
        41: iload 3 /* div */
      StackMap locals:
      StackMap stack: int
        42: ireturn
        end local 6 // boolean increment
        end local 5 // int signum
        end local 4 // int rem
        end local 3 // int div
        end local 2 // java.math.RoundingMode mode
        end local 1 // int q
        end local 0 // int p
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   43     0                    p  I
            0   43     1                    q  I
            0   43     2                 mode  Ljava/math/RoundingMode;
            4   43     3                  div  I
            5   43     4                  rem  I
            8   43     5               signum  I
           13   14     6            increment  Z
           15   16     6            increment  Z
           19   20     6            increment  Z
           23   24     6            increment  Z
           34   35     6            increment  Z
           38   39     6            increment  Z
           40   43     6            increment  Z
           25   39     7               absRem  I
           26   39     8  cmpRemToHalfDivisor  I
    MethodParameters:
      Name  Flags
      p     
      q     
      mode  

  public static int mod(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // int x
        start local 1 // int m
         0: .line 391
            iload 1 /* m */
            ifgt 2
         1: .line 392
            new java.lang.ArithmeticException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Modulus "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* m */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " must be > 0"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 394
      StackMap locals:
      StackMap stack:
            iload 0 /* x */
            iload 1 /* m */
            irem
            istore 2 /* result */
        start local 2 // int result
         3: .line 395
            iload 2 /* result */
            iflt 4
            iload 2 /* result */
            goto 5
      StackMap locals: int
      StackMap stack:
         4: iload 2 /* result */
            iload 1 /* m */
            iadd
      StackMap locals:
      StackMap stack: int
         5: ireturn
        end local 2 // int result
        end local 1 // int m
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0       x  I
            0    6     1       m  I
            3    6     2  result  I
    MethodParameters:
      Name  Flags
      x     
      m     

  public static int gcd(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // int a
        start local 1 // int b
         0: .line 410
            ldc "a"
            iload 0 /* a */
            invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
            pop
         1: .line 411
            ldc "b"
            iload 1 /* b */
            invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
            pop
         2: .line 412
            iload 0 /* a */
            ifne 4
         3: .line 415
            iload 1 /* b */
            ireturn
         4: .line 416
      StackMap locals:
      StackMap stack:
            iload 1 /* b */
            ifne 6
         5: .line 417
            iload 0 /* a */
            ireturn
         6: .line 423
      StackMap locals:
      StackMap stack:
            iload 0 /* a */
            invokestatic java.lang.Integer.numberOfTrailingZeros:(I)I
            istore 2 /* aTwos */
        start local 2 // int aTwos
         7: .line 424
            iload 0 /* a */
            iload 2 /* aTwos */
            ishr
            istore 0 /* a */
         8: .line 425
            iload 1 /* b */
            invokestatic java.lang.Integer.numberOfTrailingZeros:(I)I
            istore 3 /* bTwos */
        start local 3 // int bTwos
         9: .line 426
            iload 1 /* b */
            iload 3 /* bTwos */
            ishr
            istore 1 /* b */
        10: .line 427
            goto 16
        11: .line 435
      StackMap locals: int int
      StackMap stack:
            iload 0 /* a */
            iload 1 /* b */
            isub
            istore 4 /* delta */
        start local 4 // int delta
        12: .line 437
            iload 4 /* delta */
            iload 4 /* delta */
            bipush 31
            ishr
            iand
            istore 5 /* minDeltaOrZero */
        start local 5 // int minDeltaOrZero
        13: .line 440
            iload 4 /* delta */
            iload 5 /* minDeltaOrZero */
            isub
            iload 5 /* minDeltaOrZero */
            isub
            istore 0 /* a */
        14: .line 443
            iload 1 /* b */
            iload 5 /* minDeltaOrZero */
            iadd
            istore 1 /* b */
        15: .line 444
            iload 0 /* a */
            iload 0 /* a */
            invokestatic java.lang.Integer.numberOfTrailingZeros:(I)I
            ishr
            istore 0 /* a */
        end local 5 // int minDeltaOrZero
        end local 4 // int delta
        16: .line 427
      StackMap locals:
      StackMap stack:
            iload 0 /* a */
            iload 1 /* b */
            if_icmpne 11
        17: .line 446
            iload 0 /* a */
            iload 2 /* aTwos */
            iload 3 /* bTwos */
            invokestatic java.lang.Math.min:(II)I
            ishl
            ireturn
        end local 3 // int bTwos
        end local 2 // int aTwos
        end local 1 // int b
        end local 0 // int a
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   18     0               a  I
            0   18     1               b  I
            7   18     2           aTwos  I
            9   18     3           bTwos  I
           12   16     4           delta  I
           13   16     5  minDeltaOrZero  I
    MethodParameters:
      Name  Flags
      a     
      b     

  public static int checkedAdd(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // int a
        start local 1 // int b
         0: .line 455
            iload 0 /* a */
            i2l
            iload 1 /* b */
            i2l
            ladd
            lstore 2 /* result */
        start local 2 // long result
         1: .line 456
            lload 2 /* result */
            lload 2 /* result */
            l2i
            i2l
            lcmp
            ifne 2
            iconst_1
            goto 3
      StackMap locals: long
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "checkedAdd"
            iload 0 /* a */
            iload 1 /* b */
            invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;II)V
         4: .line 457
            lload 2 /* result */
            l2i
            ireturn
        end local 2 // long result
        end local 1 // int b
        end local 0 // int a
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0       a  I
            0    5     1       b  I
            1    5     2  result  J
    MethodParameters:
      Name  Flags
      a     
      b     

  public static int checkedSubtract(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // int a
        start local 1 // int b
         0: .line 466
            iload 0 /* a */
            i2l
            iload 1 /* b */
            i2l
            lsub
            lstore 2 /* result */
        start local 2 // long result
         1: .line 467
            lload 2 /* result */
            lload 2 /* result */
            l2i
            i2l
            lcmp
            ifne 2
            iconst_1
            goto 3
      StackMap locals: long
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "checkedSubtract"
            iload 0 /* a */
            iload 1 /* b */
            invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;II)V
         4: .line 468
            lload 2 /* result */
            l2i
            ireturn
        end local 2 // long result
        end local 1 // int b
        end local 0 // int a
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0       a  I
            0    5     1       b  I
            1    5     2  result  J
    MethodParameters:
      Name  Flags
      a     
      b     

  public static int checkedMultiply(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // int a
        start local 1 // int b
         0: .line 477
            iload 0 /* a */
            i2l
            iload 1 /* b */
            i2l
            lmul
            lstore 2 /* result */
        start local 2 // long result
         1: .line 478
            lload 2 /* result */
            lload 2 /* result */
            l2i
            i2l
            lcmp
            ifne 2
            iconst_1
            goto 3
      StackMap locals: long
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "checkedMultiply"
            iload 0 /* a */
            iload 1 /* b */
            invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;II)V
         4: .line 479
            lload 2 /* result */
            l2i
            ireturn
        end local 2 // long result
        end local 1 // int b
        end local 0 // int a
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0       a  I
            0    5     1       b  I
            1    5     2  result  J
    MethodParameters:
      Name  Flags
      a     
      b     

  public static int checkedPow(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // int b
        start local 1 // int k
         0: .line 491
            ldc "exponent"
            iload 1 /* k */
            invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
            pop
         1: .line 492
            iload 0 /* b */
            tableswitch { // -2 - 2
                   -2: 13
                   -1: 6
                    0: 2
                    1: 5
                    2: 9
              default: 19
          }
         2: .line 494
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            ifne 3
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: ireturn
         5: .line 496
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         6: .line 498
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            iand
            ifne 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack:
         7: iconst_m1
      StackMap locals:
      StackMap stack: int
         8: ireturn
         9: .line 500
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            bipush 31
            if_icmpge 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: ldc "checkedPow"
            iload 0 /* b */
            iload 1 /* k */
            invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;II)V
        12: .line 501
            iconst_1
            iload 1 /* k */
            ishl
            ireturn
        13: .line 503
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            bipush 32
            if_icmpge 14
            iconst_1
            goto 15
      StackMap locals:
      StackMap stack:
        14: iconst_0
      StackMap locals:
      StackMap stack: int
        15: ldc "checkedPow"
            iload 0 /* b */
            iload 1 /* k */
            invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;II)V
        16: .line 504
            iload 1 /* k */
            iconst_1
            iand
            ifne 17
            iconst_1
            iload 1 /* k */
            ishl
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_m1
            iload 1 /* k */
            ishl
      StackMap locals:
      StackMap stack: int
        18: ireturn
        19: .line 508
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 2 /* accum */
        start local 2 // int accum
        20: .line 510
      StackMap locals: int
      StackMap stack:
            iload 1 /* k */
            tableswitch { // 0 - 1
                    0: 21
                    1: 22
              default: 23
          }
        21: .line 512
      StackMap locals:
      StackMap stack:
            iload 2 /* accum */
            ireturn
        22: .line 514
      StackMap locals:
      StackMap stack:
            iload 2 /* accum */
            iload 0 /* b */
            invokestatic com.google.common.math.IntMath.checkedMultiply:(II)I
            ireturn
        23: .line 516
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            iand
            ifeq 25
        24: .line 517
            iload 2 /* accum */
            iload 0 /* b */
            invokestatic com.google.common.math.IntMath.checkedMultiply:(II)I
            istore 2 /* accum */
        25: .line 519
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            ishr
            istore 1 /* k */
        26: .line 520
            iload 1 /* k */
            ifle 20
        27: .line 521
            ldc -46340
            iload 0 /* b */
            if_icmpgt 28
            iconst_1
            goto 29
      StackMap locals:
      StackMap stack:
        28: iconst_0
      StackMap locals:
      StackMap stack: int
        29: iload 0 /* b */
            ldc 46340
            if_icmpgt 30
            iconst_1
            goto 31
      StackMap locals:
      StackMap stack: int
        30: iconst_0
      StackMap locals: int int int
      StackMap stack: int int
        31: iand
            ldc "checkedPow"
            iload 0 /* b */
            iload 1 /* k */
            invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;II)V
        32: .line 522
            iload 0 /* b */
            iload 0 /* b */
            imul
            istore 0 /* b */
        33: .line 509
            goto 20
        end local 2 // int accum
        end local 1 // int k
        end local 0 // int b
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   34     0      b  I
            0   34     1      k  I
           20   34     2  accum  I
    MethodParameters:
      Name  Flags
      b     
      k     

  public static int saturatedAdd(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int a
        start local 1 // int b
         0: .line 536
            iload 0 /* a */
            i2l
            iload 1 /* b */
            i2l
            ladd
            invokestatic com.google.common.primitives.Ints.saturatedCast:(J)I
            ireturn
        end local 1 // int b
        end local 0 // int a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     a  I
            0    1     1     b  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
    MethodParameters:
      Name  Flags
      a     
      b     

  public static int saturatedSubtract(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int a
        start local 1 // int b
         0: .line 547
            iload 0 /* a */
            i2l
            iload 1 /* b */
            i2l
            lsub
            invokestatic com.google.common.primitives.Ints.saturatedCast:(J)I
            ireturn
        end local 1 // int b
        end local 0 // int a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     a  I
            0    1     1     b  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
    MethodParameters:
      Name  Flags
      a     
      b     

  public static int saturatedMultiply(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int a
        start local 1 // int b
         0: .line 558
            iload 0 /* a */
            i2l
            iload 1 /* b */
            i2l
            lmul
            invokestatic com.google.common.primitives.Ints.saturatedCast:(J)I
            ireturn
        end local 1 // int b
        end local 0 // int a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     a  I
            0    1     1     b  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
    MethodParameters:
      Name  Flags
      a     
      b     

  public static int saturatedPow(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // int b
        start local 1 // int k
         0: .line 569
            ldc "exponent"
            iload 1 /* k */
            invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
            pop
         1: .line 570
            iload 0 /* b */
            tableswitch { // -2 - 2
                   -2: 12
                   -1: 6
                    0: 2
                    1: 5
                    2: 9
              default: 17
          }
         2: .line 572
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            ifne 3
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: ireturn
         5: .line 574
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         6: .line 576
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            iand
            ifne 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack:
         7: iconst_m1
      StackMap locals:
      StackMap stack: int
         8: ireturn
         9: .line 578
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            bipush 31
            if_icmplt 11
        10: .line 579
            ldc 2147483647
            ireturn
        11: .line 581
      StackMap locals:
      StackMap stack:
            iconst_1
            iload 1 /* k */
            ishl
            ireturn
        12: .line 583
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            bipush 32
            if_icmplt 14
        13: .line 584
            ldc 2147483647
            iload 1 /* k */
            iconst_1
            iand
            iadd
            ireturn
        14: .line 586
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            iand
            ifne 15
            iconst_1
            iload 1 /* k */
            ishl
            goto 16
      StackMap locals:
      StackMap stack:
        15: iconst_m1
            iload 1 /* k */
            ishl
      StackMap locals:
      StackMap stack: int
        16: ireturn
        17: .line 590
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 2 /* accum */
        start local 2 // int accum
        18: .line 592
            ldc 2147483647
            iload 0 /* b */
            bipush 31
            iushr
            iload 1 /* k */
            iconst_1
            iand
            iand
            iadd
            istore 3 /* limit */
        start local 3 // int limit
        19: .line 594
      StackMap locals: int int
      StackMap stack:
            iload 1 /* k */
            tableswitch { // 0 - 1
                    0: 20
                    1: 21
              default: 22
          }
        20: .line 596
      StackMap locals:
      StackMap stack:
            iload 2 /* accum */
            ireturn
        21: .line 598
      StackMap locals:
      StackMap stack:
            iload 2 /* accum */
            iload 0 /* b */
            invokestatic com.google.common.math.IntMath.saturatedMultiply:(II)I
            ireturn
        22: .line 600
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            iand
            ifeq 24
        23: .line 601
            iload 2 /* accum */
            iload 0 /* b */
            invokestatic com.google.common.math.IntMath.saturatedMultiply:(II)I
            istore 2 /* accum */
        24: .line 603
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            ishr
            istore 1 /* k */
        25: .line 604
            iload 1 /* k */
            ifle 19
        26: .line 605
            ldc -46340
            iload 0 /* b */
            if_icmple 27
            iconst_1
            goto 28
      StackMap locals:
      StackMap stack:
        27: iconst_0
      StackMap locals:
      StackMap stack: int
        28: iload 0 /* b */
            ldc 46340
            if_icmple 29
            iconst_1
            goto 30
      StackMap locals:
      StackMap stack: int
        29: iconst_0
      StackMap locals: int int int int
      StackMap stack: int int
        30: ior
            ifeq 32
        31: .line 606
            iload 3 /* limit */
            ireturn
        32: .line 608
      StackMap locals:
      StackMap stack:
            iload 0 /* b */
            iload 0 /* b */
            imul
            istore 0 /* b */
        33: .line 593
            goto 19
        end local 3 // int limit
        end local 2 // int accum
        end local 1 // int k
        end local 0 // int b
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   34     0      b  I
            0   34     1      k  I
           18   34     2  accum  I
           19   34     3  limit  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
    MethodParameters:
      Name  Flags
      b     
      k     

  public static int factorial(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int n
         0: .line 623
            ldc "n"
            iload 0 /* n */
            invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
            pop
         1: .line 624
            iload 0 /* n */
            getstatic com.google.common.math.IntMath.factorials:[I
            arraylength
            if_icmpge 2
            getstatic com.google.common.math.IntMath.factorials:[I
            iload 0 /* n */
            iaload
            goto 3
      StackMap locals:
      StackMap stack:
         2: ldc 2147483647
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     n  I
    MethodParameters:
      Name  Flags
      n     

  public static int binomial(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // int n
        start local 1 // int k
         0: .line 650
            ldc "n"
            iload 0 /* n */
            invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
            pop
         1: .line 651
            ldc "k"
            iload 1 /* k */
            invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
            pop
         2: .line 652
            iload 1 /* k */
            iload 0 /* n */
            if_icmpgt 3
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: ldc "k (%s) > n (%s)"
            iload 1 /* k */
            iload 0 /* n */
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;II)V
         5: .line 653
            iload 1 /* k */
            iload 0 /* n */
            iconst_1
            ishr
            if_icmple 7
         6: .line 654
            iload 0 /* n */
            iload 1 /* k */
            isub
            istore 1 /* k */
         7: .line 656
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            getstatic com.google.common.math.IntMath.biggestBinomials:[I
            arraylength
            if_icmpge 8
            iload 0 /* n */
            getstatic com.google.common.math.IntMath.biggestBinomials:[I
            iload 1 /* k */
            iaload
            if_icmple 9
         8: .line 657
      StackMap locals:
      StackMap stack:
            ldc 2147483647
            ireturn
         9: .line 659
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            tableswitch { // 0 - 1
                    0: 10
                    1: 11
              default: 12
          }
        10: .line 661
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        11: .line 663
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            ireturn
        12: .line 665
      StackMap locals:
      StackMap stack:
            lconst_1
            lstore 2 /* result */
        start local 2 // long result
        13: .line 666
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        14: goto 18
        15: .line 667
      StackMap locals: long int
      StackMap stack:
            lload 2 /* result */
            iload 0 /* n */
            iload 4 /* i */
            isub
            i2l
            lmul
            lstore 2 /* result */
        16: .line 668
            lload 2 /* result */
            iload 4 /* i */
            iconst_1
            iadd
            i2l
            ldiv
            lstore 2 /* result */
        17: .line 666
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 4 /* i */
            iload 1 /* k */
            if_icmplt 15
        end local 4 // int i
        19: .line 670
            lload 2 /* result */
            l2i
            ireturn
        end local 2 // long result
        end local 1 // int k
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   20     0       n  I
            0   20     1       k  I
           13   20     2  result  J
           14   19     4       i  I
    MethodParameters:
      Name  Flags
      n     
      k     

  public static int mean(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // int x
        start local 1 // int y
         0: .line 706
            iload 0 /* x */
            iload 1 /* y */
            iand
            iload 0 /* x */
            iload 1 /* y */
            ixor
            iconst_1
            ishr
            iadd
            ireturn
        end local 1 // int y
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  I
            0    1     1     y  I
    MethodParameters:
      Name  Flags
      x     
      y     

  public static boolean isPrime(int);
    descriptor: (I)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int n
         0: .line 724
            iload 0 /* n */
            i2l
            invokestatic com.google.common.math.LongMath.isPrime:(J)Z
            ireturn
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     n  I
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.GwtIncompatible()
      com.google.common.annotations.Beta()
    MethodParameters:
      Name  Flags
      n     

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.math.IntMath this
         0: .line 727
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.common.math.IntMath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/math/IntMath;

  static int[] $SWITCH_TABLE$java$math$RoundingMode();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 51
            getstatic com.google.common.math.IntMath.$SWITCH_TABLE$java$math$RoundingMode:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic java.math.RoundingMode.values:()[Ljava/math/RoundingMode;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic java.math.RoundingMode.CEILING:Ljava/math/RoundingMode;
            invokevirtual java.math.RoundingMode.ordinal:()I
            iconst_3
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic java.math.RoundingMode.DOWN:Ljava/math/RoundingMode;
            invokevirtual java.math.RoundingMode.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic java.math.RoundingMode.FLOOR:Ljava/math/RoundingMode;
            invokevirtual java.math.RoundingMode.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic java.math.RoundingMode.HALF_DOWN:Ljava/math/RoundingMode;
            invokevirtual java.math.RoundingMode.ordinal:()I
            bipush 6
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic java.math.RoundingMode.HALF_EVEN:Ljava/math/RoundingMode;
            invokevirtual java.math.RoundingMode.ordinal:()I
            bipush 7
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic java.math.RoundingMode.HALF_UP:Ljava/math/RoundingMode;
            invokevirtual java.math.RoundingMode.ordinal:()I
            iconst_5
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic java.math.RoundingMode.UNNECESSARY:Ljava/math/RoundingMode;
            invokevirtual java.math.RoundingMode.ordinal:()I
            bipush 8
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic java.math.RoundingMode.UP:Ljava/math/RoundingMode;
            invokevirtual java.math.RoundingMode.ordinal:()I
            iconst_1
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            dup
            putstatic com.google.common.math.IntMath.$SWITCH_TABLE$java$math$RoundingMode:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
}
SourceFile: "IntMath.java"
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.GwtCompatible(emulated = true)