docs: public boolean filterMatches(AbstractItem item)
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "filterMatches", item);
  
      boolean match = false;
      LocalQPConsumerKey matchingMember = null;
  
      // Hopefully we have a general consumer so we don't need to parse the message
      if(generalMemberCount > 0)
      {
        // We have a match but we don't care which one out of the general members
        // actually takes the message, so if one of the general members is the one
        // performing the scan they can take the message.
        matchingMember = null;
        match = true;
      }
      // Damn, all we've got are members with selectors, we'll have to parse the message
      else
      {
        // If there is just the single member see if they match the message
        if(singleMember != null)
        {
          if(singleMember.filterMatches(item))
          {
            match = true;
            matchingMember = singleMember;
          }
        }
        // Otherwise we give all the members a chance to match it
        else
        {
          LocalQPConsumerKey keyMember;
          int index;
          int size = specificKeyMembers.size();
          for(index = 0;
              (index < size) && !match;
              index++)
          {
            keyMember = specificKeyMembers.get(index);
            // Drop out if one of the members matches it
            if(keyMember.filterMatches(item))
            {
              match = true;
              matchingMember = keyMember;
            }
          }
        }
      }
  
  //  we only want to remember this result if get got here as a result of a consumer
      //asking for a message.
      boolean onConsumerThread = consumerThreadActive &&
                                 (Thread.currentThread().getId() == consumerThreadID);
  
      if(onConsumerThread)
      {
        currentMatch = match;
        currentMatchingMember = matchingMember;
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "filterMatches", new Object[] {Boolean.valueOf(match), matchingMember});
  
      return match;
    }