docs: @Override
      public void run() {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled()) // F743-425.CodRev
              Tr.entry(tc, "run: " + ivTimer.ivTaskId); // F743-425.CodRev
  
          if (serverStopping) {
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "Server shutting down; aborting");
              return;
          }
  
          if (ivRetries == 0) // This is the first try
          {
              // F743-7591 - Calculate the next expiration before calling the timeout
              // method.  This ensures that Timer.getNextTimeout will properly throw
              // NoMoreTimeoutsException.
              ivTimer.calculateNextExpiration();
          }
  
          // Log a warning if this timer is starting late
          ivTimer.checkLateTimerThreshold();
  
          try // F743-425.CodRev
          {
              // Call the timeout method; last chance effort to abort if cancelled
              if (!ivTimer.isIvDestroyed()) {
                  doWork();
              } else {
                  if (isTraceOn && tc.isEntryEnabled())
                      Tr.exit(tc, "Timer has been cancelled; aborting");
                  return;
              }
              ivRetries = 0;
  
              // re-schedule the alarm to go off again if it needs to,
              // and if timer had not been canceled
              ivTimer.scheduleNext(); // RTC107334
          } catch (Throwable ex) // F743-425.CodRev
          {
              // Do not FFDC... that has already been done when the method failed
              // All exceptions from timeout methods are system exceptions...
              // indicating the timeout method failed, and should be retried. d667153
              if (isTraceOn && tc.isDebugEnabled()) {
                  Tr.debug(tc, "NP Timer failed : " + ex.getClass().getName() + ":" + ex.getMessage(), ex);
              }
  
              if ((ivRetryLimit != -1) && // not configured to retry indefinitely
                  (ivRetries >= ivRetryLimit)) // and retry limit reached
              {
                  // Note: ivRetryLimit==0 means no retries at all
  
                  ivTimer.calculateNextExpiration();
                  ivTimer.scheduleNext();
                  ivRetries = 0;
                  Tr.warning(tc, "NP_TIMER_RETRY_LIMIT_REACHED_CNTR0179W", ivRetryLimit);
                  if (isTraceOn && tc.isEntryEnabled())
                      Tr.exit(tc, "Timer retry limit has been reached; aborting");
                  return;
              }
  
              ivRetries++;
  
              // begin 597753
              if (ivRetries == 1) {
                  // do first retry immediately, by re-entering this method
                  run();
              } else {
                  // re-schedule the alarm to go off after the retry interval
                  // (if timer had not been canceled)
                  ivTimer.scheduleRetry(ivRetryInterval); // RTC107334
              }
          }
  
          if (isTraceOn && tc.isEntryEnabled()) // F743-425.CodRev
              Tr.exit(tc, "run"); // F743-425.CodRev
      }