docs: public boolean preInvoke(EJSWrapperBase wrapper) // d140003.9
      throws CSIException,
                      RemoteException
      {
          // If the wrapper has already been pinned by some other thread or
          // transaction, then don't bother pinning again. This can
          // significantly reduce the contention caused by the synchronized
          // block in Cache.pin (especially for Stateless beans that have
          // a singleton wrapper).                                         d140003.9
          if (wrapper.ivCommon.pinned > 0) // d195605
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "preInvoke : pinned = false (already pinned)",
                           wrapper);
              return false;
          }
  
          // Attempt to pin the wrapper in the Wrapper Cache.  Only one thread
          // that is using the wrapper needs to pin it, as the pin/unpin is
          // largely done just to update the LRU data.                     d140003.9
          // This can now be done directly on the wrapper, avoiding the lookup
          // in the wrapper cache. The pinOnce method is synchronized on the
          // bucket to avoid multiple pins.                                  d195605
          boolean pinned = wrapper.ivCommon.pinOnce();
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              Tr.debug(tc, "preInvoke : pinned = " + pinned, wrapper);
  
          return pinned;
      }