import java.awt.geom.Path2D;

sclass PrecisePolygon extends Path2D.Double {
  gettable L<DoublePt> points;
  
  *(double... points) {
    this(toDoublePts(points));
  }
  
  *(L<? extends IDoublePt> pts) {
    points = iDoublePtsToDoublePts(pts);
    var p = first(points);
    moveTo(p.x, p.y);
    for (int i = 1; i < l(points); i++) {
      p = points.get(i);
      lineTo(p.x, p.y);
    }
    closePath();
  }
}