docs: private void deleteAndUnlockPersistentStream(StreamInfo sinfo, ArrayList valueTicks) throws MessageStoreException, SIRollbackException, SIConnectionLostException, SIIncorrectCallException, SIResourceException, SIErrorException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "deleteAndUnlockPersistentStream", new Object[]{sinfo, valueTicks});
  
      // create a transaction, and delete all AOValue ticks, unlock the persistent locks,
      // and then remove sinfo.itemStream, and sinfo.item
  
      LocalTransaction tran = getLocalTransaction();
      cleanupTicks(sinfo, tran, valueTicks);
  
      Transaction msTran = mp.resolveAndEnlistMsgStoreTransaction(tran);
  
      sinfo.itemStream.lockItemIfAvailable(controlItemLockID); // will always be available
      sinfo.itemStream.remove(msTran, controlItemLockID);
      if (sinfo.item != null)
      {
        sinfo.item.lockItemIfAvailable(controlItemLockID);  // will always be available
        sinfo.item.remove(msTran, controlItemLockID);
      }
      tran.commit();
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "deleteAndUnlockPersistentStream");
    }