static L paragraphsFromText(S text) { LS lines = toLinesTrim2(text); LLS paragraphs = paragraphsFromText_groupParagraphs(lines); ret lmap fromLines(paragraphs); } static LLS paragraphsFromText_groupParagraphs(L lines) { ret groupNonEmpty(lines, func(S line) { empty(line) }); }