public static S join_gen(S glue, Iterable strings) {
  if (strings == null) ret "";
  new StringBuilder buf;
  Iterator<O> i = strings.iterator();
  if (i.hasNext()) {
    buf.append(str(i.next()));
    while (i.hasNext())
      buf.append(glue).append(str(i.next()));
  }
  ret buf.toString();
}