protected override async Task <CompletionDescription> GetDescriptionWorkerAsync( Document document, CompletionItem item, CancellationToken cancellationToken) { var position = SymbolCompletionItem.GetContextPosition(item); var name = SymbolCompletionItem.GetSymbolName(item); var kind = SymbolCompletionItem.GetKind(item); var isGeneric = SymbolCompletionItem.GetSymbolIsGeneric(item); var relatedDocumentIds = document.Project.Solution.GetRelatedDocumentIds(document.Id).Concat(document.Id); var options = document.Project.Solution.Workspace.Options; var totalSymbols = await base.GetPerContextSymbolsAsync(document, position, options, relatedDocumentIds, preselect : false, cancellationToken : cancellationToken).ConfigureAwait(false); foreach (var(documentId, syntaxContext, symbols) in totalSymbols) { var bestSymbols = symbols.WhereAsArray( s => kind != null && s.Kind == kind && s.Name == name && isGeneric == (s.GetArity() > 0)); if (bestSymbols.Any()) { return(await SymbolCompletionItem.GetDescriptionAsync(item, bestSymbols, document, syntaxContext.SemanticModel, cancellationToken).ConfigureAwait(false)); } } return(CompletionDescription.Empty); }