protected static region difference(region r1, region r2) { ArbitraryRegion ret = new ArbitraryRegion(r1.rank); for (Iterator it = r1.iterator(); it.hasNext(); ) { point p = (point) it.next(); if (! r2.contains(p)) ret.add_(p); } return ret;
public region difference(region r) { return difference(this, r);
    protected static region difference(region r1, region r2) {        ArbitraryRegion ret = new ArbitraryRegion(r1.rank);        for (Iterator it = r1.iterator(); it.hasNext(); ) {            point p = (point) it.next();            if (! r2.contains(p))                ret.add_(p);        }        return ret;    }