private static void fillInSubject(PolicyRule rule) throws Throwable {
   if (rule instanceof UserPolicyRule) {
     User user = ((UserPolicyRule<User>) rule).getSubject();
     User filledInUser = tbclient.getUserByUsername(USER_SERVICE_ROOT, user.getUserName());
     if (filledInUser == null) {
       throw new RuntimeException("Could not find real user for: " + user.getUserName());
     }
     rule.setSubject(filledInUser);
   } else if (rule instanceof GroupPolicyRule) {
     Group group = ((GroupPolicyRule<? extends Group>) rule).getSubject();
     Project filledInProject = getProjectByGroupName(group.getGroupName());
     if (filledInProject != null) {
       rule.setSubject(filledInProject);
     } else {
       Organisation filledInOrg = getOrganisationByGroupName(group.getGroupName());
       if (filledInOrg != null) {
         rule.setSubject(filledInOrg);
       } else {
         throw new RuntimeException(
             "Could not find project or organisation for group name: " + group.getGroupName());
       }
     }
   }
 }