Another thing, remove() is a stateful operation, it depends on a prev next() call. If the caller invokes remove() without a prev next(), we should ideally throw IllegalStateException, regardless whether the operation is supported. I'm just saying; it's not a big deal either way.