@Override
    public boolean includesKey(Object key) {
        boolean found = false;
        if (containsKey(key)) {
            found = true;
        } else if (key instanceof JID) {
            // look for group JIDs in the list of keys and dereference as needed
            JID target = (JID) key;
            Iterator<Group> iterator = getGroupsFromKeys().iterator();
            while (!found && iterator.hasNext()) {
                Group next = iterator.next();
                if(next != null)
                    found = next.isUser(target);
            }
        }
        return found;
    }
Returns true if the key list contains the given JID. If the JID is not found in the 
key list (exact match), search the key list for groups and look for the JID in 
each of the corresponding groups (implied match).

@param key The target, presumably a JID
@return True if the target is in the key list, or in any groups in the key list
xmppserver/src/main/java/org/jivesoftware/openfire/group/ConcurrentGroupMap.java