docs: public EJSWrapperCommon getWrapper(BeanId id) // f111627
      throws CSIException,
                      RemoteException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.entry(tc, "getWrapper");
  
          EJSWrapperCommon result = null; // f111627
  
          // If this BeanId does not already have its serialized byte array
          // cached, and it is not a singleton beanId (for homes, stateless,
          // and messagedriven), then look in the cache of beanIds that have
          // serialized byte arrays cached.                               d140003.12
          if (id.byteArray == null && !id._isHome && id.pkey != null)
              id = beanIdCache.find(id);
  
          ByteArray wrapperKey = id.getByteArray();
          wrapperKey.setBeanId(id);
  
          // Use the findAndFault logic to load a wrapper into the cache
          // if required.
          try {
              result = (EJSWrapperCommon) wrapperCache.findAndFault(wrapperKey); // f111627
          } catch (FaultException ex) {
  
              FFDCFilter.processException(ex, CLASS_NAME + ".getWrapper", "259", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                  Tr.event(tc, "Unable to fault in wrapper", ex);
              throw new CSIException(ex.toString());
          }
  
          // At this point, all BeanIds are known to have the serialized
          // byte array cached, so put Stateful and Entity BeanIds in the
          // BeanId Cache.  BeanIds for homes, stateless, and messagedriven
          // are singletons and already cached on EJSHome.                 d154342.1
          if (!id._isHome && id.pkey != null)
              beanIdCache.add(result.getBeanId());
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.exit(tc, "getWrapper");
          return result;
      }