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);
            }