docs: @Override
      public Collection<PointOfInterest> findInRect(BoundingBox bb, PoiCategoryFilter filter,
                                                    List<Tag> patterns, int limit) {
          // Clear previous results
          this.ret.clear();
  
          // Query
          PreparedStatement stmt = null;
          ResultSet rs = null;
          try {
              int pSize = patterns == null ? 0 : patterns.size();
              stmt = this.conn.prepareStatement(AbstractPoiPersistenceManager.getSQLSelectString(filter, pSize, getPoiFileInfo().version));
  
              stmt.clearParameters();
  
              stmt.setDouble(1, bb.maxLatitude);
              stmt.setDouble(2, bb.maxLongitude);
              stmt.setDouble(3, bb.minLatitude);
              stmt.setDouble(4, bb.minLongitude);
  
              int i = 0; // i is only counted, if pattern is not null
              if (pSize > 0) {
                  for (Tag tag : patterns) {
                      if (tag == null) {
                          continue;
                      }
                      stmt.setString(5 + i, "%"
                              + (tag.key.equals("*") ? "" : (tag.key + "="))
                              + tag.value + "%");
                      i++;
                  }
              }
              stmt.setInt(5 + i, limit);
  
              rs = stmt.executeQuery();
              while (rs.next()) {
                  long id = rs.getLong(1);
                  double lat = rs.getDouble(2);
                  double lon = rs.getDouble(3);
  
                  this.poi = new PointOfInterest(id, lat, lon, findDataByID(id), findCategoriesByID(id));
                  this.ret.add(this.poi);
              }
          } 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);
              }
          }
  
          return this.ret;
      }