docs: protected void returnToFreePool(MCWrapper mcWrapper) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(this, tc, "returnToFreePool", gConfigProps.cfName);
          }
          if (mcWrapper.shouldBeDestroyed() || mcWrapper.hasFatalErrorNotificationOccurred(fatalErrorNotificationTime)
              || ((pm.agedTimeout != -1)
                  && (mcWrapper.hasAgedTimedOut(pm.agedTimeoutMillis)))) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  if (mcWrapper.shouldBeDestroyed()) {
                      Tr.debug(this, tc, "Connection destroy flag is set, removing connection " + mcWrapper);
                  }
                  if (mcWrapper.hasFatalErrorNotificationOccurred(fatalErrorNotificationTime)) {
                      Tr.debug(this, tc, "Fatal error occurred, removing connection " + mcWrapper);
                  }
                  if (((pm.agedTimeout != -1) && (mcWrapper.hasAgedTimedOut(pm.agedTimeoutMillis)))) {
                      Tr.debug(this, tc, "Aged timeout exceeded, removing connection " + mcWrapper);
                  }
                  if (mcWrapper.isDestroyState()) {
                      Tr.debug(this, tc, "Mbean method purgePoolContents with option immediate was used." +
                                         "  Connection cleanup and destroy is being processed.");
                  }
              }
              if (mcWrapper.isDestroyState()) {
                  final FreePool tempFP = this;
                  final MCWrapper tempMCWrapper = mcWrapper;
                  ThreadSupportedCleanupAndDestroy tscd = new ThreadSupportedCleanupAndDestroy(pm.tscdList, tempFP, tempMCWrapper);
                  pm.tscdList.add(tscd);
                  pm.connectorSvc.execSvcRef.getServiceWithException().submit(tscd);
              } else {
                  cleanupAndDestroyMCWrapper(mcWrapper); // cleanup, remove, then release mcWrapper
                  // Do not return this mcWrapper back to the free pool.
                  removeMCWrapperFromList(mcWrapper, _mcWrapperDoesNotExistInFreePool, _synchronizeInMethod, _notifyWaiter, _decrementTotalCounter);
              }
          } else {
              returnToFreePoolDelegated(mcWrapper); // Added to Help PMI Stuff.Unable to inject code in if/else conditional situations.
          } // end else -- the mcWrapper is not stale
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(this, tc, "returnToFreePool");
          }
      }