void checkPermission(Permission p) { foreach (caller's domain) { if (caller's domain does not have permission) throw new AccessControlException(p); if (caller is marked as privileged) return; } // Access Granted return; }