protected override Expression VisitIndex(IndexExpression node) { if (node.Object != null) { Visit(node.Object); } else { Debug.Assert(node.Indexer != null); Out(node.Indexer.DeclaringType.Name); } if (node.Indexer != null) { Out('.'); Out(node.Indexer.Name); } Out('['); for (int i = 0, n = node.ArgumentCount(); i < n; i++) { if (i > 0) { Out(", "); } Visit(node.GetArgument(i)); } Out(']'); return(node); }