+ Topology toAtom() {
+ if (alternatives.size()==0) throw new RuntimeException("cannot build an Atom from a Union with no productions");
+ Topology ret = null;
+ for(Sequence s : this) {
+ Topology a = s.toAtom();
+ if (ret==null) ret = a;
+ else ret = ret.union(a);
+ }
+ if (ret==null) throw new RuntimeException("confusion on " + this);
+ return ret;
+ }