docs: public void deleteCurrent(SITransaction transaction)
    throws SISessionUnavailableException, SISessionDroppedException,
           SIResourceException, SIConnectionLostException, SILimitExceededException,
           SIIncorrectCallException,
           SIErrorException, SIMPMessageNotLockedException
    {
      if (TraceComponent.isAnyTracingEnabled() && CoreSPILockedMessageEnumeration.tc.isEntryEnabled())
        SibTr.entry(CoreSPILockedMessageEnumeration.tc, "deleteCurrent",
          new Object[] {new Integer(hashCode()), transaction, this});
  
      checkValidState("deleteCurrent");
  
      localConsumerPoint.checkNotClosed();
  
      if (transaction != null && !((TransactionCommon)transaction).isAlive())
      {
        SIIncorrectCallException e = new SIIncorrectCallException( nls.getFormattedMessage(
          "TRANSACTION_DELETE_USAGE_ERROR_CWSIP0778",
             new Object[] { consumerSession.getDestinationAddress() },
             null) );
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
          SibTr.exception(tc, e);
  
        if (TraceComponent.isAnyTracingEnabled() && CoreSPILockedMessageEnumeration.tc.isEntryEnabled())
          SibTr.exit(CoreSPILockedMessageEnumeration.tc, "deleteCurrent", e);
  
        throw e;
      }
  
      JsMessageWrapper msg = null;
      boolean isStored = false;
  
      synchronized(this)
      {
        checkCurrentMessageAvailable((TransactionCommon) transaction);
  
        // Pull out the interesting bits of the message
        msg = currentMsg.message;
        isStored = currentMsg.isStored;
  
        //remove the message from the list
        removeMessage(currentMsg);
  
        // There is now no message under the cursor
        messageAvailable = false;
      } // synchronized
  
  
      if((msg != null))
      {
        // If the message was not recoverable (not on an itemStream) we've finished
        // Otherwise delete it from MS
        if (isStored)
        {
          removeMessageFromStore(msg,
                                 (TransactionCommon) transaction,
                                 true); // true = decrement active message count
        }
        else // !isStored
        {
          localConsumerPoint.removeActiveMessages(1);
        }
      }
  
      if (TraceComponent.isAnyTracingEnabled() && CoreSPILockedMessageEnumeration.tc.isEntryEnabled())
        SibTr.exit(CoreSPILockedMessageEnumeration.tc, "deleteCurrent", this);
    }