private void UpdateExpression(LambdaExpression expr) { trvExpr.Nodes.Clear(); prgNode.SelectedObject = null; _ids.Clear(); txtNode.Text = ""; txtResult.Text = expr.DebugView().ToString(); var csharp = default(string); try { rtfCSharp.ForeColor = Color.Black; csharp = expr.ToCSharp(); // TODO: specify namespaces rtfCSharp.Text = csharp; } catch (Exception ex) { rtfCSharp.ForeColor = Color.Red; rtfCSharp.Text = ex.ToString(); } try { HighlightCSharpishAsync(rtfCSharp, csharp).Wait(); // TODO: async all the way up } catch { } // NB: seen cases where this blows up because the code is invalid var root = new TreeNode(); Expand(root, expr); trvExpr.Nodes.Add(root); trvExpr.ExpandAll(); trvExpr.SelectedNode = root; UpdateIL(expr); }