private void WriteNode(IAstNode node) {
Indent();
string type = node.GetType().ToString();
string name = type.Substring(type.LastIndexOf('.') + 1);
_sb.Append(name);
string innerType = node.ToString();
innerType = innerType.Replace("\n", "\\n");
innerType = innerType.Replace("\r", "\\r");
int ms = innerType.IndexOf("Microsoft", StringComparison.Ordinal);
if (ms >= 0) {
innerType = innerType.Substring(type.LastIndexOf('.') + 1);
}
if (innerType != name) {
_sb.Append(" [");
_sb.Append(innerType);
_sb.AppendLine("]");
} else {
_sb.AppendLine(string.Format(CultureInfo.InvariantCulture, " [{0}...{1})", node.Start, node.End));
}
_indent++;
foreach (IAstNode child in node.Children) {
WriteNode(child);
}
if (node is CommaSeparatedList) {
var csl = node as CommaSeparatedList;
if (csl.Count > 0 && csl[csl.Count - 1] is StubArgument) {
WriteNode(csl[csl.Count - 1]);
}
}
_indent--;
}