docs: protected List<CmsUser> internalGetUsers(
          CmsDbContext dbc,
          CmsOrganizationalUnit orgUnit,
          boolean recursive,
          boolean readAdditionalInfos)
      throws CmsDataAccessException {
  
          List<CmsUser> users = new ArrayList<CmsUser>();
          ResultSet res = null;
          PreparedStatement stmt = null;
          Connection conn = null;
          try {
              // create statement
              conn = m_sqlManager.getConnection(dbc);
              if (orgUnit.hasFlagWebuser()) {
                  stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_GET_WEBUSERS_FOR_ORGUNIT_1");
              } else {
                  stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_GET_USERS_FOR_ORGUNIT_1");
              }
  
              String param = CmsOrganizationalUnit.SEPARATOR + orgUnit.getName();
              if (recursive) {
                  param += "%";
              }
              stmt.setString(1, param);
              res = stmt.executeQuery();
              // create new Cms group objects
              while (res.next()) {
                  users.add(internalCreateUser(dbc, res));
              }
          } catch (SQLException e) {
              throw new CmsDbSqlException(
                  Messages.get().container(Messages.ERR_GENERIC_SQL_1, CmsDbSqlException.getErrorQuery(stmt)),
                  e);
          } finally {
              m_sqlManager.closeAll(dbc, conn, stmt, res);
          }
          if (readAdditionalInfos) {
              for (CmsUser user : users) {
                  Map<String, Object> info = readUserInfos(dbc, user.getId());
                  user.setAdditionalInfo(info);
              }
          }
          return users;
  
      }