code: public final void preCommitRemove(final PersistentTransaction transaction) throws SevereMessageStoreException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "preCommitRemove", transaction);
  
          synchronized (this)
          {
              SevereMessageStoreException ex = assertCanDelete(transaction);
              if (null != ex)
              {
                  throw ex;
              }
  
              if ((_itemLinkState == ItemLinkState.STATE_REMOVING_EXPIRING)
                  || (_itemLinkState == ItemLinkState.STATE_REMOVING_LOCKED)
                  || (_itemLinkState == ItemLinkState.STATE_REMOVING_PERSISTENTLY_LOCKED)
                  || (_itemLinkState == ItemLinkState.STATE_REMOVING_WITHOUT_LOCK))
              {
                  _assertCorrectTransaction(transaction);
                  _owningStreamLink._assertCanRemoveChildUnder(transaction);
              }
              else
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                      SibTr.event(this, tc, "Invalid Item state: " + _itemLinkState);
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(this, tc, "preCommitRemove");
                  throw new StateException(_itemLinkState.toString());
              }
  
              getItem().eventPrecommitRemove(transaction);
          } // end sync
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "preCommitRemove");
      }
docs: /*
  (non-Javadoc)
  
  @see com.ibm.ws.sib.msgstore.task.TaskTarget#preCommitRemove(com.ibm.ws.sib.msgstore.transactions.Transaction)