docs: @Override
      public synchronized void run() {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "run: size=" + ivAllRemoteAsyncResults.size());
  
          if (ivIsCanceled) {
              //if this instance has been canceled, we do no more processing.
              // this also guarantees that a future alarm is not created.
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "run: cancelled");
              return;
          }
  
          ivFuture = null;
  
          int numRemoved = 0;
  
          // Re-write the alarm to use the LinkedHashSet, iterating thru the oldest entries removing
          // the server-side Future objects that have timed out until an object that hasn't reached
          // timeout or the list is empty.  This will avoid iterating over every entry in the list.  d623593
          if (!ivAllRemoteAsyncResults.isEmpty()) {
              long currentTime = System.currentTimeMillis();
  
              for (Iterator<RemoteAsyncResultImpl> iterator = ivAllRemoteAsyncResults.iterator(); iterator.hasNext();) {
                  RemoteAsyncResultImpl asyncResult = iterator.next();
  
                  long staleDuration = currentTime - asyncResult.getTimeoutStartTime();
                  if (staleDuration >= ivFutureObjectTimeoutMillis) {
                      releaseResources(asyncResult); // d690014.3
                      iterator.remove();
                      numRemoved++;
                  } else {
                      // d690014 - Schedule an alarm to be fired at the time that the
                      // next future should time out.  If that is soon, then use a
                      // minimum interval to avoid scheduling too many alarms.
                      long alarmTime = Math.max(ivFutureObjectTimeoutMillis - staleDuration, MINIMUM_ALARM_INTERVAL_MILLIS);
                      ivFuture = ivScheduledExecutor.schedule(this, alarmTime, TimeUnit.MILLISECONDS);
  
                      if (isTraceOn && tc.isDebugEnabled())
                          Tr.debug(tc, "next " + asyncResult + "; alarm=" + alarmTime);
                      break;
                  }
              }
  
              // d690014.1 - If we previously issued a warning because there were
              // too many results, check if this sweep reduced the number of results
              // enough that we should warn again if the number of we get too many
              // results again in the future.
              if (ivWarnedNearMax) {
                  int size = ivAllRemoteAsyncResults.size();
                  ivWarnedNearMax &= size >= ivSafeResultsThreshold;
                  ivWarnedExceededMax &= size >= ivNearMaxResultsThreshold;
              }
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "run: size=" + ivAllRemoteAsyncResults.size() + ", removed=" + numRemoved);
      }