The current implementation does this by returning an instance of:
This custom iterator implements the range (from, to) by only guarding the hasNext function. This means that as long as the caller calls hasNext before a next, everything will work fine.
However, if the caller invokes next() directly, then the range is not obeyed. Essentially, we can retrieve elements beyond the specified range (all the way to the end).
I tested this by tweaking testRange function of TestKeyValueStores
- Get an iterator over a defined range (f to u)
- Display all the values using only iter.next (until we get an exception)
This method printed all the values from 'f' to 'z' instead of 'f' to 'u'