throw new Error("not implemented");
if (equals(area)) return; if (area.isEmpty()) return;  Area B = (Area) area.clone();  Vector pathA = new Vector(); Vector pathB = new Vector(); pathA.addAll(solids); pathA.addAll(holes); 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(); Segment v;   Vector segments = new Vector();    for (int i = 0; i < pathA.size(); i++) { v = (Segment) pathA.elementAt(i); Segment path = v; do { if (v.isSegmentOutside(area)) segments.add(v); v = v.next; } while (v != path); }  for (int i = 0; i < pathB.size(); i++) { v = (Segment) pathB.elementAt(i); Segment path = v; do { if (v.isSegmentOutside(this)) segments.add(v); v = v.next; } while (v != path); }  paths = weilerAtherton(segments); deleteRedundantPaths(paths);
  public void add(Area a)  {    // XXX Implement.    throw new Error("not implemented");  }