docs: public static final LandmarkSuggestion readLandmarks(String file, LocationIndex locationIndex) throws IOException {
          // landmarks should be suited for all vehicles
          EdgeFilter edgeFilter = EdgeFilter.ALL_EDGES;
          List<String> lines = Helper.readFile(file);
          List<Integer> landmarkNodeIds = new ArrayList<>();
          BBox bbox = BBox.createInverse(false);
          int lmSuggestionIdx = 0;
          String errors = "";
          for (String lmStr : lines) {
              if (lmStr.startsWith("#BBOX:")) {
                  bbox = BBox.parseTwoPoints(lmStr.substring("#BBOX:".length()));
                  continue;
              } else if (lmStr.isEmpty() || Character.isAlphabetic(lmStr.charAt(0))) {
                  continue;
              }
  
              GHPoint point = GHPoint.fromStringLonLat(lmStr);
              if (point == null)
                  throw new RuntimeException("Invalid format " + lmStr + " for point " + lmSuggestionIdx);
  
              lmSuggestionIdx++;
              QueryResult result = locationIndex.findClosest(point.lat, point.lon, edgeFilter);
              if (!result.isValid()) {
                  errors += "Cannot find close node found for landmark suggestion[" + lmSuggestionIdx + "]=" + point + ".\n";
                  continue;
              }
  
              bbox.update(point.lat, point.lon);
              landmarkNodeIds.add(result.getClosestNode());
          }
  
          if (!errors.isEmpty())
              throw new RuntimeException(errors);
  
          return new LandmarkSuggestion(landmarkNodeIds, bbox);
      }