This change requires changes in remove() as well:
- Remove should throw an IllegalStateArgument if called before the first next() / when current == -1
Also:
- Remove must return an illegalStateArgument if called twice without a call to next() in between
- Remove must NOT move to the next element. As it is implemented, iterator.next().remove().next() will deelete the first element and skip to the third