code: public ConsumableKey getMatchingMember(ConsumableKey preferedKey)
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "getMatchingMember");
  
      ConsumableKey key = null;
  
      // The last move of the getCursor found a match
      if(currentMatch)
      {
        // There was a general waiter so we'll try to use the preferred
        // member
        if(currentMatchingMember == null)
        {
          // We can only choose the preferred member if they are not specific
          if(!preferedKey.isSpecific())
            key = preferedKey;
          else if(generalMemberCount > 0)
            key = resolvedKey();
        }
        // The match was to a specific member, we much choose then
        else
          key = currentMatchingMember;
      }
      else
      {
        // There was no match
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "getMatchingMember", "SIErrorException");
          throw new SIErrorException(
            nls.getFormattedMessage(
              "INTERNAL_MESSAGING_ERROR_CWSIP0001",
              new Object[] {
                "com.ibm.ws.sib.processor.impl.LocalQPConsumerKeyGroup",
                "1:982:1.6.1.14" },
              null));
      }
  
      // We shouldn't be here if we didn't get a match
      if(key == null)
      {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "getMatchingMember", "SIErrorException");
          throw new SIErrorException(
            nls.getFormattedMessage(
              "INTERNAL_MESSAGING_ERROR_CWSIP0001",
              new Object[] {
                "com.ibm.ws.sib.processor.impl.LocalQPConsumerKeyGroup",
                "1:995:1.6.1.14" },
              null));
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "getMatchingMember", key);
  
      return key;
    }
docs: Returns the member which last matched a message
  @param preferedKey
  @return