static S rjoin(S glue default "", Iterable strings) { if (strings == null) ret ""; if (strings cast Collection) { if (strings.size() == 1) ret str(first(strings)); } new StringBuilder buf; Iterator i = reversed(strings).iterator(); if (i.hasNext()) { buf.append(i.next()); while (i.hasNext()) buf.append(glue).append(i.next()); } ret buf.toString(); } sS rjoin(S glue, S... strings) { ret join(glue, asVirtualReversedList(strings)); } static S rjoin(Iterable strings, S glue) { ret rjoin(glue, strings); } sS rjoin(S[] strings) { ret rjoin("", strings); }