private static SyntaxList <StatementSyntax> InsertWithinTriviaOfNext(
            SyntaxList <StatementSyntax> oldStatements,
            StatementSyntax newStatement,
            int statementIndex)
        {
            var nextStatement = oldStatements.ElementAtOrDefault(statementIndex);

            if (nextStatement == null)
            {
                return(oldStatements.Insert(statementIndex, newStatement));
            }

            // Grab all the trivia before the line the next statement is on and move it to the new node.

            var nextStatementLeading = nextStatement.GetLeadingTrivia();
            var precedingEndOfLine   = nextStatementLeading.LastOrDefault(t => t.Kind() == SyntaxKind.EndOfLineTrivia);

            if (precedingEndOfLine == default)
            {
                return(oldStatements.ReplaceRange(
                           nextStatement, new[] { newStatement, nextStatement }));
            }

            var endOfLineIndex = nextStatementLeading.IndexOf(precedingEndOfLine) + 1;

            return(oldStatements.ReplaceRange(
                       nextStatement, new[]
            {
                newStatement.WithLeadingTrivia(nextStatementLeading.Take(endOfLineIndex)),
                nextStatement.WithLeadingTrivia(nextStatementLeading.Skip(endOfLineIndex)),
            }));
        }
 private static SyntaxList<StatementSyntax> InsertWithinTriviaOfNext(
     SyntaxList<StatementSyntax> oldStatements,
     StatementSyntax newStatement,
     int statementIndex)
 {
     var nextStatement = oldStatements.ElementAtOrDefault(statementIndex);
     return nextStatement == null
         ? oldStatements.Insert(statementIndex, newStatement)
         : oldStatements.ReplaceRange(nextStatement, new[] {
             newStatement.WithLeadingTrivia(nextStatement.GetLeadingTrivia()),
             nextStatement.WithoutLeadingTrivia() });
 }