docs: private void scheduleEvictionTask(long timeoutInMilliSeconds) {
          EvictionTask evictionTask = new EvictionTask();
  
          // Before creating new Timers, which create new Threads, we
          // must ensure that we are not using any application classloader
          // as the current thread's context classloader.  Otherwise, it
          // is possible that the new Timer thread would hold on to the
          // app classloader indefinitely, thereby leaking it and all
          // classes that it loaded, long after the app has been stopped.
          SwapTCCLAction swapTCCL = new SwapTCCLAction();
          AccessController.doPrivileged(swapTCCL);
          try {
              timer = new Timer(true);
              long period = timeoutInMilliSeconds / 3;
              long delay = period;
              timer.schedule(evictionTask, delay, period);
          } finally {
              AccessController.doPrivileged(swapTCCL);
          }
      }