docs: void deferTask(Runnable task, String appName, PersistentExecutorImpl persistentExecutor) {
          ApplicationState state;
          ExecutorService executor;
          lock.writeLock().lock();
          try {
              executor = this.executor;
              state = appStates.get(appName);
              if (state != ApplicationState.STARTED) {
                  Set<Runnable> taskSet = deferredTasks.get(appName);
                  if (taskSet == null) {
                      deferredTasks.put(appName, taskSet = new HashSet<Runnable>());
                      // Avoid the warning if the application is in the process of starting
                      if (state != ApplicationState.STARTING && !persistentExecutor.deactivated)
                          Tr.warning(tc, "CWWKC1556.task.exec.deferred", appName);
                  }
                  taskSet.add(task);
              }
          } finally {
              lock.writeLock().unlock();
          }
  
          // No need to defer, the app has started
          if (state == ApplicationState.STARTED)
              executor.submit(task);
      }