throw new Error("not implemented");
if (solids.size() == 0) return false;  LineSegment[] l = new LineSegment[4]; l[0] = new LineSegment(x, y, x + w, y); l[1] = new LineSegment(x, y + h, x + w, y + h); l[2] = new LineSegment(x, y, x, y + h); l[3] = new LineSegment(x + w, y, x + w, y + h);   for (int i = 0; i < 4; i++) { for (int path = 0; path < solids.size(); path++) { Segment v; Segment start; start = v = (Segment) solids.elementAt(path); do { if (l[i].hasIntersections(v)) return true; v = v.next; } while (v != start); } for (int path = 0; path < holes.size(); path++) { Segment v; Segment start; start = v = (Segment) holes.elementAt(path); do { if (l[i].hasIntersections(v)) return true; v = v.next; } while (v != start); } }   if (contains(x + w * 0.5, y + h * 0.5)) return true;   Point2D p = ((Segment) solids.elementAt(0)).getMidPoint(); if ((new Rectangle2D.Double(x, y, w, h)).contains(p)) return true; return false;
  public boolean intersects(double x, double y, double w, double h)  {    // XXX Implement.    throw new Error("not implemented");  }