code: @Override
      public void restore(final List<DataSlice> dataSlices)
                      throws SevereMessageStoreException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "restore", dataSlices);
  
          stream = (MessageReferenceStream) getReferenceStream();
          //we can only register the listeners if we are fully initialized
          if (stream instanceof DurableSubscriptionItemStream)
          {
              if (!stream.hasInDoubtItems())
              {
                  stream.registerListeners(this);
                  failedInitInRestore = false; //Set to false so we don't call it again
              }
              else
              {
                  //we are not yet restored due to an indoubt tran.
                  //We have to mark that we failed to initialise and do
                  //it later when we get a callback
                  failedInitInRestore = true;
              }
          }
  
          // If in-doubt remove, set current active transaction for ordered messaging
          if (isRemoving())
              stream.setCurrentTransaction(this, false);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "restore");
      }
docs: Feature SIB0112b.mp.1