docs: protected List<CmsPrincipal> getPrincipals(boolean includeOtherOus) throws CmsException {
  
          String ou = getCms().getRequestContext().getCurrentUser().getOuFqn();
          Set<CmsPrincipal> principals = new HashSet<CmsPrincipal>();
          boolean realOnly = Boolean.valueOf(getParamRealonly()).booleanValue();
          if (isShowingUsers()) {
              // include special principals
              if (!realOnly) {
                  if (OpenCms.getRoleManager().hasRole(getCms(), CmsRole.VFS_MANAGER)) {
                      CmsUser user = new CmsUser(
                          CmsAccessControlEntry.PRINCIPAL_OVERWRITE_ALL_ID,
                          key(Messages.GUI_LABEL_OVERWRITEALL_0),
                          "",
                          "",
                          "",
                          "",
                          0,
                          0,
                          0,
                          null);
                      user.setDescription(key(Messages.GUI_DESCRIPTION_OVERWRITEALL_0));
                      principals.add(user);
                  }
                  CmsUser user = new CmsUser(
                      CmsAccessControlEntry.PRINCIPAL_ALL_OTHERS_ID,
                      key(Messages.GUI_LABEL_ALLOTHERS_0),
                      "",
                      "",
                      "",
                      "",
                      0,
                      0,
                      0,
                      null);
                  user.setDescription(key(Messages.GUI_DESCRIPTION_ALLOTHERS_0));
                  principals.add(user);
              }
              if (includeOtherOus) {
                  // add all manageable users
                  principals.addAll(OpenCms.getRoleManager().getManageableUsers(getCms(), "", true));
                  // add own ou users
                  principals.addAll(OpenCms.getOrgUnitManager().getUsers(getCms(), ou, true));
              } else {
                  // add own ou users
                  principals.addAll(OpenCms.getOrgUnitManager().getUsers(getCms(), ou, false));
              }
          } else {
              // include special principals
              if (!realOnly) {
                  if (OpenCms.getRoleManager().hasRole(getCms(), CmsRole.VFS_MANAGER)) {
                      principals.add(
                          new CmsGroup(
                              CmsAccessControlEntry.PRINCIPAL_OVERWRITE_ALL_ID,
                              null,
                              key(Messages.GUI_LABEL_OVERWRITEALL_0),
                              key(Messages.GUI_DESCRIPTION_OVERWRITEALL_0),
                              0));
                  }
                  principals.add(
                      new CmsGroup(
                          CmsAccessControlEntry.PRINCIPAL_ALL_OTHERS_ID,
                          null,
                          key(Messages.GUI_LABEL_ALLOTHERS_0),
                          key(Messages.GUI_DESCRIPTION_ALLOTHERS_0),
                          0));
              }
              if (includeOtherOus) {
                  // add all manageable users
                  principals.addAll(OpenCms.getRoleManager().getManageableGroups(getCms(), "", true));
                  // add own ou users
                  principals.addAll(OpenCms.getOrgUnitManager().getGroups(getCms(), ou, true));
              } else {
                  // add own ou users
                  principals.addAll(OpenCms.getOrgUnitManager().getGroups(getCms(), ou, false));
              }
          }
          List<CmsPrincipal> ret = new ArrayList<CmsPrincipal>(principals);
          if (getParamFlags() != null) {
              int flags = Integer.parseInt(getParamFlags());
              return new ArrayList<CmsPrincipal>(CmsPrincipal.filterFlag(ret, flags));
          }
          return ret;
      }