public override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) { SyntaxNode root = await context.Document.GetSyntaxRootAsync(context.CancellationToken); ArgumentListSyntax argumentList = root .FindNode(context.Span, getInnermostNodeForTie: true)? .FirstAncestorOrSelf<ArgumentListSyntax>(); if (argumentList == null) return; if (argumentList.Arguments.Count == 0) return; if (!context.Span.IsEmpty) ArgumentRefactoring.AddOrRemoveArgumentName(context, argumentList); if (argumentList.IsSingleline()) { if (argumentList.Arguments.Count > 1) { context.RegisterRefactoring( "Format each argument on separate line", cancellationToken => FormatEachArgumentOnNewLineAsync(context.Document, argumentList, cancellationToken)); } } else { context.RegisterRefactoring( "Format all arguments on a single line", cancellationToken => FormatAllArgumentsOnSingleLineAsync(context.Document, argumentList, cancellationToken)); } SwapArgumentsRefactoring.Refactor(context, argumentList); }