internal void Visit(TreeNode node, ArrayList list)
{
if (node == null) return;
list.Add(node.Handler);
if (node.Left != null)
{
Visit(node.Left, list);
}
if (node.Right != null)
{
Visit(node.Right, list);
}
while (node.NextSibling != null)
{
list.Add(node.NextSibling.Handler);
node = node.NextSibling;
}
}