docs: public static double[] bbox(Geometry geometry) {
      if (geometry instanceof Point) {
        return bbox((Point) geometry);
      } else if (geometry instanceof MultiPoint) {
        return bbox((MultiPoint) geometry);
      } else if (geometry instanceof LineString) {
        return bbox((LineString) geometry);
      } else if (geometry instanceof MultiLineString) {
        return bbox((MultiLineString) geometry);
      } else if (geometry instanceof Polygon) {
        return bbox((Polygon) geometry);
      } else if (geometry instanceof MultiPolygon) {
        return bbox((MultiPolygon) geometry);
      } else if (geometry instanceof GeometryCollection) {
        List<Point> points = new ArrayList<>();
        for (Geometry geo : ((GeometryCollection) geometry).geometries()) {
          // recursive
          double[] bbox = bbox(geo);
          points.add(Point.fromLngLat(bbox[0], bbox[1]));
          points.add(Point.fromLngLat(bbox[2], bbox[1]));
          points.add(Point.fromLngLat(bbox[2], bbox[3]));
          points.add(Point.fromLngLat(bbox[0], bbox[3]));
        }
        return TurfMeasurement.bbox(MultiPoint.fromLngLats(points));
      } else {
        throw new RuntimeException(("Unknown geometry class: " + geometry.getClass()));
      }
    }