docs: @Trivial
      private String toIntervalData(double throughput, double forecast, double shrinkScore, double growScore, int poolSize, int poolAdjustment) {
          final int RANGE = 25;
  
          StringBuilder sb = new StringBuilder();
          sb.append("\nThroughput:");
          sb.append(String.format(" previous = %.6f", Double.valueOf(previousThroughput)));
          sb.append(String.format(" current = %.6f", Double.valueOf(throughput)));
          sb.append(String.format(" forecast = %.6f", Double.valueOf(forecast)));
  
          sb.append("\nHeuristics:");
          sb.append(String.format(" queueDepth = %8d", Integer.valueOf(queueDepth)));
          sb.append(String.format(" consecutiveQueueEmptyCount = %2d", Integer.valueOf(consecutiveQueueEmptyCount)));
          sb.append(String.format(" consecutiveNoAdjustment = %2d", Integer.valueOf(consecutiveNoAdjustment)));
  
          sb.append("\nOutliers:  ");
          sb.append(String.format(" consecutiveOutlierAfterAdjustment = %2d", Integer.valueOf(consecutiveOutlierAfterAdjustment)));
          sb.append(String.format(" hangResolutionPoolSize = %2d", Integer.valueOf(hangBufferPoolSize)));
  
          sb.append("\nAttraction:");
          sb.append(String.format(" shrinkScore = %.6f", Double.valueOf(shrinkScore)));
          sb.append(String.format(" growScore = %.6f", Double.valueOf(growScore)));
          sb.append(String.format(" lastAction = %s", lastAction));
  
          sb.append("\nCPU:");
          sb.append(String.format(" cpuUtil = %.2f", Double.valueOf(cpuUtil)));
          sb.append(String.format(" processCpuUtil = %.2f", Double.valueOf(processCpuUtil)));
          sb.append(String.format(" systemCpuUtil = %.2f", Double.valueOf(systemCpuUtil)));
  
          sb.append("\nIncrement:");
          sb.append(String.format(" poolSize = %2d", Integer.valueOf(poolSize)));
          sb.append(String.format(" poolIncrement = %2d", Integer.valueOf(poolIncrement)));
          sb.append(String.format(" poolDecrement = %2d", Integer.valueOf(poolDecrement)));
          sb.append(String.format(" compareRange = %2d", Integer.valueOf(compareRange)));
  
          sb.append("\nConfig:");
          sb.append(String.format(" coreThreads = %2d", Integer.valueOf(coreThreads)));
          sb.append(String.format(" maxThreads = %2d", Integer.valueOf(maxThreads)));
  
          sb.append("\nStatistics:\n");
  
          Integer[] poolSizes = new Integer[2 * RANGE + 1];
          ThroughputDistribution[] tputDistros = new ThroughputDistribution[2 * RANGE + 1];
          Integer poolSizeInteger = Integer.valueOf(poolSize);
          int start = RANGE;
          int end = RANGE;
          poolSizes[RANGE] = poolSizeInteger;
          tputDistros[RANGE] = getThroughputDistribution(poolSize, false);
          Integer prior = threadStats.lowerKey(poolSizeInteger);
          Integer next = threadStats.higherKey(poolSizeInteger);
          for (int i = 1; i <= RANGE; i++) {
              if (prior != null) {
                  start--;
                  poolSizes[start] = prior;
                  tputDistros[start] = getThroughputDistribution(prior, false);
                  prior = threadStats.lowerKey(prior);
              }
              if (next != null) {
                  end++;
                  poolSizes[end] = next;
                  tputDistros[end] = getThroughputDistribution(next, false);
                  next = threadStats.higherKey(next);
              }
          }
          for (int i = start; i <= end; i++) {
              sb.append(String.format("%s%3d threads: %s%n", (poolSizes[i] == poolSizeInteger) ? "-->" : "   ", poolSizes[i], String.valueOf(tputDistros[i])));
          }
  
          if (poolAdjustment == 0) {
              sb.append("### No pool adjustment ###");
          } else if (poolAdjustment < 0) {
              sb.append("--- Shrinking to " + (poolSize + poolAdjustment) + " ---");
          } else {
              sb.append("+++ Growing to " + (poolSize + poolAdjustment) + " +++");
          }
  
          return sb.toString();
      }