nextとhasNextはnextを実装するときコピーが必要だが終端がわかっていればnextだけで進める
moveNextとcurrentはcurrentを実装するときコピーはいらないが進むのにmoveNextが必要という
トレードオフがあると思いませんか?