code: public final synchronized void commitDecrementReferenceCount(PersistentTransaction transaction) throws SevereMessageStoreException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "commitDecrementReferenceCount");
  
          if (_referenceCount < 1)
          {
              SevereMessageStoreException e = new SevereMessageStoreException("Reference count decrement cannot be committed");
              FFDCFilter.processException(e, "com.ibm.ws.sib.msgstore.cache.links.ItemLink.commitDecrementReferenceCount", "1:131:1.104.1.1");
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.event(this, tc, "Reference count decrement cannot be committed");
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "commitDecrementReferenceCount");
              throw e;
          }
          _referenceCount--;
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "reference count dropped to: " + _referenceCount);
  
          if (0 == _referenceCount)
          {
              // This causes the item's itemReferencesDroppedToZero to be called after
              // completion of this transaction
              transaction.registerCallback(this);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "commitDecrementReferenceCount");
      }
docs: This method is called when committing the removal of a reference.
  It should only be called by the message store code.
  @param transaction The transaction
  @throws SevereMessageStoreException