docs: private void loadCategories(Connection conn) throws UnknownPoiCategoryException {
          // Maximum ID (for root node)
          int maxID = 0;
  
          // Maps categories to their parent IDs
          Map<PoiCategory, Integer> parentMap = new HashMap<>();
  
          PreparedStatement stmt = null;
          ResultSet rs = null;
          try {
              stmt = conn.prepareStatement(SELECT_STATEMENT);
              rs = stmt.executeQuery();
              while (rs.next()) {
                  // Column values
                  int categoryID = rs.getInt(1);
                  String categoryTitle = rs.getString(2);
                  int categoryParentID = rs.getInt(3);
  
                  PoiCategory pc = new DoubleLinkedPoiCategory(categoryTitle, null, categoryID);
                  this.categoryMap.put(categoryID, pc);
  
                  // category --> parent ID
                  parentMap.put(pc, categoryParentID);
  
                  // check for root node
                  if (categoryID > maxID) {
                      maxID = categoryID;
                  }
              }
          } catch (SQLException e) {
              LOGGER.log(Level.SEVERE, e.getMessage(), e);
          } finally {
              try {
                  if (rs != null) {
                      rs.close();
                  }
                  if (stmt != null) {
                      stmt.close();
                  }
              } catch (SQLException e) {
                  LOGGER.log(Level.SEVERE, e.getMessage(), e);
              }
          }
  
          // Set root category and remove it from parents map
          this.rootCategory = getPoiCategoryByID(maxID);
          parentMap.remove(this.rootCategory);
  
          // Assign parent categories
          for (PoiCategory c : parentMap.keySet()) {
              c.setParent(getPoiCategoryByID(parentMap.get(c)));
          }
      }