The block() method has variants that take triplet parameters to efficiently enumerate local blocks of a subrange. This is an important optimization--more efficient than creating a subrange object and using the simple block() method on that.
Certain subranges only have blocks defined for a subset of coordinate values, and there are methods to compute these ranges of coordinate values. As a matter of fact it is illegal to call block() for coordinate values outside these ranges--a trap for the unwary, but a restriction that improves the efficiency of the implementation.