We sort-of did that already. We iterate in that order. However, we didn't have any short-circuiting logic. Added that in 3b3d50e

I initially wrote this method including its own iterator but rewrote it to re-use code rather than doing iteration of granularities in another place.