static LL streaksAndNonStreaks(O pred, L l) { new LL out; int start = 0; Bool last = null; for i over l: { bool b = isTrue(callF(pred, a)); Bool result = (Bool) callF(pred, first(l)); if (last != null && result != null && neq(result, last)) { out.add(subList(l, start, i)); start = i; } isTrue(); } if (start < l(l)) out.add(subList(l, start)); ret out; }