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