if (equals(area)) { reset(); return; }  Vector pathA = new Vector();  Area B = (Area) area.clone(); Vector pathB = new Vector(); pathA.addAll(solids); pathA.addAll(holes);   setDirection(B.holes, true); setDirection(B.solids, false); 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 { 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 { segments.add(v); v = v.next; } while (v != path); }  paths = weilerAtherton(segments); deleteRedundantPaths(paths); }
  public void exclusiveOr(Area a)  {    // XXX Implement.    throw new Error("not implemented");  }