public sealed override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) { var document = context.Document; var textSpan = context.Span; var cancellationToken = context.CancellationToken; // shouldn't have selection if (!textSpan.IsEmpty) { return; } // get applicable actions var finder = new ApplicableActionFinder(document, textSpan.Start, cancellationToken); var spanAndAction = await finder.GetSpanAndActionAsync().ConfigureAwait(false); if (spanAndAction == null || !spanAndAction.Item1.IntersectsWith(textSpan.Start)) { return; } context.RegisterRefactoring(spanAndAction.Item2); }