docs: protected void populate() {
          clearAuthorizationTable();
  
          Map<String, Set<String>> userToRoleName = new HashMap<String, Set<String>>();
          Map<String, Set<String>> groupToRoleName = new HashMap<String, Set<String>>();
          Map<String, Set<String>> specialSubjectToRoleName = new HashMap<String, Set<String>>();
          Iterator<SecurityRole> itr = getRoles();
          while (itr.hasNext()) {
              SecurityRole role = itr.next();
              String roleName = role.getRoleName();
              for (String user : role.getUsers()) {
                  Set<String> assignedRoles = userToRoleName.get(user);
                  if (assignedRoles == null) {
                      assignedRoles = new HashSet<String>();
                      userToRoleName.put(user, assignedRoles);
                  }
                  assignedRoles.add(roleName);
              }
              for (String group : role.getGroups()) {
                  Set<String> assignedRoles = groupToRoleName.get(group);
                  if (assignedRoles == null) {
                      assignedRoles = new HashSet<String>();
                      groupToRoleName.put(group, assignedRoles);
                  }
                  assignedRoles.add(roleName);
              }
              for (String specialSubject : role.getSpecialSubjects()) {
                  Set<String> assignedRoles = specialSubjectToRoleName.get(specialSubject);
                  if (assignedRoles == null) {
                      assignedRoles = new HashSet<String>();
                      specialSubjectToRoleName.put(specialSubject, assignedRoles);
                  }
                  assignedRoles.add(roleName);
              }
              for (String accessId : role.getAccessIds()) {
                  Set<String> assignedRoles = getRoles(explicitAccessIdToRoles, accessId);
                  if (assignedRoles == null) {
                      assignedRoles = new HashSet<String>();
                      explicitAccessIdToRoles.put(accessId, assignedRoles);
                  }
                  assignedRoles.add(roleName);
              }
          }
          for (Map.Entry<String, Set<String>> entry : userToRoleName.entrySet()) {
              userToRoles.put(entry.getKey(), new RoleSet(entry.getValue()));
          }
          for (Map.Entry<String, Set<String>> entry : groupToRoleName.entrySet()) {
              groupToRoles.put(entry.getKey(), new RoleSet(entry.getValue()));
          }
          for (Map.Entry<String, Set<String>> entry : specialSubjectToRoleName.entrySet()) {
              specialSubjectToRoles.put(entry.getKey(), new RoleSet(entry.getValue()));
          }
          populated = true;
      }