ranges/ranges.go
func (it *inclusiveRangesIt) Next() int {
	if !it.init() {
		return it.ptr.End()
	}

	val := it.current.Next()

	if it.current.IsDone() {
		// Get the next available range
		it.pos++
		it.current = nil
	}

	return val
}
func (it *inclusiveRangesIt) Next() int {
	if !it.init() {
		return it.ptr.End()
	}

	val := it.current.Next()

	if it.current.IsDone() {
		// Get the next available range
		it.pos++
		it.current = nil
	}

	return val
}
// Next() returns the current value in the
// iteration, and advances the interator. Next()
// will produce a valid result as long as a call
// to isDone() returns false.