docs: private void loadCategories(SQLiteDatabase db) throws UnknownPoiCategoryException {
          // Maximum ID (for root node)
          int maxID = 0;
  
          // Maps categories to their parent IDs
          Map<PoiCategory, Integer> parentMap = new HashMap<>();
  
          Cursor cursor = null;
          try {
              cursor = db.rawQuery(SELECT_STATEMENT, null);
              while (cursor.moveToNext()) {
                  // Column values
                  int categoryID = cursor.getInt(0);
                  String categoryTitle = cursor.getString(1);
                  int categoryParentID = cursor.getInt(2);
  
                  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 (Exception e) {
              LOGGER.log(Level.SEVERE, e.getMessage(), e);
          } finally {
              try {
                  if (cursor != null) {
                      cursor.close();
                  }
              } catch (Exception 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)));
          }
      }