docs: private MCWrapper getMCWrapperFromMatch(
                                              Subject subject,
                                              ConnectionRequestInfo cri,
                                              ManagedConnectionFactory managedFactory,
                                              MCWrapper mcWrapperTemp) throws ResourceAllocationException {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(this, tc, "getMCWrapperFromMatch", mcWrapperTemp);
          }
          MCWrapper mcWrapper = null;
          ManagedConnection mc = null;
          /*
           * Create a new set for every matchManagedConnection. This currently is faster than having a object pool
           * of HashSet objects that would be require synchronization. In the future, we may need to use an object pool or
           * have a matchManagedConnection that support passing a managedConnection instead of a Set.
           */
          Set<ManagedConnection> freePoolMCSet = new HashSet<ManagedConnection>(1);
          try {
              freePoolMCSet.add(mcWrapperTemp.getManagedConnection());
          } catch (java.lang.IllegalStateException e) {
              /*
               * This was an addition to do to application threading issue,
               * where we had a problem with bad mcWrappers staying in the free pool.
               * Instead of leaving this bad mcWrapper in the free pool, we are going
               * to remove it and throw the same exception, This will reduce the chance
               * of bad mcWrappers staying in the pool resulting in an unrecoverable pool.
               */
              synchronized (freeConnectionLockObject) {
                  mcWrapperList.remove(mcWrapperTemp);
              }
              throw e;
          }
  
          try {
              int poolState = mcWrapperTemp.getPoolState();
              mcWrapperTemp.setPoolState(50);
              mc = managedFactory.matchManagedConnections(freePoolMCSet, subject, cri);
  
              mcWrapperTemp.setPoolState(poolState);
          } catch (ResourceException exn1) {
              com.ibm.ws.ffdc.FFDCFilter.processException(exn1, "com.ibm.ejs.j2c.poolmanager.FreePool.getMCWrapperFromMatch", "786", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(this, tc, "datasource " + gConfigProps.cfName + ": ResourceException " + exn1);
                  Tr.debug(this, tc, "Throwing ResourceAllocationException...");
                  Tr.debug(this, tc, "match(), Pool contents ==> " + this);
              }
              ResourceAllocationException throwMe = new ResourceAllocationException(exn1.getMessage(), exn1.getErrorCode());
              throwMe.initCause(exn1.getCause());
              pm.activeRequest.decrementAndGet();
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  Tr.exit(this, tc, "getMCWrapperFromMatch", throwMe);
              throw (throwMe);
          }
  
          if (mc != null) {
              mcWrapper = mcWrapperTemp;
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(this, tc, "getMCWrapperFromMatch", mcWrapper);
          }
  
          return mcWrapper;
      }