@Override
    public boolean includesValue(Object value) {
        boolean found = false;
        if (containsValue(value)) {
            found = true;
        } else if (value instanceof JID) {
            // look for group JIDs in the list of values and dereference as needed
            JID target = (JID) value;
            Iterator<Group> iterator = getGroupsFromValues().iterator();
            while (!found && iterator.hasNext()) {
                found = iterator.next().isUser(target);
            }
        }
        return found;
    }
Returns true if the map has an entry value matching the given JID. If the JID is not 
found in the value set (exact match), search the value set for groups and look for the 
JID in each of the corresponding groups (implied match).

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