private static void ComputeRefactoring( RefactoringContext context, SyntaxNode node, BlockSyntax body, SemanticModel semanticModel) { if (body?.ContainsYieldReturn() != true) { return; } if (!(semanticModel.GetDeclaredSymbol(node, context.CancellationToken) is IMethodSymbol methodSymbol)) { return; } ITypeSymbol type = GetElementType(methodSymbol.ReturnType, semanticModel); if (type?.IsErrorType() != false) { return; } context.RegisterRefactoring( "Use List<T> instead of yield", cancellationToken => RefactorAsync(context.Document, type, body, body.Statements, cancellationToken), RefactoringIdentifiers.UseListInsteadOfYield); }