protected IEnumerable<string> IterateNodeLabels(TreeNodeAdv start)
{
_currentNode = start;
while(_currentNode != null)
{
foreach (string label in GetNodeLabels(_currentNode))
yield return label;
_currentNode = _currentNode.NextVisibleNode;
if (_currentNode == null)
_currentNode = _tree.Root;
if (start == _currentNode)
break;
}
}