static LS splitAtSpaceTokenizer(S s) { new ArrayList tok; int l = l(s); int i = 0, n = 0; while (i < l) { int j = i; char c; // scan for whitespace while (j < l) { c = s.charAt(j); if (isSpace(c)) ++j; else break; } tok.add(javaTok_substringN(s, i, j)); ++n; i = j; if (i >= l) break; // scan for non-whitespace while (j < l && !isSpace(s.charAt(j))) ++j; tok.add(javaTok_substringC(s, i, j)); ++n; i = j; } if ((tok.size() % 2) == 0) tok.add(""); return tok; }