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());
        }