static L splitAt_withEmptyLast(S s, S splitter) { new L parts; if (nempty(s)) { int i = 0; while (i < l(s)) { int j = indexOf(s, splitter, i); if (j < 0) break; parts.add(substring(s, i, j)); i = j+l(splitter); } parts.add(substring(s, i)); } ret parts; }