docs: public void printThreadCpuUsages(OutputStream out, CpuUsageComparator cmp) {
      final PrintWriter writer = getPrintWriter(out);
      final Map<String, Object> threadCpuUsages = getThreadCpuUsages(cmp);
  
      writer.printf("Time: %s%n%n", new Date((Long) threadCpuUsages.get(CURRENT_TIME)));
      final long uptimeMillis = (Long) threadCpuUsages.get(UPTIME_MS);
      final long uptimeNanos = TimeUnit.NANOSECONDS.convert(uptimeMillis, TimeUnit.MILLISECONDS);
      writer.printf("Uptime: %s%n%n", toDuration(uptimeNanos));
  
      @SuppressWarnings("unchecked")
      final Map<String, Long> jvmUsageTime = (Map<String, Long>)
          threadCpuUsages.get(JVM_USAGE_TIME);
      writer.println("JVM Usage Time: ");
      writer.printf("%11s %11s %11s %11s   %7s   %s%n",
          "1-min", "5-min", "15-min", "overall", "id", "name");
      writer.printf("%11s %11s %11s %11s   %7s   %s%n",
          toDuration(jvmUsageTime.get(ONE_MIN)),
          toDuration(jvmUsageTime.get(FIVE_MIN)),
          toDuration(jvmUsageTime.get(FIFTEEN_MIN)),
          toDuration(jvmUsageTime.get(OVERALL)),
          "-",
          "jvm");
      writer.println();
  
      @SuppressWarnings("unchecked")
      final Map<String, Double> jvmUsagePerc =
          (Map<String, Double>) threadCpuUsages.get(JVM_USAGE_PERCENT);
      writer.println("JVM Usage Percent: ");
      writer.printf("%11s %11s %11s %11s   %7s   %s%n",
          "1-min", "5-min", "15-min", "overall", "id", "name");
      writer.printf("%10.2f%% %10.2f%% %10.2f%% %10.2f%%   %7s   %s%n",
          jvmUsagePerc.get(ONE_MIN),
          jvmUsagePerc.get(FIVE_MIN),
          jvmUsagePerc.get(FIFTEEN_MIN),
          jvmUsagePerc.get(OVERALL),
          "-",
          "jvm");
      writer.println();
  
      writer.println("Breakdown by thread (100% = total cpu usage for jvm):");
      writer.printf("%11s %11s %11s %11s   %7s   %s%n",
          "1-min", "5-min", "15-min", "overall", "id", "name");
      @SuppressWarnings("unchecked")
      List<Map<String, Object>> threads =
          (List<Map<String, Object>>) threadCpuUsages.get(THREADS);
      for (Map<String, Object> thread : threads) {
        writer.printf("%10.2f%% %10.2f%% %10.2f%% %10.2f%%   %7d   %s%n",
            thread.get(ONE_MIN),
            thread.get(FIVE_MIN),
            thread.get(FIFTEEN_MIN),
            thread.get(OVERALL),
            thread.get(ID),
            thread.get(NAME));
      }
      writer.println();
      writer.flush();
    }