docs: final WrapperProxyState reconnect()
      {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "reconnect: " + this);
  
          HomeOfHomes homeOfHomes = EJSContainer.homeOfHomes;
  
          J2EEName j2eeName;
          if (ivUnversionedJ2EEName == null)
          {
              j2eeName = ivJ2EEName;
          }
          else
          {
              j2eeName = homeOfHomes.getVersionedJ2EEName(ivUnversionedJ2EEName);
          }
  
          EJSHome home = (EJSHome) homeOfHomes.getHome(j2eeName);
          if (home == null)
          {
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "reconnect: stopped");
              throw new EJBException("The referenced " + j2eeName.getComponent() +
                                     " bean in the " + j2eeName.getModule() +
                                     " module in the " + j2eeName.getApplication() +
                                     " application has been stopped and must be started again to be used.");
          }
  
          WrapperProxyState state;
          try
          {
              state = reconnect(home);
          } catch (RemoteException ex)
          {
              FFDCFilter.processException(ex, getClass().getName() + ".update", "225", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  Tr.exit(tc, "reconnect", ex);
              throw new EJBException(ex);
          }
  
          // Note that if this state was previously disconnected but the
          // application was not actually stopped (e.g., because the wrapper was
          // evicted from the wrapper cache), then the call to update above might
          // have simply reconnected and returned this same state object.
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "reconnect");
          return state;
      }