docs: public BlockArea parseBlockArea(String blockAreaString, EdgeFilter filter, double useEdgeIdsUntilAreaSize) {
          final String objectSeparator = ";";
          final String innerObjSep = ",";
          BlockArea blockArea = new BlockArea(graph);
  
          // Add blocked circular areas or points
          if (!blockAreaString.isEmpty()) {
              String[] blockedCircularAreasArr = blockAreaString.split(objectSeparator);
              for (int i = 0; i < blockedCircularAreasArr.length; i++) {
                  String objectAsString = blockedCircularAreasArr[i];
                  String[] splittedObject = objectAsString.split(innerObjSep);
                  if (splittedObject.length > 4) {
                      final Polygon polygon = Polygon.parsePoints(objectAsString, 0.003);
                      findEdgesInShape(blockArea.blockedEdges, polygon, filter);
                  } else if (splittedObject.length == 4) {
                      final BBox bbox = BBox.parseTwoPoints(objectAsString);
                      if (bbox.calculateArea() > useEdgeIdsUntilAreaSize)
                          blockArea.add(bbox);
                      else
                          findEdgesInShape(blockArea.blockedEdges, bbox, filter);
                  } else if (splittedObject.length == 3) {
                      double lat = Double.parseDouble(splittedObject[0]);
                      double lon = Double.parseDouble(splittedObject[1]);
                      int radius = Integer.parseInt(splittedObject[2]);
                      Circle circle = new Circle(lat, lon, radius);
                      if (circle.calculateArea() > useEdgeIdsUntilAreaSize) {
                          blockArea.add(circle);
                      } else {
                          findEdgesInShape(blockArea.blockedEdges, circle, filter);
                      }
                  } else if (splittedObject.length == 2) {
                      double lat = Double.parseDouble(splittedObject[0]);
                      double lon = Double.parseDouble(splittedObject[1]);
                      findClosestEdge(blockArea.blockedEdges, lat, lon, filter);
                  } else {
                      throw new IllegalArgumentException(objectAsString + " at index " + i + " need to be defined as lat,lon "
                              + "or as a circle lat,lon,radius or rectangular lat1,lon1,lat2,lon2");
                  }
              }
          }
          return blockArea;
      }