(Changed in version 2.8.0)
collect has changed. The previous behavior can be reproduced with
Called exactly once, when the iterator is empty
Compute the next element, if it hasn't already been computed; the result is stored in _next.
Hook for subclasses to update books after each element is consumed.