code: @Override
  	public synchronized boolean checkPermission(Principal principal, Permission permission)
  	{
  
  		if (principal == null)
  			return false;
  
  		if (permission == null)
  			return false;
  
  		Set<AccessControl> set = this.entries.get(principal);
  
  		if (set != null && !set.isEmpty())
  		{
  			for (AccessControl accessControl: set)
  			{
  				if (accessControl.checkPermission(permission))
  					return true;
  			}
  		}
  
  		// did not find for user, not check for groups
  		if (SecurityUser.class.isAssignableFrom(principal.getClass()))
  		{
  			return checkPermission(((SecurityUser) principal).getGroups(), permission);
  		}
  		return false;
  	}
docs: /*
  (non-Javadoc)
  
  @see nyla.solutions.core.security.data.Acl#checkPermission(java.security.
  Principal, nyla.solutions.core.security.data.Permission)