public static async Task ComputeRefactoringsAsync(RefactoringContext context, MemberAccessExpressionSyntax memberAccess) { if (context.IsRefactoringEnabled(RefactoringIdentifiers.AddUsingStaticDirective) && memberAccess.Expression?.IsMissing == false && memberAccess.Name?.IsMissing == false && context.SupportsSemanticModel) { memberAccess = GetTopmostMemberAccessExpression(memberAccess); if (context.Span.IsBetweenSpans(memberAccess.Expression)) { SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false); var typeSymbol = semanticModel .GetSymbolInfo(memberAccess.Expression, context.CancellationToken) .Symbol as INamedTypeSymbol; if (typeSymbol?.IsStaticClass() == true && (typeSymbol.IsPublic() || typeSymbol.IsInternal()) && !SyntaxUtility.IsUsingStaticDirectiveInScope(memberAccess, typeSymbol, semanticModel, context.CancellationToken)) { context.RegisterRefactoring($"using static {typeSymbol.ToString()};", cancellationToken => { return(RefactorAsync( context.Document, typeSymbol.ToString(), memberAccess, cancellationToken)); }); } } } }