export function* dropUntil(value: Iterable, predicate: (it: T) => boolean): Iterable { const iterator = value[Symbol.iterator](); let next = iterator.next(); while (!next.done && !predicate(next.value)) { next = iterator.next(); } while (!next.done) { yield next.value; next = iterator.next(); } }