If the iterator is empty, returns None. Otherwise, returns the next value wrapped in Some.
@override Option<T> next() { if (moveNext()) { return Some(current); } return None; }