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