I chose it mainly because that's what projects like `spring-data` do, they return an `Iterable` because it allows the underlying data store to stream the results if it chooses. It also means that the `Iterator` can discard after reading (if we implement it that way) so that large results do not require the entire dataset from the request to be loaded in-memory.