code: public static <A> RegExp<A> buildUnion(Set<RegExp<A>> unionTerms) {
  	if(unionTerms.isEmpty())
  	    return new None<A>();
  
  	Iterator<RegExp<A>> it = unionTerms.iterator();
  	RegExp<A> re = it.next();
  	while(it.hasNext()) {
  	    re = new Union<A>(re, it.next());
  	}
  	return re;
      }
docs: Builds a regular expression equivalent to the union of several
  (possibly more than 2) terms.  In the normal case, this method
  applies the binary <code>Union</code> constructor repeatedly.
  If the set of terms contains a single distinct term, the
  method returns that term (so, the resulting
  <code>RegExp</code> is not always an instance of
  <code>Union</code>).  If the set of terms is empty, the method
  returns <code>None</code>.