docs: @Override
  	@Pure
  	public boolean intersects(Shape2D<?, ?, ?, ?, ?, ? extends Rectangle2afp<?, ?, ?, ?, ?, ?>> rectangle) {
  		if (boundsIntersects(rectangle)) {
  
  			if (rectangle.intersects(getBoundingBox())) {
  				return true;
  			}
  
  			if (this.isWidePolyline) {
  				final Rectangle2afp<?, ?, ?, ?, ?, ?> box = rectangle.toBoundingBox();
  				final double rminX = box.getMinX();
  				final double rminY = box.getMinY();
  				final double rmaxX = box.getMaxX();
  				final double rmaxY = box.getMaxY();
  
  				final double width = getWidth();
  
  				boolean firstPoint;
  				double px = 0;
  				double py = 0;
  
  				for (final PointGroup grp : groups()) {
  					firstPoint = true;
  					for (final Point2d pts : grp) {
  						final double x = pts.getX();
  						final double y = pts.getY();
  
  						if (firstPoint) {
  							firstPoint = false;
  						} else if (MathUtil.min(
  								Segment2afp.calculatesDistanceSquaredSegmentSegment(rminX, rmaxY, rmaxX, rmaxY, px, py, x, y),
  								Segment2afp.calculatesDistanceSquaredSegmentSegment(rminX, rminY, rminX, rmaxY, px, py, x, y),
  								Segment2afp.calculatesDistanceSquaredSegmentSegment(rmaxX, rminY, rmaxX, rmaxY, px, py, x, y))
  								<= width * width) {
  							return true;
  						}
  
  						px = x;
  						py = y;
  					}
  				}
  			} else {
  				return toPath2D().intersects(rectangle);
  			}
  		}
  		return false;
  	}