if (collection == null) collection = new PermissionsHash();
	public boolean implies(Permission perm) {		if (hasAllPermission)			return true;		Class permClass = perm.getClass();		PermissionCollection collection = (PermissionCollection) cachedPermissionCollections.get(permClass);		if (collection == null) {			collection = perm.newPermissionCollection();			for (int i = 0; i < cpis.length; i++) {				try {					ConditionalPermissionInfoImpl cpi = cpis[i];					if (cpi != null)						cpi.addPermissions(collection, permClass);				} catch (Exception e) {					// TODO: we should log this somewhere					e.printStackTrace();				}			}			cachedPermissionCollections.put(permClass, collection);		}		return collection.implies(perm);	}