code: @Override
      public boolean handleInvalidDeliveryDelayable(MaximumAllowedDeliveryDelayAction action) 
      	throws MessageStoreException, SIException {
      	final String methodName = "handleInvalidDeliveryDelayable";
      	if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
               SibTr.entry(this, tc, methodName, "action=" + action);
      	
      	boolean unlocked = false;
      	if (_tuple.getDeliveryDelayTimeIsSuspect()) {
      		try {
      			// getItem() will pull the whole item into storage, so by now we should be sure we are actually going to do something.
      			AbstractItem abstractItem = getItem();
      			if (abstractItem != null) {
      				abstractItem.handleInvalidDeliveryDelayable(action);
      				switch(action) {
      				case unlock:// No break;
      				case exception:
      					LocalTransaction transaction = getMessageStore().getTransactionFactory().createLocalTransaction();
      					// Tell the DeliveryDelayable to unlock. If it returns true, then remove it from the DeliveryDelay index on return.
      					unlocked = deliveryDelayableUnlock((PersistentTransaction) transaction, AbstractItem.DELIVERY_DELAY_LOCK_ID);
      					transaction.commit();
      					break;
  
      				case warn:// No break;
      				default:
      					break;
      				} 	
      			}
      		} catch (MessageStoreException | SIException exception) {
      			SibTr.exit(this, tc, methodName, exception);
      			throw exception;
      		}
      	}
  
      	
      	if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
               SibTr.exit(this, tc, methodName, unlocked);
      	return unlocked;
      }
docs: /* (non-Javadoc)
  @see com.ibm.ws.sib.msgstore.deliverydelay.DeliveryDelayable#handleInvalidDeliveryDelayable(com.ibm.ws.sib.msgstore.MessageStoreConstants.MAXIMUM_ALLOWED_DELIVERY_DELAY_ACTION)