// permission has no exact match, perform an implies check
Iterator<Permission> it = principals.leftIterator();
while (it.hasNext())
{
Permission possibleMatch = it.next();
if (!possibleMatch.implies(permission))
continue;
if (hasPrincipal(subject, principals.getRight(possibleMatch)))
{
if (log.isDebugEnabled())
log.debug(subject + " implies " + permission);