docs: protected void enqueue (final AbstractInvocation invocation) {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "enqueue", invocation);
  
      barrier.pass(); // Block until allowed to pass
    
      // We need to ensure that the thread processing this queue does not change the "running" state before we decide whether a new
      // thread needs to be started or not so synchronize on "this"
  
      synchronized (this) {
        final boolean isEmpty = isEmpty(); // Remember whether queue is currently empty or not
  
        // Add the invocation to the queue
  
        synchronized (barrier) {
          queue.add(invocation);
  
          queueSize += invocation.getSize();
  
          // Check to see if the queue limits have been exceeded and the queue should now be locked
  
          if (queueSize >= maxQueueSize || (maxQueueMsgs > 0 && queue.size() >= maxQueueMsgs)) {
            barrier.lock();
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Locked the barrier: bytes="+queueSize+" ("+maxQueueSize+") msgs="+queue.size()+" ("+maxQueueMsgs+")");
          } else {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Leaving barrier unlocked: bytes="+queueSize+" ("+maxQueueSize+") msgs="+queue.size()+" ("+maxQueueMsgs+")");
          }
        }
  
        // If queue was previously empty we need to either prompt the existing processing thread or start a new thread to
        // process the new invocation request
  
        if (isEmpty) {
          if (running) { // A processing thread already exists for this queue so wake it up
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Notifying existing thread");
            notify();
          } else { // We need to start a new processing thread
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Starting a new thread");
            boolean interrupted = true;
            while (interrupted) {
              try {
                threadPool.execute(this);
                interrupted = false;
              } catch (InterruptedException e) {
                // No FFDC code needed
              }
            }
          }
        }
      } // synchronized (this)
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "enqueue");
    }