docs: public org.osmdroid.views.overlay.Polygon toPolygon(Polygon polygon) {
          org.osmdroid.views.overlay.Polygon newPoloygon = new org.osmdroid.views.overlay.Polygon();
          List<GeoPoint> pts = new ArrayList<>();
          List<List<GeoPoint>> holes = new ArrayList<>();
  
          List<LineString> rings = polygon.getRings();
  
          if (!rings.isEmpty()) {
  
              Double z = null;
  
              // Add the polygon points
              LineString polygonLineString = rings.get(0);
              for (Point point : polygonLineString.getPoints()) {
                  GeoPoint latLng = toLatLng(point);
                  pts.add(latLng);
              }
  
              // Add the holes
              for (int i = 1; i < rings.size(); i++) {
  
                  LineString hole = rings.get(i);
                  List<GeoPoint> holeLatLngs = new ArrayList<GeoPoint>();
                  for (Point point : hole.getPoints()) {
                      GeoPoint latLng = toLatLng(point);
                      holeLatLngs.add(latLng);
                      if (point.hasZ()) {
                          z = (z == null) ? point.getZ() : Math.max(z,
                              point.getZ());
                      }
                  }
                  holes.add(holeLatLngs);
  
              }
  
  
          }
          newPoloygon.setPoints(pts);
          newPoloygon.setHoles(holes);
  
          if (polygonOptions!=null){
              newPoloygon.setFillColor(polygonOptions.getFillColor());
              newPoloygon.setStrokeColor(polygonOptions.getStrokeColor());
              newPoloygon.setStrokeWidth(polygonOptions.getStrokeWidth());
              newPoloygon.setTitle(polygonOptions.getTitle());
          }
  
          return newPoloygon;
      }