public static async Task <Document> RefactorAsync( Document document, MemberDeclarationSyntax member, CancellationToken cancellationToken = default) { MemberDeclarationSyntax newMember = member; SyntaxToken identifier = GetIdentifier(member); if (identifier != default) { SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); string newName = NameGenerator.Default.EnsureUniqueName(identifier.ValueText, semanticModel, member.SpanStart); ISymbol symbol = semanticModel.GetDeclaredSymbol(member, cancellationToken); ImmutableArray <SyntaxNode> references = await SyntaxFinder.FindReferencesAsync(symbol, document.Solution(), documents : ImmutableHashSet.Create(document), cancellationToken : cancellationToken).ConfigureAwait(false); SyntaxToken newIdentifier = SyntaxFactory.Identifier(newName); newMember = member.ReplaceNodes( references.Where(n => member.Contains(n)), (n, _) => { if (n is IdentifierNameSyntax identifierName) { return(identifierName.WithIdentifier(newIdentifier.WithTriviaFrom(identifierName.Identifier))); } else { Debug.Fail(n.Kind().ToString()); return(n); } }); newMember = SetIdentifier(newMember, newIdentifier.WithRenameAnnotation()); } else { newMember = newMember.WithNavigationAnnotation(); } MemberDeclarationListInfo memberList = SyntaxInfo.MemberDeclarationListInfo(member.Parent); int index = memberList.IndexOf(member); if (index == 0) { SyntaxToken?openBrace = memberList.OpenBraceToken; if (openBrace != null && openBrace.Value.GetFullSpanEndLine() == member.GetFullSpanStartLine()) { newMember = newMember.WithLeadingTrivia(member.GetLeadingTrivia().Insert(0, NewLine())); } } return(await document.ReplaceMembersAsync(memberList, memberList.Members.Insert(index + 1, newMember), cancellationToken).ConfigureAwait(false)); }