docs: public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
          if (executor.isShutdown()) {
              throw new RejectedExecutionException();
          }
          
          final BlockingQueue<Runnable> poolQueue = executor.getQueue();
          if (LOG.isDebugEnabled()) {
              LOG.debug("Putting Runnable into BlockingQueue(size=" + poolQueue.size() + ") directly and potentially waiting due to executor rejection");
          }
          
          try {
              poolQueue.put(r);
              if (LOG.isDebugEnabled()) {
                  LOG.debug("Put Runnable into BlockingQueue(size=" + poolQueue.size() + ") directly due to executor rejection");
              }
          }
          catch (InterruptedException e) {
              throw new RejectedExecutionException("Interrupted while waiting to queue Runnable", e);
          }
      }