protected static HighlightingInfo CreateHighlighting([NotNull] ITreeNode token, string highlightingAttributeId)
        {
            var range        = token.GetNavigationRange();
            var highlighting = new FSharpIdentifierHighlighting(highlightingAttributeId, range);

            return(new HighlightingInfo(range, highlighting));
        }
        private void HighlightUses(Action <DaemonStageResult> committer, IEnumerable <FSharpResolvedSymbolUse> symbols, int allSymbolsCount)
        {
            var highlightings = new List <HighlightingInfo>(allSymbolsCount);

            foreach (var resolvedSymbolUse in symbols)
            {
                var symbolUse = resolvedSymbolUse.SymbolUse;
                var symbol    = symbolUse.Symbol;

                var highlightingId =
                    symbolUse.IsFromComputationExpression
            ? HighlightingAttributeIds.KEYWORD
            : symbol.GetHighlightingAttributeId();

                if (symbolUse.IsFromDefinition && symbol is FSharpMemberOrFunctionOrValue mfv)
                {
                    if (myDocument.Buffer.GetText(resolvedSymbolUse.Range).Equals("new", StringComparison.Ordinal) &&
                        mfv.LogicalName.Equals(".ctor", StringComparison.Ordinal))
                    {
                        continue;
                    }
                }

                var documentRange = new DocumentRange(myDocument, resolvedSymbolUse.Range);
                var highlighting  = new FSharpIdentifierHighlighting(highlightingId, documentRange);
                highlightings.Add(new HighlightingInfo(documentRange, highlighting));

                SeldomInterruptChecker.CheckForInterrupt();
            }
            committer(new DaemonStageResult(highlightings));
        }