docs: public void restoreInternal(final List<DataSlice> dataSlices, boolean throwExceptionIfMsgNotAvailable)
                      throws SevereMessageStoreException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "restoreInternal", new Object[] { dataSlices, Boolean.valueOf(throwExceptionIfMsgNotAvailable) });
  
          try
          {
              //get a new message instance
              JsMessageFactory jmf = JsMessageFactory.getInstance();
  
              // Defect 430302
              // We need to pass a clone of the list as MFP may modify
              // the list before passing it to Comms. We won't assume that the
              // List is implemented as an ArrayList so we create our own now
              ArrayList arraylistDataSlices = new ArrayList(dataSlices);
              msg = jmf.restoreJsMessage(arraylistDataSlices, getOwningMessageStore());
              //Updating Redelivery count to MFP as dataSlices do not have it.
              if (msg != null)
                  msg.setRedeliveredCount(guessRedeliveredCount());
  
              itemstream = (SIMPItemStream) getItemStream();
  
              if (!restoringJsMessageOnly)
                  initialiseNonPersistent(true);
  
          } catch (Exception e)
          {
              // No FFDC code needed
              // set msg as null when specified not to throw Exception when message not available
              if ((e instanceof NotInMessageStore) && !throwExceptionIfMsgNotAvailable)
              {
                  msg = null;
              }
              else
              {
                  FFDCFilter.processException(
                                              e,
                                              "com.ibm.ws.sib.processor.impl.store.items.MessageItem.restoreInternal",
                                              "1:677:1.244.1.40",
                                              this);
  
                  SibTr.exception(tc, e);
  
                  // PK54812 If the exception represents a damaged message item, mark the
                  // destination as invalid
                  if (e instanceof MessageRestoreFailedException) {
                      SIMPItemStream stream = (SIMPItemStream) getItemStream();
                      DestinationHandler destHandler = getDestinationHandler(false, stream);
                      destHandler.setCorrupt(true);
                  }
  
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(this, tc, "restoreInternal", e);
  
                  // The error message is already NLS'd
                  throw new MessageStoreRuntimeException(e);
              }
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "restoreInternal");
      }