docs: private void runForEachK(String prefix, int mink, int maxk, IntFunction<OutlierResult> runner, BiConsumer<String, OutlierResult> out) {
      if(isDisabled(prefix)) {
        LOG.verbose("Skipping (disabled): " + prefix);
        return; // Disabled
      }
      LOG.verbose("Running " + prefix);
      final int digits = (int) FastMath.ceil(FastMath.log10(krange.getMax() + 1));
      final String format = "%s-%0" + digits + "d";
      krange.forEach(k -> {
        if(k >= mink && k <= maxk) {
          Duration time = LOG.newDuration(this.getClass().getCanonicalName() + "." + prefix + ".k" + k + ".runtime").begin();
          OutlierResult result = runner.apply(k);
          LOG.statistics(time.end());
          if(result != null) {
            out.accept(String.format(Locale.ROOT, format, prefix, k), result);
            result.getHierarchy().removeSubtree(result);
          }
        }
      });
    }