Also, this might have been pointed out but anyway:
(generation->maybe obj)
(generation->either obj)
If obj is an end-of-file object, return Nothing / a Left of objs. Otherwise, return obj wrapped in a Just.
should be:
(generation->maybe obj)
(generation->either obj objs ...)
If obj is an end-of-file object, return Nothing / a Left of objs. Otherwise, return obj wrapped in a Just / Right.