/// <summary>
        /// Achtung: Diese Methode wird bereits in einem Background Thread aufgerufen. Also vorischt bzgl. thread safety!
        /// Deshalb werden die BuildResultArgs bereits vorab im GUI Thread erstellt.
        /// </summary>
        static async Task<ParseResult> BuildResultAsync(BuildResultArgs args, CancellationToken cancellationToken) {
            
            return await Task.Run(() => {

                var syntaxTree  = args.ParseMethod(args.Text, args.FilePath, cancellationToken).SyntaxTree;

                return new ParseResult(syntaxTree, args.Snapshot);

            }, cancellationToken).ConfigureAwait(false);            
        }
        /// <summary>
        /// Diese Methode muss im GUI Thread aufgerufen werden!
        /// </summary>
        BuildResultArgs CreateBuildResultArgs() {
            var args = new BuildResultArgs {
                Snapshot    = TextBuffer.CurrentSnapshot,
                Text        = TextBuffer.CurrentSnapshot.GetText(),
                FilePath    = TextBuffer.GetTextDocument()?.FilePath,
                ParseMethod = GetParseMethod(TextBuffer)
            };

            return args;
        }