docs: public static List<WayDataBlock> toWayDataBlockList(Geometry geometry) {
          List<WayDataBlock> res = new ArrayList<>();
          if (geometry instanceof MultiPolygon) {
              MultiPolygon mp = (MultiPolygon) geometry;
              for (int i = 0; i < mp.getNumGeometries(); i++) {
                  Polygon p = (Polygon) mp.getGeometryN(i);
                  List<Integer> outer = toCoordinateList(p.getExteriorRing());
                  if (outer.size() / 2 > 0) {
                      List<List<Integer>> inner = new ArrayList<>();
                      for (int j = 0; j < p.getNumInteriorRing(); j++) {
                          List<Integer> innr = toCoordinateList(p.getInteriorRingN(j));
                          if (innr.size() / 2 > 0) {
                              inner.add(innr);
                          }
                      }
                      res.add(new WayDataBlock(outer, inner));
                  }
              }
          } else if (geometry instanceof Polygon) {
              Polygon p = (Polygon) geometry;
              List<Integer> outer = toCoordinateList(p.getExteriorRing());
              if (outer.size() / 2 > 0) {
                  List<List<Integer>> inner = new ArrayList<>();
                  for (int i = 0; i < p.getNumInteriorRing(); i++) {
                      List<Integer> innr = toCoordinateList(p.getInteriorRingN(i));
                      if (innr.size() / 2 > 0) {
                          inner.add(innr);
                      }
                  }
                  res.add(new WayDataBlock(outer, inner));
              }
          } else if (geometry instanceof MultiLineString) {
              MultiLineString ml = (MultiLineString) geometry;
              for (int i = 0; i < ml.getNumGeometries(); i++) {
                  LineString l = (LineString) ml.getGeometryN(i);
                  List<Integer> outer = toCoordinateList(l);
                  if (outer.size() / 2 > 0) {
                      res.add(new WayDataBlock(outer, null));
                  }
              }
          } else if (geometry instanceof LinearRing || geometry instanceof LineString) {
              List<Integer> outer = toCoordinateList(geometry);
              if (outer.size() / 2 > 0) {
                  res.add(new WayDataBlock(outer, null));
              }
          } else if (geometry instanceof GeometryCollection) {
              GeometryCollection gc = (GeometryCollection) geometry;
              for (int i = 0; i < gc.getNumGeometries(); i++) {
                  List<WayDataBlock> recursiveResult = toWayDataBlockList(gc.getGeometryN(i));
                  for (WayDataBlock wayDataBlock : recursiveResult) {
                      List<Integer> outer = wayDataBlock.getOuterWay();
                      if (outer.size() / 2 > 0) {
                          res.add(wayDataBlock);
                      }
                  }
              }
          }
  
          return res;
      }