public bool MoveNext() { currentCursor = cursors[cursorIndex]; if (!currentCursor.MoveNext()) { // Set to before the first of the next cursor in the set currentCursor = cursors[++cursorIndex]; cursorOffset = -1; currentCursor.MoveTo(cursorOffset); } return ++position < Count; }
public bool MoveBack() { currentCursor = cursors[cursorIndex]; if (!currentCursor.MoveBack()) { // Set to after the end of the previous cursor in the set currentCursor = cursors[--cursorIndex]; cursorOffset = currentCursor.Count; currentCursor.MoveTo(cursorOffset); } return --position > 0; }