docs: private Thread getStuckThread(Thread mainThread) {
          List<Thread> threadsInGroup = getThreadsInGroup(mainThread.getThreadGroup());
          if (threadsInGroup.isEmpty()) {
              return null;
          }
  
          // Now that we have all the threads in the test's thread group: Assume that
          // any thread we're "stuck" in is RUNNABLE.  Look for all RUNNABLE threads. 
          // If just one, we return that (unless it equals threadMain).  If there's more
          // than one, pick the one that's using the most CPU time, if this feature is
          // supported.
          Thread stuckThread = null;
          long maxCpuTime = 0;
          for (Thread thread : threadsInGroup) {
              if (thread.getState() == Thread.State.RUNNABLE) {
                  long threadCpuTime = cpuTime(thread);
                  if (stuckThread == null || threadCpuTime > maxCpuTime) {
                      stuckThread = thread;
                      maxCpuTime = threadCpuTime;
                  }
              }               
          }
          return (stuckThread == mainThread) ? null : stuckThread;
      }