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