public final class org.apache.commons.math3.util.CombinatoricsUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.commons.math3.util.CombinatoricsUtils
  super_class: java.lang.Object
{
  static final long[] FACTORIALS;
    descriptor: [J
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final java.util.concurrent.atomic.AtomicReference<long[][]> STIRLING_S2;
    descriptor: Ljava/util/concurrent/atomic/AtomicReference;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicReference<[[J>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 35
            bipush 21
            newarray 11
            dup
            iconst_0
         1: .line 36
            lconst_1
            lastore
            dup
            iconst_1
            lconst_1
            lastore
            dup
            iconst_2
            ldc 2
            lastore
            dup
            iconst_3
         2: .line 37
            ldc 6
            lastore
            dup
            iconst_4
            ldc 24
            lastore
            dup
            iconst_5
            ldc 120
            lastore
            dup
            bipush 6
         3: .line 38
            ldc 720
            lastore
            dup
            bipush 7
            ldc 5040
            lastore
            dup
            bipush 8
            ldc 40320
            lastore
            dup
            bipush 9
         4: .line 39
            ldc 362880
            lastore
            dup
            bipush 10
            ldc 3628800
            lastore
            dup
            bipush 11
            ldc 39916800
            lastore
            dup
            bipush 12
         5: .line 40
            ldc 479001600
            lastore
            dup
            bipush 13
            ldc 6227020800
            lastore
            dup
            bipush 14
            ldc 87178291200
            lastore
            dup
            bipush 15
         6: .line 41
            ldc 1307674368000
            lastore
            dup
            bipush 16
            ldc 20922789888000
            lastore
            dup
            bipush 17
            ldc 355687428096000
            lastore
            dup
            bipush 18
         7: .line 42
            ldc 6402373705728000
            lastore
            dup
            bipush 19
            ldc 121645100408832000
            lastore
            dup
            bipush 20
            ldc 2432902008176640000
            lastore
         8: .line 35
            putstatic org.apache.commons.math3.util.CombinatoricsUtils.FACTORIALS:[J
         9: .line 45
            new java.util.concurrent.atomic.AtomicReference
            dup
            aconst_null
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
            putstatic org.apache.commons.math3.util.CombinatoricsUtils.STIRLING_S2:Ljava/util/concurrent/atomic/AtomicReference;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.math3.util.CombinatoricsUtils this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.commons.math3.util.CombinatoricsUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/commons/math3/util/CombinatoricsUtils;

  public static long binomialCoefficient(int, int);
    descriptor: (II)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // int n
        start local 1 // int k
         0: .line 79
            iload 0 /* n */
            iload 1 /* k */
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.checkBinomial:(II)V
         1: .line 80
            iload 0 /* n */
            iload 1 /* k */
            if_icmpeq 2
            iload 1 /* k */
            ifne 3
         2: .line 81
      StackMap locals:
      StackMap stack:
            lconst_1
            lreturn
         3: .line 83
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            if_icmpeq 4
            iload 1 /* k */
            iload 0 /* n */
            iconst_1
            isub
            if_icmpne 5
         4: .line 84
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            i2l
            lreturn
         5: .line 87
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iload 0 /* n */
            iconst_2
            idiv
            if_icmple 7
         6: .line 88
            iload 0 /* n */
            iload 0 /* n */
            iload 1 /* k */
            isub
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.binomialCoefficient:(II)J
            lreturn
         7: .line 96
      StackMap locals:
      StackMap stack:
            lconst_1
            lstore 2 /* result */
        start local 2 // long result
         8: .line 97
            iload 0 /* n */
            bipush 61
            if_icmpgt 17
         9: .line 99
            iload 0 /* n */
            iload 1 /* k */
            isub
            iconst_1
            iadd
            istore 4 /* i */
        start local 4 // int i
        10: .line 100
            iconst_1
            istore 5 /* j */
        start local 5 // int j
        11: goto 15
        12: .line 101
      StackMap locals: long int int
      StackMap stack:
            lload 2 /* result */
            iload 4 /* i */
            i2l
            lmul
            iload 5 /* j */
            i2l
            ldiv
            lstore 2 /* result */
        13: .line 102
            iinc 4 /* i */ 1
        14: .line 100
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        15: iload 5 /* j */
            iload 1 /* k */
            if_icmple 12
        end local 5 // int j
        end local 4 // int i
        16: .line 104
            goto 35
      StackMap locals:
      StackMap stack:
        17: iload 0 /* n */
            bipush 66
            if_icmpgt 27
        18: .line 107
            iload 0 /* n */
            iload 1 /* k */
            isub
            iconst_1
            iadd
            istore 4 /* i */
        start local 4 // int i
        19: .line 108
            iconst_1
            istore 5 /* j */
        start local 5 // int j
        20: goto 25
        21: .line 115
      StackMap locals: int int
      StackMap stack:
            iload 4 /* i */
            iload 5 /* j */
            invokestatic org.apache.commons.math3.util.ArithmeticUtils.gcd:(II)I
            i2l
            lstore 6 /* d */
        start local 6 // long d
        22: .line 116
            lload 2 /* result */
            iload 5 /* j */
            i2l
            lload 6 /* d */
            ldiv
            ldiv
            iload 4 /* i */
            i2l
            lload 6 /* d */
            ldiv
            lmul
            lstore 2 /* result */
        23: .line 117
            iinc 4 /* i */ 1
        end local 6 // long d
        24: .line 108
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        25: iload 5 /* j */
            iload 1 /* k */
            if_icmple 21
        end local 5 // int j
        end local 4 // int i
        26: .line 119
            goto 35
        27: .line 123
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            iload 1 /* k */
            isub
            iconst_1
            iadd
            istore 4 /* i */
        start local 4 // int i
        28: .line 124
            iconst_1
            istore 5 /* j */
        start local 5 // int j
        29: goto 34
        30: .line 125
      StackMap locals: int int
      StackMap stack:
            iload 4 /* i */
            iload 5 /* j */
            invokestatic org.apache.commons.math3.util.ArithmeticUtils.gcd:(II)I
            i2l
            lstore 6 /* d */
        start local 6 // long d
        31: .line 126
            lload 2 /* result */
            iload 5 /* j */
            i2l
            lload 6 /* d */
            ldiv
            ldiv
            iload 4 /* i */
            i2l
            lload 6 /* d */
            ldiv
            invokestatic org.apache.commons.math3.util.ArithmeticUtils.mulAndCheck:(JJ)J
            lstore 2 /* result */
        32: .line 127
            iinc 4 /* i */ 1
        end local 6 // long d
        33: .line 124
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        34: iload 5 /* j */
            iload 1 /* k */
            if_icmple 30
        end local 5 // int j
        end local 4 // int i
        35: .line 130
      StackMap locals:
      StackMap stack:
            lload 2 /* result */
            lreturn
        end local 2 // long result
        end local 1 // int k
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   36     0       n  I
            0   36     1       k  I
            8   36     2  result  J
           10   16     4       i  I
           11   16     5       j  I
           19   26     4       i  I
           20   26     5       j  I
           22   24     6       d  J
           28   35     4       i  I
           29   35     5       j  I
           31   33     6       d  J
    Exceptions:
      throws org.apache.commons.math3.exception.NotPositiveException, org.apache.commons.math3.exception.NumberIsTooLargeException, org.apache.commons.math3.exception.MathArithmeticException
    MethodParameters:
      Name  Flags
      n     final
      k     final

  public static double binomialCoefficientDouble(int, int);
    descriptor: (II)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // int n
        start local 1 // int k
         0: .line 160
            iload 0 /* n */
            iload 1 /* k */
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.checkBinomial:(II)V
         1: .line 161
            iload 0 /* n */
            iload 1 /* k */
            if_icmpeq 2
            iload 1 /* k */
            ifne 3
         2: .line 162
      StackMap locals:
      StackMap stack:
            dconst_1
            dreturn
         3: .line 164
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            if_icmpeq 4
            iload 1 /* k */
            iload 0 /* n */
            iconst_1
            isub
            if_icmpne 5
         4: .line 165
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            i2d
            dreturn
         5: .line 167
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iload 0 /* n */
            iconst_2
            idiv
            if_icmple 7
         6: .line 168
            iload 0 /* n */
            iload 0 /* n */
            iload 1 /* k */
            isub
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.binomialCoefficientDouble:(II)D
            dreturn
         7: .line 170
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            bipush 67
            if_icmpge 9
         8: .line 171
            iload 0 /* n */
            iload 1 /* k */
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.binomialCoefficient:(II)J
            l2d
            dreturn
         9: .line 174
      StackMap locals:
      StackMap stack:
            dconst_1
            dstore 2 /* result */
        start local 2 // double result
        10: .line 175
            iconst_1
            istore 4 /* i */
        start local 4 // int i
        11: goto 14
        12: .line 176
      StackMap locals: double int
      StackMap stack:
            dload 2 /* result */
            iload 0 /* n */
            iload 1 /* k */
            isub
            iload 4 /* i */
            iadd
            i2d
            iload 4 /* i */
            i2d
            ddiv
            dmul
            dstore 2 /* result */
        13: .line 175
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 4 /* i */
            iload 1 /* k */
            if_icmple 12
        end local 4 // int i
        15: .line 179
            dload 2 /* result */
            ldc 0.5
            dadd
            invokestatic org.apache.commons.math3.util.FastMath.floor:(D)D
            dreturn
        end local 2 // double result
        end local 1 // int k
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0       n  I
            0   16     1       k  I
           10   16     2  result  D
           11   15     4       i  I
    Exceptions:
      throws org.apache.commons.math3.exception.NotPositiveException, org.apache.commons.math3.exception.NumberIsTooLargeException, org.apache.commons.math3.exception.MathArithmeticException
    MethodParameters:
      Name  Flags
      n     final
      k     final

  public static double binomialCoefficientLog(int, int);
    descriptor: (II)D
    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 205
            iload 0 /* n */
            iload 1 /* k */
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.checkBinomial:(II)V
         1: .line 206
            iload 0 /* n */
            iload 1 /* k */
            if_icmpeq 2
            iload 1 /* k */
            ifne 3
         2: .line 207
      StackMap locals:
      StackMap stack:
            dconst_0
            dreturn
         3: .line 209
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            if_icmpeq 4
            iload 1 /* k */
            iload 0 /* n */
            iconst_1
            isub
            if_icmpne 5
         4: .line 210
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            i2d
            invokestatic org.apache.commons.math3.util.FastMath.log:(D)D
            dreturn
         5: .line 217
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            bipush 67
            if_icmpge 7
         6: .line 218
            iload 0 /* n */
            iload 1 /* k */
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.binomialCoefficient:(II)J
            l2d
            invokestatic org.apache.commons.math3.util.FastMath.log:(D)D
            dreturn
         7: .line 225
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            sipush 1030
            if_icmpge 9
         8: .line 226
            iload 0 /* n */
            iload 1 /* k */
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.binomialCoefficientDouble:(II)D
            invokestatic org.apache.commons.math3.util.FastMath.log:(D)D
            dreturn
         9: .line 229
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iload 0 /* n */
            iconst_2
            idiv
            if_icmple 11
        10: .line 230
            iload 0 /* n */
            iload 0 /* n */
            iload 1 /* k */
            isub
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.binomialCoefficientLog:(II)D
            dreturn
        11: .line 236
      StackMap locals:
      StackMap stack:
            dconst_0
            dstore 2 /* logSum */
        start local 2 // double logSum
        12: .line 239
            iload 0 /* n */
            iload 1 /* k */
            isub
            iconst_1
            iadd
            istore 4 /* i */
        start local 4 // int i
        13: goto 16
        14: .line 240
      StackMap locals: double int
      StackMap stack:
            dload 2 /* logSum */
            iload 4 /* i */
            i2d
            invokestatic org.apache.commons.math3.util.FastMath.log:(D)D
            dadd
            dstore 2 /* logSum */
        15: .line 239
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 4 /* i */
            iload 0 /* n */
            if_icmple 14
        end local 4 // int i
        17: .line 244
            iconst_2
            istore 4 /* i */
        start local 4 // int i
        18: goto 21
        19: .line 245
      StackMap locals:
      StackMap stack:
            dload 2 /* logSum */
            iload 4 /* i */
            i2d
            invokestatic org.apache.commons.math3.util.FastMath.log:(D)D
            dsub
            dstore 2 /* logSum */
        20: .line 244
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 4 /* i */
            iload 1 /* k */
            if_icmple 19
        end local 4 // int i
        22: .line 248
            dload 2 /* logSum */
            dreturn
        end local 2 // double logSum
        end local 1 // int k
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   23     0       n  I
            0   23     1       k  I
           12   23     2  logSum  D
           13   17     4       i  I
           18   22     4       i  I
    Exceptions:
      throws org.apache.commons.math3.exception.NotPositiveException, org.apache.commons.math3.exception.NumberIsTooLargeException, org.apache.commons.math3.exception.MathArithmeticException
    MethodParameters:
      Name  Flags
      n     final
      k     final

  public static long factorial(int);
    descriptor: (I)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // int n
         0: .line 276
            iload 0 /* n */
            ifge 4
         1: .line 277
            new org.apache.commons.math3.exception.NotPositiveException
            dup
            getstatic org.apache.commons.math3.exception.util.LocalizedFormats.FACTORIAL_NEGATIVE_PARAMETER:Lorg/apache/commons/math3/exception/util/LocalizedFormats;
         2: .line 278
            iload 0 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
         3: .line 277
            invokespecial org.apache.commons.math3.exception.NotPositiveException.<init>:(Lorg/apache/commons/math3/exception/util/Localizable;Ljava/lang/Number;)V
            athrow
         4: .line 280
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            bipush 20
            if_icmple 6
         5: .line 281
            new org.apache.commons.math3.exception.MathArithmeticException
            dup
            invokespecial org.apache.commons.math3.exception.MathArithmeticException.<init>:()V
            athrow
         6: .line 283
      StackMap locals:
      StackMap stack:
            getstatic org.apache.commons.math3.util.CombinatoricsUtils.FACTORIALS:[J
            iload 0 /* n */
            laload
            lreturn
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0     n  I
    Exceptions:
      throws org.apache.commons.math3.exception.NotPositiveException, org.apache.commons.math3.exception.MathArithmeticException
    MethodParameters:
      Name  Flags
      n     final

  public static double factorialDouble(int);
    descriptor: (I)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // int n
         0: .line 300
            iload 0 /* n */
            ifge 4
         1: .line 301
            new org.apache.commons.math3.exception.NotPositiveException
            dup
            getstatic org.apache.commons.math3.exception.util.LocalizedFormats.FACTORIAL_NEGATIVE_PARAMETER:Lorg/apache/commons/math3/exception/util/LocalizedFormats;
         2: .line 302
            iload 0 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
         3: .line 301
            invokespecial org.apache.commons.math3.exception.NotPositiveException.<init>:(Lorg/apache/commons/math3/exception/util/Localizable;Ljava/lang/Number;)V
            athrow
         4: .line 304
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            bipush 21
            if_icmpge 6
         5: .line 305
            getstatic org.apache.commons.math3.util.CombinatoricsUtils.FACTORIALS:[J
            iload 0 /* n */
            laload
            l2d
            dreturn
         6: .line 307
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.factorialLog:(I)D
            invokestatic org.apache.commons.math3.util.FastMath.exp:(D)D
            ldc 0.5
            dadd
            invokestatic org.apache.commons.math3.util.FastMath.floor:(D)D
            dreturn
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0     n  I
    Exceptions:
      throws org.apache.commons.math3.exception.NotPositiveException
    MethodParameters:
      Name  Flags
      n     final

  public static double factorialLog(int);
    descriptor: (I)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // int n
         0: .line 318
            iload 0 /* n */
            ifge 4
         1: .line 319
            new org.apache.commons.math3.exception.NotPositiveException
            dup
            getstatic org.apache.commons.math3.exception.util.LocalizedFormats.FACTORIAL_NEGATIVE_PARAMETER:Lorg/apache/commons/math3/exception/util/LocalizedFormats;
         2: .line 320
            iload 0 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
         3: .line 319
            invokespecial org.apache.commons.math3.exception.NotPositiveException.<init>:(Lorg/apache/commons/math3/exception/util/Localizable;Ljava/lang/Number;)V
            athrow
         4: .line 322
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            bipush 21
            if_icmpge 6
         5: .line 323
            getstatic org.apache.commons.math3.util.CombinatoricsUtils.FACTORIALS:[J
            iload 0 /* n */
            laload
            l2d
            invokestatic org.apache.commons.math3.util.FastMath.log:(D)D
            dreturn
         6: .line 325
      StackMap locals:
      StackMap stack:
            dconst_0
            dstore 1 /* logSum */
        start local 1 // double logSum
         7: .line 326
            iconst_2
            istore 3 /* i */
        start local 3 // int i
         8: goto 11
         9: .line 327
      StackMap locals: double int
      StackMap stack:
            dload 1 /* logSum */
            iload 3 /* i */
            i2d
            invokestatic org.apache.commons.math3.util.FastMath.log:(D)D
            dadd
            dstore 1 /* logSum */
        10: .line 326
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 3 /* i */
            iload 0 /* n */
            if_icmple 9
        end local 3 // int i
        12: .line 329
            dload 1 /* logSum */
            dreturn
        end local 1 // double logSum
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0       n  I
            7   13     1  logSum  D
            8   12     3       i  I
    Exceptions:
      throws org.apache.commons.math3.exception.NotPositiveException
    MethodParameters:
      Name  Flags
      n     final

  public static long stirlingS2(int, int);
    descriptor: (II)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=8, args_size=2
        start local 0 // int n
        start local 1 // int k
         0: .line 353
            iload 1 /* k */
            ifge 2
         1: .line 354
            new org.apache.commons.math3.exception.NotPositiveException
            dup
            iload 1 /* k */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokespecial org.apache.commons.math3.exception.NotPositiveException.<init>:(Ljava/lang/Number;)V
            athrow
         2: .line 356
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iload 0 /* n */
            if_icmple 4
         3: .line 357
            new org.apache.commons.math3.exception.NumberIsTooLargeException
            dup
            iload 1 /* k */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iload 0 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_1
            invokespecial org.apache.commons.math3.exception.NumberIsTooLargeException.<init>:(Ljava/lang/Number;Ljava/lang/Number;Z)V
            athrow
         4: .line 360
      StackMap locals:
      StackMap stack:
            getstatic org.apache.commons.math3.util.CombinatoricsUtils.STIRLING_S2:Ljava/util/concurrent/atomic/AtomicReference;
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast long[][]
            astore 2 /* stirlingS2 */
        start local 2 // long[][] stirlingS2
         5: .line 362
            aload 2 /* stirlingS2 */
            ifnonnull 22
         6: .line 369
            bipush 26
            anewarray long[]
            astore 2 /* stirlingS2 */
         7: .line 370
            aload 2 /* stirlingS2 */
            iconst_0
            iconst_1
            newarray 11
            dup
            iconst_0
            lconst_1
            lastore
            aastore
         8: .line 371
            iconst_1
            istore 3 /* i */
        start local 3 // int i
         9: goto 20
        10: .line 372
      StackMap locals: long[][] int
      StackMap stack:
            aload 2 /* stirlingS2 */
            iload 3 /* i */
            iload 3 /* i */
            iconst_1
            iadd
            newarray 11
            aastore
        11: .line 373
            aload 2 /* stirlingS2 */
            iload 3 /* i */
            aaload
            iconst_0
            lconst_0
            lastore
        12: .line 374
            aload 2 /* stirlingS2 */
            iload 3 /* i */
            aaload
            iconst_1
            lconst_1
            lastore
        13: .line 375
            aload 2 /* stirlingS2 */
            iload 3 /* i */
            aaload
            iload 3 /* i */
            lconst_1
            lastore
        14: .line 376
            iconst_2
            istore 4 /* j */
        start local 4 // int j
        15: goto 18
        16: .line 377
      StackMap locals: int
      StackMap stack:
            aload 2 /* stirlingS2 */
            iload 3 /* i */
            aaload
            iload 4 /* j */
            iload 4 /* j */
            i2l
            aload 2 /* stirlingS2 */
            iload 3 /* i */
            iconst_1
            isub
            aaload
            iload 4 /* j */
            laload
            lmul
            aload 2 /* stirlingS2 */
            iload 3 /* i */
            iconst_1
            isub
            aaload
            iload 4 /* j */
            iconst_1
            isub
            laload
            ladd
            lastore
        17: .line 376
            iinc 4 /* j */ 1
      StackMap locals:
      StackMap stack:
        18: iload 4 /* j */
            iload 3 /* i */
            if_icmplt 16
        end local 4 // int j
        19: .line 371
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 3 /* i */
            aload 2 /* stirlingS2 */
            arraylength
            if_icmplt 10
        end local 3 // int i
        21: .line 382
            getstatic org.apache.commons.math3.util.CombinatoricsUtils.STIRLING_S2:Ljava/util/concurrent/atomic/AtomicReference;
            aconst_null
            aload 2 /* stirlingS2 */
            invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
        22: .line 386
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            aload 2 /* stirlingS2 */
            arraylength
            if_icmpge 24
        23: .line 388
            aload 2 /* stirlingS2 */
            iload 0 /* n */
            aaload
            iload 1 /* k */
            laload
            lreturn
        24: .line 391
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            ifne 26
        25: .line 392
            lconst_0
            lreturn
        26: .line 393
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_1
            if_icmpeq 27
            iload 1 /* k */
            iload 0 /* n */
            if_icmpne 28
        27: .line 394
      StackMap locals:
      StackMap stack:
            lconst_1
            lreturn
        28: .line 395
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iconst_2
            if_icmpne 30
        29: .line 396
            lconst_1
            iload 0 /* n */
            iconst_1
            isub
            lshl
            lconst_1
            lsub
            lreturn
        30: .line 397
      StackMap locals:
      StackMap stack:
            iload 1 /* k */
            iload 0 /* n */
            iconst_1
            isub
            if_icmpne 32
        31: .line 398
            iload 0 /* n */
            iconst_2
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.binomialCoefficient:(II)J
            lreturn
        32: .line 401
      StackMap locals:
      StackMap stack:
            lconst_0
            lstore 3 /* sum */
        start local 3 // long sum
        33: .line 402
            iload 1 /* k */
            iconst_1
            iand
            ifne 34
            iconst_1
            goto 35
      StackMap locals: long
      StackMap stack:
        34: iconst_m1
      StackMap locals:
      StackMap stack: int
        35: i2l
            lstore 5 /* sign */
        start local 5 // long sign
        36: .line 403
            iconst_1
            istore 7 /* j */
        start local 7 // int j
        37: goto 45
        38: .line 404
      StackMap locals: long int
      StackMap stack:
            lload 5 /* sign */
            lneg
            lstore 5 /* sign */
        39: .line 405
            lload 3 /* sum */
            lload 5 /* sign */
            iload 1 /* k */
            iload 7 /* j */
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.binomialCoefficient:(II)J
            lmul
            iload 7 /* j */
            iload 0 /* n */
            invokestatic org.apache.commons.math3.util.ArithmeticUtils.pow:(II)I
            i2l
            lmul
            ladd
            lstore 3 /* sum */
        40: .line 406
            lload 3 /* sum */
            lconst_0
            lcmp
            ifge 44
        41: .line 408
            new org.apache.commons.math3.exception.MathArithmeticException
            dup
            getstatic org.apache.commons.math3.exception.util.LocalizedFormats.ARGUMENT_OUTSIDE_DOMAIN:Lorg/apache/commons/math3/exception/util/LocalizedFormats;
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        42: .line 409
            iload 0 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 2 /* stirlingS2 */
            arraylength
            iconst_1
            isub
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        43: .line 408
            aastore
            invokespecial org.apache.commons.math3.exception.MathArithmeticException.<init>:(Lorg/apache/commons/math3/exception/util/Localizable;[Ljava/lang/Object;)V
            athrow
        44: .line 403
      StackMap locals:
      StackMap stack:
            iinc 7 /* j */ 1
      StackMap locals:
      StackMap stack:
        45: iload 7 /* j */
            iload 1 /* k */
            if_icmple 38
        end local 7 // int j
        46: .line 412
            lload 3 /* sum */
            iload 1 /* k */
            invokestatic org.apache.commons.math3.util.CombinatoricsUtils.factorial:(I)J
            ldiv
            lreturn
        end local 5 // long sign
        end local 3 // long sum
        end local 2 // long[][] stirlingS2
        end local 1 // int k
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   47     0           n  I
            0   47     1           k  I
            5   47     2  stirlingS2  [[J
            9   21     3           i  I
           15   19     4           j  I
           33   47     3         sum  J
           36   47     5        sign  J
           37   46     7           j  I
    Exceptions:
      throws org.apache.commons.math3.exception.NotPositiveException, org.apache.commons.math3.exception.NumberIsTooLargeException, org.apache.commons.math3.exception.MathArithmeticException
    MethodParameters:
      Name  Flags
      n     final
      k     final

  public static java.util.Iterator<int[]> combinationsIterator(int, int);
    descriptor: (II)Ljava/util/Iterator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int n
        start local 1 // int k
         0: .line 439
            new org.apache.commons.math3.util.Combinations
            dup
            iload 0 /* n */
            iload 1 /* k */
            invokespecial org.apache.commons.math3.util.Combinations.<init>:(II)V
            invokevirtual org.apache.commons.math3.util.Combinations.iterator:()Ljava/util/Iterator;
            areturn
        end local 1 // int k
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     n  I
            0    1     1     k  I
    Signature: (II)Ljava/util/Iterator<[I>;
    MethodParameters:
      Name  Flags
      n     
      k     

  public static void checkBinomial(int, int);
    descriptor: (II)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // int n
        start local 1 // int k
         0: .line 454
            iload 0 /* n */
            iload 1 /* k */
            if_icmpge 4
         1: .line 455
            new org.apache.commons.math3.exception.NumberIsTooLargeException
            dup
            getstatic org.apache.commons.math3.exception.util.LocalizedFormats.BINOMIAL_INVALID_PARAMETERS_ORDER:Lorg/apache/commons/math3/exception/util/LocalizedFormats;
         2: .line 456
            iload 1 /* k */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iload 0 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_1
         3: .line 455
            invokespecial org.apache.commons.math3.exception.NumberIsTooLargeException.<init>:(Lorg/apache/commons/math3/exception/util/Localizable;Ljava/lang/Number;Ljava/lang/Number;Z)V
            athrow
         4: .line 458
      StackMap locals:
      StackMap stack:
            iload 0 /* n */
            ifge 6
         5: .line 459
            new org.apache.commons.math3.exception.NotPositiveException
            dup
            getstatic org.apache.commons.math3.exception.util.LocalizedFormats.BINOMIAL_NEGATIVE_PARAMETER:Lorg/apache/commons/math3/exception/util/LocalizedFormats;
            iload 0 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokespecial org.apache.commons.math3.exception.NotPositiveException.<init>:(Lorg/apache/commons/math3/exception/util/Localizable;Ljava/lang/Number;)V
            athrow
         6: .line 461
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int k
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0     n  I
            0    7     1     k  I
    Exceptions:
      throws org.apache.commons.math3.exception.NumberIsTooLargeException, org.apache.commons.math3.exception.NotPositiveException
    MethodParameters:
      Name  Flags
      n     final
      k     final
}
SourceFile: "CombinatoricsUtils.java"