docs: protected void reconstitute(
                                  MessageProcessor processor,
                                  HashMap<String, Object> durableSubscriptionsTable,
                                  int startMode) throws SIResourceException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(
                          tc,
                          "reconstitute",
                          new Object[] { processor, durableSubscriptionsTable, Integer.valueOf(startMode) });
  
          super.reconstitute(processor);
  
          // Links are 'BaseDestinationHandlers' but have no destination-like addressibility.
          if (!isLink())
          {
              _name = getDefinition().getName();
              _destinationAddr = SIMPUtils.createJsDestinationAddress(_name, null, getBus());
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              SibTr.debug(
                          tc,
                          "Reconstituting "
                                          + (isPubSub() ? "pubsub" : "ptp")
                                          + " BaseDestinationHandler "
                                          + getName());
  
          String name = getName();
          if ((name.startsWith(SIMPConstants.TEMPORARY_QUEUE_DESTINATION_PREFIX) || name.startsWith(SIMPConstants.TEMPORARY_PUBSUB_DESTINATION_PREFIX)))
          {
              _isTemporary = true;
              _isSystem = false;
          }
          else
          {
              _isTemporary = false;
              _isSystem = name.startsWith(SIMPConstants.SYSTEM_DESTINATION_PREFIX);
          }
  
          /*
           * Any kind of failure while retrieving data from the message store (whether
           * problems with the MS itself or with the data retrieved) means this
           * destination should be marked as corrupt. The only time an exception
           * should be thrown back up to the DM is when the corruption of the
           * destination is fatal to starting the ME (such as a corrupt system
           * destination, currently).
           */
          try
          {
              // Create appropriate state objects
              createRealizationAndState(messageProcessor);
  
              // Restore GD ProtocolItemStream before creating InputHandler
              _protoRealization.
                              getRemoteSupport().
                              reconstituteGD();
  
              // Reconstitute message ItemStreams
              if (isPubSub())
              {
                  // Indicate that the destinationHandler has not yet been reconciled
                  _reconciled = false;
  
                  createControlAdapter();
  
                  //Check if we are running in an ND environment.  If not we can skip
                  //some performance intensive WLM work
                  _singleServer = messageProcessor.isSingleServer();
                  _pubSubRealization.reconstitute(startMode,
                                                  durableSubscriptionsTable);
  
              }
              else
              {
                  initializeNonPersistent(processor, durableSubscriptionsTable, null);
  
                  // Indicate that the destinationHandler has not yet been reconciled
                  _reconciled = false;
  
                  _ptoPRealization.reconstitute(startMode,
                                                definition,
                                                isToBeDeleted(),
                                                isSystem());
              }
  
              // Reconstitute GD target streams
              _protoRealization.
                              reconstituteGDTargetStreams();
          } catch (Exception e)
          {
              FFDCFilter.processException(
                                          e,
                                          "com.ibm.ws.sib.processor.impl.BaseDestinationHandler.reconstitute",
                                          "1:945:1.700.3.45",
                                          this);
  
              SibTr.exception(tc, e);
  
              // At the moment, any exception we get while reconstituting means that we
              // want to mark the destination as corrupt.
              _isCorruptOrIndoubt = true;
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "reconstitute", e);
  
              throw new SIResourceException(e);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              SibTr.debug(
                          tc,
                          "Reconstituted "
                                          + (isPubSub() ? "pubsub" : "ptp")
                                          + " BaseDestinationHandler "
                                          + getName());
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "reconstitute");
      }