Bugfix: last_block() must be incomplete to work.
Factor out begin() and filled_end().
Implement any() and none().