public void AugmentSignatureHelpSession(ISignatureHelpSession session, IList <ISignature> signatures)
        {
            if (signatures.Count == 0)
            {
                return;
            }

            // Update signature doco
            var sig = signatures.First();

            if (_sigDocoProp == null)
            {
                _sigDocoProp = sig.GetType().GetProperty("Documentation");
            }
            var newDoco = DocCommentHelper.ProcessParaTags(sig.Documentation);

            _sigDocoProp.SetValue(sig, newDoco, null);

            // Update parameter doco
            if (_paramDocoProp == null && sig.Parameters.Count > 0)
            {
                _paramDocoProp = sig.Parameters.First().GetType().GetProperty("Documentation");
            }
            foreach (var parameter in sig.Parameters)
            {
                newDoco = DocCommentHelper.ProcessParaTags(parameter.Documentation);
                _paramDocoProp.SetValue(parameter, newDoco, null);
            }
        }
        public void AugmentCompletionSession(ICompletionSession session, IList <CompletionSet> completionSets)
        {
            if (IsHtmlFile && completionSets.Any())
            {
                var bottomSpan = completionSets.First().ApplicableTo;
                if (!JScriptEditorUtil.IsInJScriptLanguageBlock(_lbm, bottomSpan.GetStartPoint(bottomSpan.TextBuffer.CurrentSnapshot)))
                {
                    // This is an HTML statement completion session, so do nothing
                    return;
                }
            }

            // TODO: Reflect over the ShimCompletionSet to see where the Description value comes from
            //       as setting the property does not actually change the value.
            var newCompletionSets = completionSets
                                    .Select(cs => cs == null ? cs : new ScriptCompletionSet(
                                                cs.Moniker,
                                                cs.DisplayName,
                                                cs.ApplicableTo,
                                                cs.Completions
                                                .Select(c => c == null ? c : new Completion(
                                                            c.DisplayText,
                                                            c.InsertionText,
                                                            DocCommentHelper.ProcessParaTags(c.Description),
                                                            c.IconSource,
                                                            c.IconAutomationText))
                                                .ToList(),
                                                cs.CompletionBuilders))
                                    .ToList();

            completionSets.Clear();

            newCompletionSets.ForEach(cs => completionSets.Add(cs));
        }