docs: @Deprecated
      protected void addThread(Runnable command) {
          Worker worker;
          if (_isDecoratedZOS) // 331761A
              worker = new DecoratedZOSWorker(command, threadid++); // 331761A
          else
              // 331761A
              worker = new Worker(command, threadid++); // LIDB1855-58
  
          // D527355.3 - If the current thread is an application thread, then the
          // creation of a new thread will copy the application class loader as the
          // context class loader. If the new thread is long-lived in this pool, the
          // application class loader will be leaked.
          if (contextClassLoader != null && THREAD_CONTEXT_ACCESSOR.getContextClassLoader(worker) != contextClassLoader) {
              THREAD_CONTEXT_ACCESSOR.setContextClassLoader(worker, contextClassLoader);
          }
  
          Thread.interrupted(); // PK27301
          threads_.put(worker, worker);
          ++poolSize_;
          ++activeThreads;
  
          // PK77809 Tell the buffer that we have created a new thread waiting for
          // work
          if (command == null) {
              requestBuffer.incrementWaitingThreads();
          }
  
          // must fire before it is started
          fireThreadCreated(poolSize_);
          try {
              worker.start();
          } catch (OutOfMemoryError error) {
              // 394200 - If an OutOfMemoryError is thrown because too many threads
              // have already been created, undo everything we've done.
              // Alex Ffdc.log(error, this, ThreadPool.class.getName(), "626"); //
              // D477704.2
              threads_.remove(worker);
              --poolSize_;
              --activeThreads;
              fireThreadDestroyed(poolSize_);
              throw error;
          }
      }