public static TreeNode FromPsiASTToTreeNode(PsiAST tree, ViewMode vm) { if (tree != null) { // ViewMode string text = ""; switch (vm) { case ViewMode.All: text = tree.ToString(); break; case ViewMode.Values: text = tree.Value; break; case ViewMode.Hibrid: if (tree.Value == "") text = tree.Type.ToString(); else text = tree.Value; break; default: // Can't Be break; } if (tree.Children != null) { TreeNode[] children = new TreeNode[tree.Children.Count]; for (int i = 0; i < tree.Children.Count; i++) children[i] = FromPsiASTToTreeNode(tree.Children[i],vm); return new TreeNode(text, children); } return new TreeNode(text); } return new TreeNode("#"); }