@Override
 public AuthorizationResult authorize(
     Caller caller, Environment callEnvironment, Action action, TargetAttribute target) {
   assert assertSameAddress(action, target.getTargetResource());
   if (isServerBooting(callEnvironment)) {
     return AuthorizationResult.PERMITTED;
   }
   PermissionCollection userPerms =
       permissionFactory.getUserPermissions(caller, callEnvironment, action, target);
   PermissionCollection requiredPerms = permissionFactory.getRequiredPermissions(action, target);
   return authorize(userPerms, requiredPerms);
 }
 @Override
 public Constraint getRequiredConstraint(
     Action.ActionEffect actionEffect, Action action, TargetAttribute target) {
   return getRequiredConstraint(actionEffect, action, target.getTargetResource());
 }