public bool MoveNext() { var hadCurrent = HasCurrent; var hasCurrent = MoveNextCore() && (flags.AllowsMultipleItems() || IsAtEnd()); if (!hasCurrent && !hadCurrent) { state = State.Empty; } return(hasCurrent); }
public bool MoveNext() { for (; ;) { var hasNext = iterator != null && iterator.MoveNext() && (flags.AllowsMultipleItems() || !iterator.MoveNext()); if (!hasNext) { return(SetAtEnd()); } if (SetAtNext()) { return(true); } } }
public bool MoveNext() { ResetCurrent(); for (; ;) { var hasNext = iterator != null && iterator.MoveNext() && Consume(iterator, flags.AllowsMultipleItems()); if (!hasNext) { return(SetAtEnd()); } if (SeekCurrent()) { return(true); } } }