Free<F, IList<A>> gather<A>(IList<Free<IOOp, A>> ops) => liftOp(new Gather(ops, (l) => l.map((e) => cast<A>(e))));