docs: protected boolean assignToNearestCluster(Relation<DiscreteUncertainObject> relation, List<double[]> means, List<? extends ModifiableDBIDs> clusters, WritableIntegerDataStore assignment, double[] varsum) {
      assert (k == means.size());
      boolean changed = false;
      Arrays.fill(varsum, 0.);
      for(DBIDIter iditer = relation.iterDBIDs(); iditer.valid(); iditer.advance()) {
        double mindist = Double.POSITIVE_INFINITY;
        DiscreteUncertainObject fv = relation.get(iditer);
        int minIndex = 0;
        for(int i = 0; i < k; i++) {
          double dist = getExpectedRepDistance(DoubleVector.wrap(means.get(i)), fv);
          if(dist < mindist) {
            minIndex = i;
            mindist = dist;
          }
        }
        varsum[minIndex] += mindist;
        changed |= updateAssignment(iditer, clusters, assignment, minIndex);
      }
      return changed;
    }