void print(@NotNull PrintStream out) {
    out.printf("========================= %s =========================", name);
    out.println();
    for (StatsCounters sc: StatsCounters.values()) {
      String name = sc.name();
      long val = myCounters[sc.ordinal()].get();
      if (val == 0) // skip non-informative counters
        continue;
      if (name.endsWith("DurationNs")) {
        if (val < 1000) // skip non-informative counters
          continue;
        name = name.replace("DurationNs", "DurationMs");
        val /= 1000000L;
      }
      out.printf("%s=%d\n", name, val);
    }
    if (!actionStats.isEmpty()) {
      AnActionStats total = new AnActionStats("total");
      for (AnActionStats as : actionStats.values()) {
        total.accumulate(as);
      }
      total.print(out);
    }
  }
void print(@NotNull PrintStream out)