I'm a little bit scared of hasMore updating state and explicitly setting nextRow. The boolean return value makes me think I can use it as a check of state, but calling it may cause unexpected behavior if I were not familiar with the implementation.