throw new Error("not implemented");
if (isEmpty() || area.isEmpty()) { reset(); return; } if (equals(area)) return;  Vector pathA = new Vector(); Area B = (Area) area.clone(); pathA.addAll(solids); pathA.addAll(holes);  Vector pathB = new Vector(); pathB.addAll(B.solids); pathB.addAll(B.holes);  int nNodes = 0;   for (int i = 0; i < pathA.size(); i++) { Segment a = (Segment) pathA.elementAt(i); for (int j = 0; j < pathB.size(); j++) { Segment b = (Segment) pathB.elementAt(j); nNodes += createNodes(a, b); } }  Vector paths = new Vector();   Vector segments = new Vector();       for (int i = 0; i < pathA.size(); i++) { Segment v = (Segment) pathA.elementAt(i); Segment path = v; if (! v.isSegmentOutside(area) && v.node == null) segments.add(v); boolean node = false; do { if ((v.node != null || node)) { node = (v.node != null); if (! v.isSegmentOutside(area)) segments.add(v); } v = v.next; } while (v != path); }  for (int i = 0; i < pathB.size(); i++) { Segment v = (Segment) pathB.elementAt(i); Segment path = v; if (! v.isSegmentOutside(this) && v.node == null) segments.add(v); v = v.next; boolean node = false; do { if ((v.node != null || node)) { node = (v.node != null); if (! v.isSegmentOutside(this)) segments.add(v); } v = v.next; } while (v != path); }  paths = weilerAtherton(segments); deleteRedundantPaths(paths);
  public void intersect(Area a)  {    // XXX Implement.    throw new Error("not implemented");  }