public bool MoveNext() { AssertNoChanges(); if (_currentPage == null) { throw new InvalidOperationException("No current page was set"); } while (_currentPage != null) { _currentPage.LastSearchPosition++; if (_currentPage.LastSearchPosition < _currentPage.NumberOfEntries) { // run out of entries, need to select the next page... while (_currentPage.IsBranch) { _parent._cursor.Push(_currentPage); var childParentNumber = _parent.PageValueFor(_currentPage, _currentPage.LastSearchPosition); _currentPage = _parent._tx.GetReadOnlyFixedSizeTreePage(childParentNumber); _currentPage.LastSearchPosition = 0; } return(true);// there is another entry in this page } if (_parent._cursor.Count == 0) { break; } _currentPage = _parent._cursor.Pop(); } _currentPage = null; return(false); }