actually for readability, it would be nicer to expand hasNext and write it out with if/else's. It would make it more obvious what happens, e.g.
```scala
if (currentPosition != -1) {
  currentPosition < currentMatches.size
} else {
  fetchNext()   <------------ looks to me u don't need to check streamIter.hasNext
}
```