docs: private void queueRequest(ManagedConnectionFactory managedConnectionFactory, long waitTimeout) throws ResourceAllocationException, ConnectionWaitTimeoutException {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(this, tc, "queueRequest", waitTimeout);
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              Tr.debug(tc, "Current connection pool", pm.toString());
          if (waitTimeout == 0) {
              --pm.waiterCount;
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(
                           tc,
                           "Timeout.  Decremented waiterCount, which is now "
                               + pm.waiterCount
                               + " on datasource "
                               + gConfigProps.cfName);
              }
              Object[] connWaitTimeoutparms = new Object[] { "queueRequest", gConfigProps.cfName, 0, pm.waiterCount,
                                                             pm.totalConnectionCount.get() };
              Tr.error(
                       tc,
                       "POOL_MANAGER_EXCP_CCF2_0001_J2CA0045",
                       connWaitTimeoutparms);
              String connWaitTimeoutMessage = Tr.formatMessage(tc, "POOL_MANAGER_EXCP_CCF2_0001_J2CA0045", connWaitTimeoutparms);
              ConnectionWaitTimeoutException cwte = new ConnectionWaitTimeoutException(connWaitTimeoutMessage);
              com.ibm.ws.ffdc.FFDCFilter.processException(cwte, J2CConstants.DMSID_MAX_CONNECTIONS_REACHED, "192", this.pm);
              pm.activeRequest.decrementAndGet();
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  Tr.exit(this, tc, "queueRequest", cwte);
              throw cwte;
          }
          if ((tc.isDebugEnabled())) {
              ++freePoolQueuedRequests;
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  String poolStats = pm.gatherPoolStatisticalData();
                  Tr.debug(this, tc, "Queueing Waiter for pool <" + gConfigProps.getXpathId() + ">. Current Pool Stats are:");
                  Tr.debug(this, tc, poolStats);
              }
          }
          try {
              if (pm.displayInfiniteWaitMessage) {
                  Tr.info(tc, "INFINITE_CONNECTION_WAIT_TIMEOUT_J2CA0127", gConfigProps.getXpathId());
  
                  pm.displayInfiniteWaitMessage = false; // only display this message once per PM.
              }
              pm.activeRequest.decrementAndGet();
              if (waitTimeout < 0) {
                  pm.waiterFreePoolLock.wait(0); //wait an infinite amount of time
              } else {
                  pm.waiterFreePoolLock.wait(waitTimeout); //wait the specified amount of time
              }
              pm.requestingAccessToPool();
          } catch (InterruptedException ie) {
              if (tc.isDebugEnabled()) {
                  Tr.debug(this, tc, "Interupted waiting for a connection");
              }
  
              synchronized (pm.waiterFreePoolLock) {
                  --pm.waiterCount;
              }
  
              if (tc.isDebugEnabled()) {
                  if (pm.waiterCount == 0) {
                      pm.waitersEndedTime = System.currentTimeMillis();
                      Tr.debug(this, tc, "Waiters: requests for connections are no longer being queued. End Time:" + pm.waitersEndedTime);
                      Tr.debug(this, tc, "Waiters: total time waiter were in queue: " + (pm.waitersEndedTime - pm.waitersStartedTime));
                  }
              }
              ResourceAllocationException throwMe = new ResourceAllocationException(ie.getMessage());
              throwMe.initCause(ie);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  Tr.exit(this, tc, "queueRequest", throwMe);
              throw throwMe;
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(this, tc, "queueRequest");
          }
      }