static L splitAtEmptyLines(S text) { L lines = toLines(text); int n = l(lines), i = 0; new L parts; while ping (true) { while (i < n && emptyAfterTrim(lines.get(i))) ++i; if (i >= n) break; int j = i; while (j < n && !emptyAfterTrim(lines.get(j))) ++j; parts.add(fromLines(subList(lines, i, j))); i = j; } ret parts; }