docs: @Override
      public void atPassivate(BeanId beanId) throws RemoteException
      {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "atPassivate " + beanId);
  
          BeanO bean = null;
          MasterKey key = new MasterKey(beanId);
  
          try {
  
              synchronized (locks.getLock(key)) {
  
                  if ((bean = (BeanO) cache.findDontPinNAdjustPinCount(key, 0)) != null)
                  {
                      bean.passivate();
                      cache.remove(key, false);
                      bean.ivCacheKey = null; // d199233
                      if (EJSPlatformHelper.isZOS() || // LIDB2775-23.4
                          passivationPolicy.equals(PassivationPolicy.ON_DEMAND))
                      {
                          reaper.remove(beanId);
                      }
                  }
              }
  
          } catch (RemoteException ex) {
              FFDCFilter.processException(ex, CLASS_NAME + ".atPassivate", "525", this);
              Tr.warning(tc, "UNABLE_TO_PASSIVATE_EJB_CNTR0005W",
                         new Object[] { bean, this, ex }); //p111002.3
              throw ex;
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "atPassivate");
      }