public static string GetPositionedText(this IParseTree tree, char filler = ' ') { var sb = new StringBuilder(); foreach (var descendant in tree.Descendants().OfType <TerminalNodeImpl>()) { var fillerCharCount = descendant.Payload.StartIndex - sb.Length; if (fillerCharCount > 0) { sb.Append(filler, fillerCharCount); } sb.Append(descendant.Payload.Text); } return(sb.ToString()); }