protected virtual T NextAsc() { // Try to go down till a leaf while (!currentNode.IsLeaf()) { currentNode = currentNode.GetChildAt(currentKeyIndex, true); currentKeyIndex = 0; } // If leaf has more keys if (currentKeyIndex < currentNode.GetNbKeys()) { nbReturnedKeys++; nbReturnedElements++; object nodeValue = GetValueAt(currentNode, currentKeyIndex); currentKeyIndex++; return((T)nodeValue); } NeoDatis.Btree.IBTreeNode child = null; // else go up till a node with keys while (currentKeyIndex >= currentNode.GetNbKeys()) { child = currentNode; currentNode = currentNode.GetParent(); currentKeyIndex = IndexOfChild(currentNode, child); } nbReturnedElements++; nbReturnedKeys++; object value = GetValueAt(currentNode, currentKeyIndex); currentKeyIndex++; return((T)value); }