public class org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer<T extends org.apache.commons.math3.stat.clustering.Clusterable<T>>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer
  super_class: java.lang.Object
{
  private final java.util.Random random;
    descriptor: Ljava/util/Random;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy emptyStrategy;
    descriptor: Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;

  private static volatile int[] $SWITCH_TABLE$org$apache$commons$math3$stat$clustering$KMeansPlusPlusClusterer$EmptyClusterStrategy;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  public void <init>(java.util.Random);
    descriptor: (Ljava/util/Random;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
        start local 1 // java.util.Random random
         0: .line 75
            aload 0 /* this */
            aload 1 /* random */
            getstatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.LARGEST_VARIANCE:Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;
            invokespecial org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.<init>:(Ljava/util/Random;Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;)V
         1: .line 76
            return
        end local 1 // java.util.Random random
        end local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer<TT;>;
            0    2     1  random  Ljava/util/Random;
    MethodParameters:
        Name  Flags
      random  final

  public void <init>(java.util.Random, org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy);
    descriptor: (Ljava/util/Random;Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
        start local 1 // java.util.Random random
        start local 2 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy emptyStrategy
         0: .line 84
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 85
            aload 0 /* this */
            aload 1 /* random */
            putfield org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.random:Ljava/util/Random;
         2: .line 86
            aload 0 /* this */
            aload 2 /* emptyStrategy */
            putfield org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.emptyStrategy:Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;
         3: .line 87
            return
        end local 2 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy emptyStrategy
        end local 1 // java.util.Random random
        end local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer<TT;>;
            0    4     1         random  Ljava/util/Random;
            0    4     2  emptyStrategy  Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;
    Signature: (Ljava/util/Random;Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;)V
    MethodParameters:
               Name  Flags
      random         final
      emptyStrategy  final

  public java.util.List<org.apache.commons.math3.stat.clustering.Cluster<T>> cluster(java.util.Collection<T>, int, int, int);
    descriptor: (Ljava/util/Collection;III)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=18, args_size=5
        start local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
        start local 1 // java.util.Collection points
        start local 2 // int k
        start local 3 // int numTrials
        start local 4 // int maxIterationsPerTrial
         0: .line 108
            aconst_null
            astore 5 /* best */
        start local 5 // java.util.List best
         1: .line 109
            ldc Infinity
            dstore 6 /* bestVarianceSum */
        start local 6 // double bestVarianceSum
         2: .line 112
            iconst_0
            istore 8 /* i */
        start local 8 // int i
         3: goto 21
         4: .line 115
      StackMap locals: java.util.List double int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* points */
            iload 2 /* k */
            iload 4 /* maxIterationsPerTrial */
            invokevirtual org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.cluster:(Ljava/util/Collection;II)Ljava/util/List;
            astore 9 /* clusters */
        start local 9 // java.util.List clusters
         5: .line 118
            dconst_0
            dstore 10 /* varianceSum */
        start local 10 // double varianceSum
         6: .line 119
            aload 9 /* clusters */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 13
            goto 16
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection int int int java.util.List double int java.util.List double top java.util.Iterator
      StackMap stack:
         7: aload 13
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Cluster
            astore 12 /* cluster */
        start local 12 // org.apache.commons.math3.stat.clustering.Cluster cluster
         8: .line 120
            aload 12 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 16
         9: .line 123
            aload 12 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getCenter:()Lorg/apache/commons/math3/stat/clustering/Clusterable;
            astore 14 /* center */
        start local 14 // org.apache.commons.math3.stat.clustering.Clusterable center
        10: .line 124
            new org.apache.commons.math3.stat.descriptive.moment.Variance
            dup
            invokespecial org.apache.commons.math3.stat.descriptive.moment.Variance.<init>:()V
            astore 15 /* stat */
        start local 15 // org.apache.commons.math3.stat.descriptive.moment.Variance stat
        11: .line 125
            aload 12 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 17
            goto 14
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection int int int java.util.List double int java.util.List double org.apache.commons.math3.stat.clustering.Cluster java.util.Iterator org.apache.commons.math3.stat.clustering.Clusterable org.apache.commons.math3.stat.descriptive.moment.Variance top java.util.Iterator
      StackMap stack:
        12: aload 17
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            astore 16 /* point */
        start local 16 // org.apache.commons.math3.stat.clustering.Clusterable point
        13: .line 126
            aload 15 /* stat */
            aload 16 /* point */
            aload 14 /* center */
            invokeinterface org.apache.commons.math3.stat.clustering.Clusterable.distanceFrom:(Ljava/lang/Object;)D
            invokevirtual org.apache.commons.math3.stat.descriptive.moment.Variance.increment:(D)V
        end local 16 // org.apache.commons.math3.stat.clustering.Clusterable point
        14: .line 125
      StackMap locals:
      StackMap stack:
            aload 17
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        15: .line 128
            dload 10 /* varianceSum */
            aload 15 /* stat */
            invokevirtual org.apache.commons.math3.stat.descriptive.moment.Variance.getResult:()D
            dadd
            dstore 10 /* varianceSum */
        end local 15 // org.apache.commons.math3.stat.descriptive.moment.Variance stat
        end local 14 // org.apache.commons.math3.stat.clustering.Clusterable center
        end local 12 // org.apache.commons.math3.stat.clustering.Cluster cluster
        16: .line 119
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection int int int java.util.List double int java.util.List double top java.util.Iterator
      StackMap stack:
            aload 13
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        17: .line 133
            dload 10 /* varianceSum */
            dload 6 /* bestVarianceSum */
            dcmpg
            ifgt 20
        18: .line 135
            aload 9 /* clusters */
            astore 5 /* best */
        19: .line 136
            dload 10 /* varianceSum */
            dstore 6 /* bestVarianceSum */
        end local 10 // double varianceSum
        end local 9 // java.util.List clusters
        20: .line 112
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection int int int java.util.List double int
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 8 /* i */
            iload 3 /* numTrials */
            if_icmplt 4
        end local 8 // int i
        22: .line 142
            aload 5 /* best */
            areturn
        end local 6 // double bestVarianceSum
        end local 5 // java.util.List best
        end local 4 // int maxIterationsPerTrial
        end local 3 // int numTrials
        end local 2 // int k
        end local 1 // java.util.Collection points
        end local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   23     0                   this  Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer<TT;>;
            0   23     1                 points  Ljava/util/Collection<TT;>;
            0   23     2                      k  I
            0   23     3              numTrials  I
            0   23     4  maxIterationsPerTrial  I
            1   23     5                   best  Ljava/util/List<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
            2   23     6        bestVarianceSum  D
            3   22     8                      i  I
            5   20     9               clusters  Ljava/util/List<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
            6   20    10            varianceSum  D
            8   16    12                cluster  Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;
           10   16    14                 center  TT;
           11   16    15                   stat  Lorg/apache/commons/math3/stat/descriptive/moment/Variance;
           13   14    16                  point  TT;
    Exceptions:
      throws org.apache.commons.math3.exception.MathIllegalArgumentException, org.apache.commons.math3.exception.ConvergenceException
    Signature: (Ljava/util/Collection<TT;>;III)Ljava/util/List<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
    MethodParameters:
                       Name  Flags
      points                 final
      k                      final
      numTrials              
      maxIterationsPerTrial  

  public java.util.List<org.apache.commons.math3.stat.clustering.Cluster<T>> cluster(java.util.Collection<T>, int, int);
    descriptor: (Ljava/util/Collection;II)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=13, args_size=4
        start local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
        start local 1 // java.util.Collection points
        start local 2 // int k
        start local 3 // int maxIterations
         0: .line 164
            aload 1 /* points */
            invokestatic org.apache.commons.math3.util.MathUtils.checkNotNull:(Ljava/lang/Object;)V
         1: .line 167
            aload 1 /* points */
            invokeinterface java.util.Collection.size:()I
            iload 2 /* k */
            if_icmpge 3
         2: .line 168
            new org.apache.commons.math3.exception.NumberIsTooSmallException
            dup
            aload 1 /* points */
            invokeinterface java.util.Collection.size:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iload 2 /* k */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_0
            invokespecial org.apache.commons.math3.exception.NumberIsTooSmallException.<init>:(Ljava/lang/Number;Ljava/lang/Number;Z)V
            athrow
         3: .line 172
      StackMap locals:
      StackMap stack:
            aload 1 /* points */
            iload 2 /* k */
            aload 0 /* this */
            getfield org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.random:Ljava/util/Random;
            invokestatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.chooseInitialCenters:(Ljava/util/Collection;ILjava/util/Random;)Ljava/util/List;
            astore 4 /* clusters */
        start local 4 // java.util.List clusters
         4: .line 176
            aload 1 /* points */
            invokeinterface java.util.Collection.size:()I
            newarray 10
            astore 5 /* assignments */
        start local 5 // int[] assignments
         5: .line 177
            aload 4 /* clusters */
            aload 1 /* points */
            aload 5 /* assignments */
            invokestatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.assignPointsToClusters:(Ljava/util/List;Ljava/util/Collection;[I)I
            pop
         6: .line 180
            iload 3 /* maxIterations */
            ifge 7
            ldc 2147483647
            goto 8
      StackMap locals: java.util.List int[]
      StackMap stack:
         7: iload 3 /* maxIterations */
      StackMap locals:
      StackMap stack: int
         8: istore 6 /* max */
        start local 6 // int max
         9: .line 181
            iconst_0
            istore 7 /* count */
        start local 7 // int count
        10: goto 34
        11: .line 182
      StackMap locals: int int
      StackMap stack:
            iconst_0
            istore 8 /* emptyCluster */
        start local 8 // boolean emptyCluster
        12: .line 183
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 9 /* newClusters */
        start local 9 // java.util.List newClusters
        13: .line 184
            aload 4 /* clusters */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 11
            goto 28
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection int int java.util.List int[] int int int java.util.List top java.util.Iterator
      StackMap stack:
        14: aload 11
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Cluster
            astore 10 /* cluster */
        start local 10 // org.apache.commons.math3.stat.clustering.Cluster cluster
        15: .line 186
            aload 10 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 26
        16: .line 187
            invokestatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.$SWITCH_TABLE$org$apache$commons$math3$stat$clustering$KMeansPlusPlusClusterer$EmptyClusterStrategy:()[I
            aload 0 /* this */
            getfield org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.emptyStrategy:Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;
            invokevirtual org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 17
                    2: 19
                    3: 21
              default: 23
          }
        17: .line 189
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection int int java.util.List int[] int int int java.util.List org.apache.commons.math3.stat.clustering.Cluster java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            aload 4 /* clusters */
            invokevirtual org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.getPointFromLargestVarianceCluster:(Ljava/util/Collection;)Lorg/apache/commons/math3/stat/clustering/Clusterable;
            astore 12 /* newCenter */
        start local 12 // org.apache.commons.math3.stat.clustering.Clusterable newCenter
        18: .line 190
            goto 24
        end local 12 // org.apache.commons.math3.stat.clustering.Clusterable newCenter
        19: .line 192
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* clusters */
            invokevirtual org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.getPointFromLargestNumberCluster:(Ljava/util/Collection;)Lorg/apache/commons/math3/stat/clustering/Clusterable;
            astore 12 /* newCenter */
        start local 12 // org.apache.commons.math3.stat.clustering.Clusterable newCenter
        20: .line 193
            goto 24
        end local 12 // org.apache.commons.math3.stat.clustering.Clusterable newCenter
        21: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* clusters */
            invokevirtual org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.getFarthestPoint:(Ljava/util/Collection;)Lorg/apache/commons/math3/stat/clustering/Clusterable;
            astore 12 /* newCenter */
        start local 12 // org.apache.commons.math3.stat.clustering.Clusterable newCenter
        22: .line 196
            goto 24
        end local 12 // org.apache.commons.math3.stat.clustering.Clusterable newCenter
        23: .line 198
      StackMap locals:
      StackMap stack:
            new org.apache.commons.math3.exception.ConvergenceException
            dup
            getstatic org.apache.commons.math3.exception.util.LocalizedFormats.EMPTY_CLUSTER_IN_K_MEANS:Lorg/apache/commons/math3/exception/util/LocalizedFormats;
            iconst_0
            anewarray java.lang.Object
            invokespecial org.apache.commons.math3.exception.ConvergenceException.<init>:(Lorg/apache/commons/math3/exception/util/Localizable;[Ljava/lang/Object;)V
            athrow
        start local 12 // org.apache.commons.math3.stat.clustering.Clusterable newCenter
        24: .line 200
      StackMap locals: org.apache.commons.math3.stat.clustering.Clusterable
      StackMap stack:
            iconst_1
            istore 8 /* emptyCluster */
        25: .line 201
            goto 27
        end local 12 // org.apache.commons.math3.stat.clustering.Clusterable newCenter
        26: .line 202
      StackMap locals:
      StackMap stack:
            aload 10 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getCenter:()Lorg/apache/commons/math3/stat/clustering/Clusterable;
            aload 10 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            invokeinterface org.apache.commons.math3.stat.clustering.Clusterable.centroidOf:(Ljava/util/Collection;)Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            astore 12 /* newCenter */
        start local 12 // org.apache.commons.math3.stat.clustering.Clusterable newCenter
        27: .line 204
      StackMap locals: org.apache.commons.math3.stat.clustering.Clusterable
      StackMap stack:
            aload 9 /* newClusters */
            new org.apache.commons.math3.stat.clustering.Cluster
            dup
            aload 12 /* newCenter */
            invokespecial org.apache.commons.math3.stat.clustering.Cluster.<init>:(Lorg/apache/commons/math3/stat/clustering/Clusterable;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // org.apache.commons.math3.stat.clustering.Clusterable newCenter
        end local 10 // org.apache.commons.math3.stat.clustering.Cluster cluster
        28: .line 184
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection int int java.util.List int[] int int int java.util.List top java.util.Iterator
      StackMap stack:
            aload 11
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        29: .line 206
            aload 9 /* newClusters */
            aload 1 /* points */
            aload 5 /* assignments */
            invokestatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.assignPointsToClusters:(Ljava/util/List;Ljava/util/Collection;[I)I
            istore 10 /* changes */
        start local 10 // int changes
        30: .line 207
            aload 9 /* newClusters */
            astore 4 /* clusters */
        31: .line 211
            iload 10 /* changes */
            ifne 33
            iload 8 /* emptyCluster */
            ifne 33
        32: .line 212
            aload 4 /* clusters */
            areturn
        end local 10 // int changes
        end local 9 // java.util.List newClusters
        end local 8 // boolean emptyCluster
        33: .line 181
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection int int java.util.List int[] int int
      StackMap stack:
            iinc 7 /* count */ 1
      StackMap locals:
      StackMap stack:
        34: iload 7 /* count */
            iload 6 /* max */
            if_icmplt 11
        end local 7 // int count
        35: .line 215
            aload 4 /* clusters */
            areturn
        end local 6 // int max
        end local 5 // int[] assignments
        end local 4 // java.util.List clusters
        end local 3 // int maxIterations
        end local 2 // int k
        end local 1 // java.util.Collection points
        end local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   36     0           this  Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer<TT;>;
            0   36     1         points  Ljava/util/Collection<TT;>;
            0   36     2              k  I
            0   36     3  maxIterations  I
            4   36     4       clusters  Ljava/util/List<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
            5   36     5    assignments  [I
            9   36     6            max  I
           10   35     7          count  I
           12   33     8   emptyCluster  Z
           13   33     9    newClusters  Ljava/util/List<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
           15   28    10        cluster  Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;
           18   19    12      newCenter  TT;
           20   21    12      newCenter  TT;
           22   23    12      newCenter  TT;
           24   26    12      newCenter  TT;
           27   28    12      newCenter  TT;
           30   33    10        changes  I
    Exceptions:
      throws org.apache.commons.math3.exception.MathIllegalArgumentException, org.apache.commons.math3.exception.ConvergenceException
    Signature: (Ljava/util/Collection<TT;>;II)Ljava/util/List<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
    MethodParameters:
               Name  Flags
      points         final
      k              final
      maxIterations  final

  private static <T extends org.apache.commons.math3.stat.clustering.Clusterable<T>> int assignPointsToClusters(java.util.List<org.apache.commons.math3.stat.clustering.Cluster<T>>, java.util.Collection<T>, );
    descriptor: (Ljava/util/List;Ljava/util/Collection;[I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=9, args_size=3
        start local 0 // java.util.List clusters
        start local 1 // java.util.Collection points
        start local 2 // int[] assignments
         0: .line 230
            iconst_0
            istore 3 /* assignedDifferently */
        start local 3 // int assignedDifferently
         1: .line 231
            iconst_0
            istore 4 /* pointIndex */
        start local 4 // int pointIndex
         2: .line 232
            aload 1 /* points */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 10
      StackMap locals: java.util.List java.util.Collection int[] int int top java.util.Iterator
      StackMap stack:
         3: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            astore 5 /* p */
        start local 5 // org.apache.commons.math3.stat.clustering.Clusterable p
         4: .line 233
            aload 0 /* clusters */
            aload 5 /* p */
            invokestatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.getNearestCluster:(Ljava/util/Collection;Lorg/apache/commons/math3/stat/clustering/Clusterable;)I
            istore 7 /* clusterIndex */
        start local 7 // int clusterIndex
         5: .line 234
            iload 7 /* clusterIndex */
            aload 2 /* assignments */
            iload 4 /* pointIndex */
            iaload
            if_icmpeq 7
         6: .line 235
            iinc 3 /* assignedDifferently */ 1
         7: .line 238
      StackMap locals: java.util.List java.util.Collection int[] int int org.apache.commons.math3.stat.clustering.Clusterable java.util.Iterator int
      StackMap stack:
            aload 0 /* clusters */
            iload 7 /* clusterIndex */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Cluster
            astore 8 /* cluster */
        start local 8 // org.apache.commons.math3.stat.clustering.Cluster cluster
         8: .line 239
            aload 8 /* cluster */
            aload 5 /* p */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.addPoint:(Lorg/apache/commons/math3/stat/clustering/Clusterable;)V
         9: .line 240
            aload 2 /* assignments */
            iload 4 /* pointIndex */
            iinc 4 /* pointIndex */ 1
            iload 7 /* clusterIndex */
            iastore
        end local 8 // org.apache.commons.math3.stat.clustering.Cluster cluster
        end local 7 // int clusterIndex
        end local 5 // org.apache.commons.math3.stat.clustering.Clusterable p
        10: .line 232
      StackMap locals: java.util.List java.util.Collection int[] int int top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        11: .line 243
            iload 3 /* assignedDifferently */
            ireturn
        end local 4 // int pointIndex
        end local 3 // int assignedDifferently
        end local 2 // int[] assignments
        end local 1 // java.util.Collection points
        end local 0 // java.util.List clusters
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   12     0             clusters  Ljava/util/List<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
            0   12     1               points  Ljava/util/Collection<TT;>;
            0   12     2          assignments  [I
            1   12     3  assignedDifferently  I
            2   12     4           pointIndex  I
            4   10     5                    p  TT;
            5   10     7         clusterIndex  I
            8   10     8              cluster  Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;
    Signature: <T::Lorg/apache/commons/math3/stat/clustering/Clusterable<TT;>;>(Ljava/util/List<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;Ljava/util/Collection<TT;>;[I)I
    MethodParameters:
             Name  Flags
      clusters     final
      points       final
      assignments  final

  private static <T extends org.apache.commons.math3.stat.clustering.Clusterable<T>> java.util.List<org.apache.commons.math3.stat.clustering.Cluster<T>> chooseInitialCenters(java.util.Collection<T>, int, java.util.Random);
    descriptor: (Ljava/util/Collection;ILjava/util/Random;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=23, args_size=3
        start local 0 // java.util.Collection points
        start local 1 // int k
        start local 2 // java.util.Random random
         0: .line 260
            new java.util.ArrayList
            dup
            aload 0 /* points */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
            astore 3 /* pointList */
        start local 3 // java.util.List pointList
         1: .line 263
            aload 3 /* pointList */
            invokeinterface java.util.List.size:()I
            istore 4 /* numPoints */
        start local 4 // int numPoints
         2: .line 267
            iload 4 /* numPoints */
            newarray 4
            astore 5 /* taken */
        start local 5 // boolean[] taken
         3: .line 270
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* resultSet */
        start local 6 // java.util.List resultSet
         4: .line 273
            aload 2 /* random */
            iload 4 /* numPoints */
            invokevirtual java.util.Random.nextInt:(I)I
            istore 7 /* firstPointIndex */
        start local 7 // int firstPointIndex
         5: .line 275
            aload 3 /* pointList */
            iload 7 /* firstPointIndex */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            astore 8 /* firstPoint */
        start local 8 // org.apache.commons.math3.stat.clustering.Clusterable firstPoint
         6: .line 277
            aload 6 /* resultSet */
            new org.apache.commons.math3.stat.clustering.Cluster
            dup
            aload 8 /* firstPoint */
            invokespecial org.apache.commons.math3.stat.clustering.Cluster.<init>:(Lorg/apache/commons/math3/stat/clustering/Clusterable;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 280
            aload 5 /* taken */
            iload 7 /* firstPointIndex */
            iconst_1
            bastore
         8: .line 284
            iload 4 /* numPoints */
            newarray 7
            astore 9 /* minDistSquared */
        start local 9 // double[] minDistSquared
         9: .line 288
            iconst_0
            istore 10 /* i */
        start local 10 // int i
        10: goto 15
        11: .line 289
      StackMap locals: java.util.Collection int java.util.Random java.util.List int boolean[] java.util.List int org.apache.commons.math3.stat.clustering.Clusterable double[] int
      StackMap stack:
            iload 10 /* i */
            iload 7 /* firstPointIndex */
            if_icmpeq 14
        12: .line 290
            aload 8 /* firstPoint */
            aload 3 /* pointList */
            iload 10 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            invokeinterface org.apache.commons.math3.stat.clustering.Clusterable.distanceFrom:(Ljava/lang/Object;)D
            dstore 11 /* d */
        start local 11 // double d
        13: .line 291
            aload 9 /* minDistSquared */
            iload 10 /* i */
            dload 11 /* d */
            dload 11 /* d */
            dmul
            dastore
        end local 11 // double d
        14: .line 288
      StackMap locals:
      StackMap stack:
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 10 /* i */
            iload 4 /* numPoints */
            if_icmplt 11
        end local 10 // int i
        16: .line 295
            goto 58
        17: .line 299
      StackMap locals:
      StackMap stack:
            dconst_0
            dstore 10 /* distSqSum */
        start local 10 // double distSqSum
        18: .line 301
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        19: goto 23
        20: .line 302
      StackMap locals: double int
      StackMap stack:
            aload 5 /* taken */
            iload 12 /* i */
            baload
            ifne 22
        21: .line 303
            dload 10 /* distSqSum */
            aload 9 /* minDistSquared */
            iload 12 /* i */
            daload
            dadd
            dstore 10 /* distSqSum */
        22: .line 301
      StackMap locals:
      StackMap stack:
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 12 /* i */
            iload 4 /* numPoints */
            if_icmplt 20
        end local 12 // int i
        24: .line 309
            aload 2 /* random */
            invokevirtual java.util.Random.nextDouble:()D
            dload 10 /* distSqSum */
            dmul
            dstore 12 /* r */
        start local 12 // double r
        25: .line 312
            iconst_m1
            istore 14 /* nextPointIndex */
        start local 14 // int nextPointIndex
        26: .line 316
            dconst_0
            dstore 15 /* sum */
        start local 15 // double sum
        27: .line 317
            iconst_0
            istore 17 /* i */
        start local 17 // int i
        28: goto 35
        29: .line 318
      StackMap locals: java.util.Collection int java.util.Random java.util.List int boolean[] java.util.List int org.apache.commons.math3.stat.clustering.Clusterable double[] double double int double int
      StackMap stack:
            aload 5 /* taken */
            iload 17 /* i */
            baload
            ifne 34
        30: .line 319
            dload 15 /* sum */
            aload 9 /* minDistSquared */
            iload 17 /* i */
            daload
            dadd
            dstore 15 /* sum */
        31: .line 320
            dload 15 /* sum */
            dload 12 /* r */
            dcmpl
            iflt 34
        32: .line 321
            iload 17 /* i */
            istore 14 /* nextPointIndex */
        33: .line 322
            goto 36
        34: .line 317
      StackMap locals:
      StackMap stack:
            iinc 17 /* i */ 1
      StackMap locals:
      StackMap stack:
        35: iload 17 /* i */
            iload 4 /* numPoints */
            if_icmplt 29
        end local 17 // int i
        36: .line 330
      StackMap locals:
      StackMap stack:
            iload 14 /* nextPointIndex */
            iconst_m1
            if_icmpne 44
        37: .line 331
            iload 4 /* numPoints */
            iconst_1
            isub
            istore 17 /* i */
        start local 17 // int i
        38: goto 43
        39: .line 332
      StackMap locals: int
      StackMap stack:
            aload 5 /* taken */
            iload 17 /* i */
            baload
            ifne 42
        40: .line 333
            iload 17 /* i */
            istore 14 /* nextPointIndex */
        41: .line 334
            goto 44
        42: .line 331
      StackMap locals:
      StackMap stack:
            iinc 17 /* i */ -1
      StackMap locals:
      StackMap stack:
        43: iload 17 /* i */
            ifge 39
        end local 17 // int i
        44: .line 340
      StackMap locals:
      StackMap stack:
            iload 14 /* nextPointIndex */
            iflt 59
        45: .line 342
            aload 3 /* pointList */
            iload 14 /* nextPointIndex */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            astore 17 /* p */
        start local 17 // org.apache.commons.math3.stat.clustering.Clusterable p
        46: .line 344
            aload 6 /* resultSet */
            new org.apache.commons.math3.stat.clustering.Cluster
            dup
            aload 17 /* p */
            invokespecial org.apache.commons.math3.stat.clustering.Cluster.<init>:(Lorg/apache/commons/math3/stat/clustering/Clusterable;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        47: .line 347
            aload 5 /* taken */
            iload 14 /* nextPointIndex */
            iconst_1
            bastore
        48: .line 349
            aload 6 /* resultSet */
            invokeinterface java.util.List.size:()I
            iload 1 /* k */
            if_icmpge 58
        49: .line 352
            iconst_0
            istore 18 /* j */
        start local 18 // int j
        50: goto 57
        51: .line 354
      StackMap locals: org.apache.commons.math3.stat.clustering.Clusterable int
      StackMap stack:
            aload 5 /* taken */
            iload 18 /* j */
            baload
            ifne 56
        52: .line 355
            aload 17 /* p */
            aload 3 /* pointList */
            iload 18 /* j */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            invokeinterface org.apache.commons.math3.stat.clustering.Clusterable.distanceFrom:(Ljava/lang/Object;)D
            dstore 19 /* d */
        start local 19 // double d
        53: .line 356
            dload 19 /* d */
            dload 19 /* d */
            dmul
            dstore 21 /* d2 */
        start local 21 // double d2
        54: .line 357
            dload 21 /* d2 */
            aload 9 /* minDistSquared */
            iload 18 /* j */
            daload
            dcmpg
            ifge 56
        55: .line 358
            aload 9 /* minDistSquared */
            iload 18 /* j */
            dload 21 /* d2 */
            dastore
        end local 21 // double d2
        end local 19 // double d
        56: .line 352
      StackMap locals:
      StackMap stack:
            iinc 18 /* j */ 1
      StackMap locals:
      StackMap stack:
        57: iload 18 /* j */
            iload 4 /* numPoints */
            if_icmplt 51
        end local 18 // int j
        end local 17 // org.apache.commons.math3.stat.clustering.Clusterable p
        end local 15 // double sum
        end local 14 // int nextPointIndex
        end local 12 // double r
        end local 10 // double distSqSum
        58: .line 295
      StackMap locals: java.util.Collection int java.util.Random java.util.List int boolean[] java.util.List int org.apache.commons.math3.stat.clustering.Clusterable double[]
      StackMap stack:
            aload 6 /* resultSet */
            invokeinterface java.util.List.size:()I
            iload 1 /* k */
            if_icmplt 17
        59: .line 372
      StackMap locals:
      StackMap stack:
            aload 6 /* resultSet */
            areturn
        end local 9 // double[] minDistSquared
        end local 8 // org.apache.commons.math3.stat.clustering.Clusterable firstPoint
        end local 7 // int firstPointIndex
        end local 6 // java.util.List resultSet
        end local 5 // boolean[] taken
        end local 4 // int numPoints
        end local 3 // java.util.List pointList
        end local 2 // java.util.Random random
        end local 1 // int k
        end local 0 // java.util.Collection points
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   60     0           points  Ljava/util/Collection<TT;>;
            0   60     1                k  I
            0   60     2           random  Ljava/util/Random;
            1   60     3        pointList  Ljava/util/List<TT;>;
            2   60     4        numPoints  I
            3   60     5            taken  [Z
            4   60     6        resultSet  Ljava/util/List<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
            5   60     7  firstPointIndex  I
            6   60     8       firstPoint  TT;
            9   60     9   minDistSquared  [D
           10   16    10                i  I
           13   14    11                d  D
           18   58    10        distSqSum  D
           19   24    12                i  I
           25   58    12                r  D
           26   58    14   nextPointIndex  I
           27   58    15              sum  D
           28   36    17                i  I
           38   44    17                i  I
           46   58    17                p  TT;
           50   58    18                j  I
           53   56    19                d  D
           54   56    21               d2  D
    Signature: <T::Lorg/apache/commons/math3/stat/clustering/Clusterable<TT;>;>(Ljava/util/Collection<TT;>;ILjava/util/Random;)Ljava/util/List<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
    MethodParameters:
        Name  Flags
      points  final
      k       final
      random  final

  private T getPointFromLargestVarianceCluster(java.util.Collection<org.apache.commons.math3.stat.clustering.Cluster<T>>);
    descriptor: (Ljava/util/Collection;)Lorg/apache/commons/math3/stat/clustering/Clusterable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=11, args_size=2
        start local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
        start local 1 // java.util.Collection clusters
         0: .line 385
            ldc -Infinity
            dstore 2 /* maxVariance */
        start local 2 // double maxVariance
         1: .line 386
            aconst_null
            astore 4 /* selected */
        start local 4 // org.apache.commons.math3.stat.clustering.Cluster selected
         2: .line 387
            aload 1 /* clusters */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 15
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection double org.apache.commons.math3.stat.clustering.Cluster top java.util.Iterator
      StackMap stack:
         3: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Cluster
            astore 5 /* cluster */
        start local 5 // org.apache.commons.math3.stat.clustering.Cluster cluster
         4: .line 388
            aload 5 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 15
         5: .line 391
            aload 5 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getCenter:()Lorg/apache/commons/math3/stat/clustering/Clusterable;
            astore 7 /* center */
        start local 7 // org.apache.commons.math3.stat.clustering.Clusterable center
         6: .line 392
            new org.apache.commons.math3.stat.descriptive.moment.Variance
            dup
            invokespecial org.apache.commons.math3.stat.descriptive.moment.Variance.<init>:()V
            astore 8 /* stat */
        start local 8 // org.apache.commons.math3.stat.descriptive.moment.Variance stat
         7: .line 393
            aload 5 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 10
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection double org.apache.commons.math3.stat.clustering.Cluster org.apache.commons.math3.stat.clustering.Cluster java.util.Iterator org.apache.commons.math3.stat.clustering.Clusterable org.apache.commons.math3.stat.descriptive.moment.Variance top java.util.Iterator
      StackMap stack:
         8: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            astore 9 /* point */
        start local 9 // org.apache.commons.math3.stat.clustering.Clusterable point
         9: .line 394
            aload 8 /* stat */
            aload 9 /* point */
            aload 7 /* center */
            invokeinterface org.apache.commons.math3.stat.clustering.Clusterable.distanceFrom:(Ljava/lang/Object;)D
            invokevirtual org.apache.commons.math3.stat.descriptive.moment.Variance.increment:(D)V
        end local 9 // org.apache.commons.math3.stat.clustering.Clusterable point
        10: .line 393
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 396
            aload 8 /* stat */
            invokevirtual org.apache.commons.math3.stat.descriptive.moment.Variance.getResult:()D
            dstore 9 /* variance */
        start local 9 // double variance
        12: .line 399
            dload 9 /* variance */
            dload 2 /* maxVariance */
            dcmpl
            ifle 15
        13: .line 400
            dload 9 /* variance */
            dstore 2 /* maxVariance */
        14: .line 401
            aload 5 /* cluster */
            astore 4 /* selected */
        end local 9 // double variance
        end local 8 // org.apache.commons.math3.stat.descriptive.moment.Variance stat
        end local 7 // org.apache.commons.math3.stat.clustering.Clusterable center
        end local 5 // org.apache.commons.math3.stat.clustering.Cluster cluster
        15: .line 387
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection double org.apache.commons.math3.stat.clustering.Cluster top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        16: .line 408
            aload 4 /* selected */
            ifnonnull 18
        17: .line 409
            new org.apache.commons.math3.exception.ConvergenceException
            dup
            getstatic org.apache.commons.math3.exception.util.LocalizedFormats.EMPTY_CLUSTER_IN_K_MEANS:Lorg/apache/commons/math3/exception/util/LocalizedFormats;
            iconst_0
            anewarray java.lang.Object
            invokespecial org.apache.commons.math3.exception.ConvergenceException.<init>:(Lorg/apache/commons/math3/exception/util/Localizable;[Ljava/lang/Object;)V
            athrow
        18: .line 413
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection double org.apache.commons.math3.stat.clustering.Cluster
      StackMap stack:
            aload 4 /* selected */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            astore 5 /* selectedPoints */
        start local 5 // java.util.List selectedPoints
        19: .line 414
            aload 5 /* selectedPoints */
            aload 0 /* this */
            getfield org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.random:Ljava/util/Random;
            aload 5 /* selectedPoints */
            invokeinterface java.util.List.size:()I
            invokevirtual java.util.Random.nextInt:(I)I
            invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            areturn
        end local 5 // java.util.List selectedPoints
        end local 4 // org.apache.commons.math3.stat.clustering.Cluster selected
        end local 2 // double maxVariance
        end local 1 // java.util.Collection clusters
        end local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   20     0            this  Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer<TT;>;
            0   20     1        clusters  Ljava/util/Collection<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
            1   20     2     maxVariance  D
            2   20     4        selected  Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;
            4   15     5         cluster  Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;
            6   15     7          center  TT;
            7   15     8            stat  Lorg/apache/commons/math3/stat/descriptive/moment/Variance;
            9   10     9           point  TT;
           12   15     9        variance  D
           19   20     5  selectedPoints  Ljava/util/List<TT;>;
    Exceptions:
      throws org.apache.commons.math3.exception.ConvergenceException
    Signature: (Ljava/util/Collection<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;)TT;
    MethodParameters:
          Name  Flags
      clusters  final

  private T getPointFromLargestNumberCluster(java.util.Collection<org.apache.commons.math3.stat.clustering.Cluster<T>>);
    descriptor: (Ljava/util/Collection;)Lorg/apache/commons/math3/stat/clustering/Clusterable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
        start local 1 // java.util.Collection clusters
         0: .line 427
            iconst_0
            istore 2 /* maxNumber */
        start local 2 // int maxNumber
         1: .line 428
            aconst_null
            astore 3 /* selected */
        start local 3 // org.apache.commons.math3.stat.clustering.Cluster selected
         2: .line 429
            aload 1 /* clusters */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 8
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection int org.apache.commons.math3.stat.clustering.Cluster top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Cluster
            astore 4 /* cluster */
        start local 4 // org.apache.commons.math3.stat.clustering.Cluster cluster
         4: .line 432
            aload 4 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            istore 6 /* number */
        start local 6 // int number
         5: .line 435
            iload 6 /* number */
            iload 2 /* maxNumber */
            if_icmple 8
         6: .line 436
            iload 6 /* number */
            istore 2 /* maxNumber */
         7: .line 437
            aload 4 /* cluster */
            astore 3 /* selected */
        end local 6 // int number
        end local 4 // org.apache.commons.math3.stat.clustering.Cluster cluster
         8: .line 429
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         9: .line 443
            aload 3 /* selected */
            ifnonnull 11
        10: .line 444
            new org.apache.commons.math3.exception.ConvergenceException
            dup
            getstatic org.apache.commons.math3.exception.util.LocalizedFormats.EMPTY_CLUSTER_IN_K_MEANS:Lorg/apache/commons/math3/exception/util/LocalizedFormats;
            iconst_0
            anewarray java.lang.Object
            invokespecial org.apache.commons.math3.exception.ConvergenceException.<init>:(Lorg/apache/commons/math3/exception/util/Localizable;[Ljava/lang/Object;)V
            athrow
        11: .line 448
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection int org.apache.commons.math3.stat.clustering.Cluster
      StackMap stack:
            aload 3 /* selected */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            astore 4 /* selectedPoints */
        start local 4 // java.util.List selectedPoints
        12: .line 449
            aload 4 /* selectedPoints */
            aload 0 /* this */
            getfield org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.random:Ljava/util/Random;
            aload 4 /* selectedPoints */
            invokeinterface java.util.List.size:()I
            invokevirtual java.util.Random.nextInt:(I)I
            invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            areturn
        end local 4 // java.util.List selectedPoints
        end local 3 // org.apache.commons.math3.stat.clustering.Cluster selected
        end local 2 // int maxNumber
        end local 1 // java.util.Collection clusters
        end local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0            this  Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer<TT;>;
            0   13     1        clusters  Ljava/util/Collection<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
            1   13     2       maxNumber  I
            2   13     3        selected  Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;
            4    8     4         cluster  Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;
            5    8     6          number  I
           12   13     4  selectedPoints  Ljava/util/List<TT;>;
    Exceptions:
      throws org.apache.commons.math3.exception.ConvergenceException
    Signature: (Ljava/util/Collection<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;)TT;
    MethodParameters:
          Name  Flags
      clusters  final

  private T getFarthestPoint(java.util.Collection<org.apache.commons.math3.stat.clustering.Cluster<T>>);
    descriptor: (Ljava/util/Collection;)Lorg/apache/commons/math3/stat/clustering/Clusterable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=13, args_size=2
        start local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
        start local 1 // java.util.Collection clusters
         0: .line 462
            ldc -Infinity
            dstore 2 /* maxDistance */
        start local 2 // double maxDistance
         1: .line 463
            aconst_null
            astore 4 /* selectedCluster */
        start local 4 // org.apache.commons.math3.stat.clustering.Cluster selectedCluster
         2: .line 464
            iconst_m1
            istore 5 /* selectedPoint */
        start local 5 // int selectedPoint
         3: .line 465
            aload 1 /* clusters */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 7
            goto 16
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection double org.apache.commons.math3.stat.clustering.Cluster int top java.util.Iterator
      StackMap stack:
         4: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Cluster
            astore 6 /* cluster */
        start local 6 // org.apache.commons.math3.stat.clustering.Cluster cluster
         5: .line 468
            aload 6 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getCenter:()Lorg/apache/commons/math3/stat/clustering/Clusterable;
            astore 8 /* center */
        start local 8 // org.apache.commons.math3.stat.clustering.Clusterable center
         6: .line 469
            aload 6 /* cluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            astore 9 /* points */
        start local 9 // java.util.List points
         7: .line 470
            iconst_0
            istore 10 /* i */
        start local 10 // int i
         8: goto 15
         9: .line 471
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection double org.apache.commons.math3.stat.clustering.Cluster int org.apache.commons.math3.stat.clustering.Cluster java.util.Iterator org.apache.commons.math3.stat.clustering.Clusterable java.util.List int
      StackMap stack:
            aload 9 /* points */
            iload 10 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            aload 8 /* center */
            invokeinterface org.apache.commons.math3.stat.clustering.Clusterable.distanceFrom:(Ljava/lang/Object;)D
            dstore 11 /* distance */
        start local 11 // double distance
        10: .line 472
            dload 11 /* distance */
            dload 2 /* maxDistance */
            dcmpl
            ifle 14
        11: .line 473
            dload 11 /* distance */
            dstore 2 /* maxDistance */
        12: .line 474
            aload 6 /* cluster */
            astore 4 /* selectedCluster */
        13: .line 475
            iload 10 /* i */
            istore 5 /* selectedPoint */
        end local 11 // double distance
        14: .line 470
      StackMap locals:
      StackMap stack:
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 10 /* i */
            aload 9 /* points */
            invokeinterface java.util.List.size:()I
            if_icmplt 9
        end local 10 // int i
        end local 9 // java.util.List points
        end local 8 // org.apache.commons.math3.stat.clustering.Clusterable center
        end local 6 // org.apache.commons.math3.stat.clustering.Cluster cluster
        16: .line 465
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection double org.apache.commons.math3.stat.clustering.Cluster int top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        17: .line 482
            aload 4 /* selectedCluster */
            ifnonnull 19
        18: .line 483
            new org.apache.commons.math3.exception.ConvergenceException
            dup
            getstatic org.apache.commons.math3.exception.util.LocalizedFormats.EMPTY_CLUSTER_IN_K_MEANS:Lorg/apache/commons/math3/exception/util/LocalizedFormats;
            iconst_0
            anewarray java.lang.Object
            invokespecial org.apache.commons.math3.exception.ConvergenceException.<init>:(Lorg/apache/commons/math3/exception/util/Localizable;[Ljava/lang/Object;)V
            athrow
        19: .line 486
      StackMap locals: org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer java.util.Collection double org.apache.commons.math3.stat.clustering.Cluster int
      StackMap stack:
            aload 4 /* selectedCluster */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getPoints:()Ljava/util/List;
            iload 5 /* selectedPoint */
            invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Clusterable
            areturn
        end local 5 // int selectedPoint
        end local 4 // org.apache.commons.math3.stat.clustering.Cluster selectedCluster
        end local 2 // double maxDistance
        end local 1 // java.util.Collection clusters
        end local 0 // org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   20     0             this  Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer<TT;>;
            0   20     1         clusters  Ljava/util/Collection<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
            1   20     2      maxDistance  D
            2   20     4  selectedCluster  Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;
            3   20     5    selectedPoint  I
            5   16     6          cluster  Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;
            6   16     8           center  TT;
            7   16     9           points  Ljava/util/List<TT;>;
            8   16    10                i  I
           10   14    11         distance  D
    Exceptions:
      throws org.apache.commons.math3.exception.ConvergenceException
    Signature: (Ljava/util/Collection<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;)TT;
    MethodParameters:
          Name  Flags
      clusters  final

  private static <T extends org.apache.commons.math3.stat.clustering.Clusterable<T>> int getNearestCluster(java.util.Collection<org.apache.commons.math3.stat.clustering.Cluster<T>>, );
    descriptor: (Ljava/util/Collection;Lorg/apache/commons/math3/stat/clustering/Clusterable;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // java.util.Collection clusters
        start local 1 // org.apache.commons.math3.stat.clustering.Clusterable point
         0: .line 500
            ldc 1.7976931348623157E308
            dstore 2 /* minDistance */
        start local 2 // double minDistance
         1: .line 501
            iconst_0
            istore 4 /* clusterIndex */
        start local 4 // int clusterIndex
         2: .line 502
            iconst_0
            istore 5 /* minCluster */
        start local 5 // int minCluster
         3: .line 503
            aload 0 /* clusters */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 7
            goto 10
      StackMap locals: java.util.Collection org.apache.commons.math3.stat.clustering.Clusterable double int int top java.util.Iterator
      StackMap stack:
         4: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.commons.math3.stat.clustering.Cluster
            astore 6 /* c */
        start local 6 // org.apache.commons.math3.stat.clustering.Cluster c
         5: .line 504
            aload 1 /* point */
            aload 6 /* c */
            invokevirtual org.apache.commons.math3.stat.clustering.Cluster.getCenter:()Lorg/apache/commons/math3/stat/clustering/Clusterable;
            invokeinterface org.apache.commons.math3.stat.clustering.Clusterable.distanceFrom:(Ljava/lang/Object;)D
            dstore 8 /* distance */
        start local 8 // double distance
         6: .line 505
            dload 8 /* distance */
            dload 2 /* minDistance */
            dcmpg
            ifge 9
         7: .line 506
            dload 8 /* distance */
            dstore 2 /* minDistance */
         8: .line 507
            iload 4 /* clusterIndex */
            istore 5 /* minCluster */
         9: .line 509
      StackMap locals: java.util.Collection org.apache.commons.math3.stat.clustering.Clusterable double int int org.apache.commons.math3.stat.clustering.Cluster java.util.Iterator double
      StackMap stack:
            iinc 4 /* clusterIndex */ 1
        end local 8 // double distance
        end local 6 // org.apache.commons.math3.stat.clustering.Cluster c
        10: .line 503
      StackMap locals: java.util.Collection org.apache.commons.math3.stat.clustering.Clusterable double int int top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        11: .line 511
            iload 5 /* minCluster */
            ireturn
        end local 5 // int minCluster
        end local 4 // int clusterIndex
        end local 2 // double minDistance
        end local 1 // org.apache.commons.math3.stat.clustering.Clusterable point
        end local 0 // java.util.Collection clusters
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0      clusters  Ljava/util/Collection<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;
            0   12     1         point  TT;
            1   12     2   minDistance  D
            2   12     4  clusterIndex  I
            3   12     5    minCluster  I
            5   10     6             c  Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;
            6   10     8      distance  D
    Signature: <T::Lorg/apache/commons/math3/stat/clustering/Clusterable<TT;>;>(Ljava/util/Collection<Lorg/apache/commons/math3/stat/clustering/Cluster<TT;>;>;TT;)I
    MethodParameters:
          Name  Flags
      clusters  final
      point     final

  static int[] $SWITCH_TABLE$org$apache$commons$math3$stat$clustering$KMeansPlusPlusClusterer$EmptyClusterStrategy();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 42
            getstatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.$SWITCH_TABLE$org$apache$commons$math3$stat$clustering$KMeansPlusPlusClusterer$EmptyClusterStrategy:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.values:()[Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.ERROR:Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;
            invokevirtual org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.ordinal:()I
            iconst_4
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.FARTHEST_POINT:Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;
            invokevirtual org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.ordinal:()I
            iconst_3
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.LARGEST_POINTS_NUMBER:Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;
            invokevirtual org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.ordinal:()I
            iconst_2
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.LARGEST_VARIANCE:Lorg/apache/commons/math3/stat/clustering/KMeansPlusPlusClusterer$EmptyClusterStrategy;
            invokevirtual org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy.ordinal:()I
            iconst_1
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            dup
            putstatic org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer.$SWITCH_TABLE$org$apache$commons$math3$stat$clustering$KMeansPlusPlusClusterer$EmptyClusterStrategy:[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
}
Signature: <T::Lorg/apache/commons/math3/stat/clustering/Clusterable<TT;>;>Ljava/lang/Object;
SourceFile: "KMeansPlusPlusClusterer.java"
NestMembers:
  org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy
InnerClasses:
  public final EmptyClusterStrategy = org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer$EmptyClusterStrategy of org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()