private static Task <Document> RefactorAsync <TNode>( Document document, WhileStatementSyntax whileStatement, ForStatementSyntax forStatement, List <TNode> list, CancellationToken cancellationToken) where TNode : StatementSyntax { forStatement = forStatement .WithFormatterAnnotation() .TrimLeadingTrivia() .PrependToLeadingTrivia(list[0].GetLeadingTrivia()); StatementListInfo statementsInfo = SyntaxInfo.StatementListInfo(whileStatement); SyntaxList <StatementSyntax> statements = statementsInfo.Statements; int index = statements.IndexOf(list[0]); IEnumerable <StatementSyntax> newStatements = statements.Take(index) .Concat(new ForStatementSyntax[] { forStatement }) .Concat(statements.Skip(index + list.Count + 1)); return(document.ReplaceStatementsAsync(statementsInfo, newStatements, cancellationToken)); }