code: @Override
      public ItemStream removeFirstMatching(Filter filter, Transaction transaction) throws MessageStoreException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "removeFirstMatching", new Object[] { filter, transaction });
  
          if (_rootMembership != null)
          {
              ItemStream item = _rootMembership.removeFirstMatchingItemStream(filter, (PersistentTransaction) transaction);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(this, tc, "removeFirstMatching", "return=" + item);
              return item;
          }
          else
          {
              MessageStoreUnavailableException msue;
              if (!_startupExceptions.isEmpty())
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                      SibTr.event(this, tc, "Operation not possible as MessageStore failed to start!");
                  msue = new MessageStoreUnavailableException("Operation not possible as MessageStore failed to start!", _startupExceptions.get(0));
              }
              else
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                      SibTr.event(this, tc, "Operation not possible as MessageStore is unavailable!");
                  msue = new MessageStoreUnavailableException("Operation not possible as MessageStore is unavailable!");
              }
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(this, tc, "removeFirstMatching");
              throw msue;
          }
      }
docs: /*
  (non-Javadoc)
  
  @see com.ibm.ws.sib.store.MessageStore#destructiveGet(com.ibm.ws.sib.store.Filter, com.ibm.ws.sib.msgstore.Transaction)