protected override object CreateFancyDescription()
        {
            var ambience = new CSharpAmbience();

            ambience.ConversionFlags = ConversionFlags.StandardConversionFlags | ConversionFlags.ShowDeclaringType;
            string header        = ambience.ConvertSymbol(Entity);
            var    documentation = XmlDocumentationElement.Get(Entity);

            ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList;
            var b = new CSharpDocumentationBuilder(ambience);

            b.AddCodeBlock(header, keepLargeMargin: true);
            if (documentation != null)
            {
                foreach (var child in documentation.Children)
                {
                    b.AddDocumentationElement(child);
                }
            }

            var flowDocument = b.CreateFlowDocument();

            flowDocument.PagePadding = new Thickness(0); // default is NOT Thickness(0), but Thickness(Auto), which adds unnecessary space

            return(new FlowDocumentScrollViewer {
                Document = flowDocument,
                VerticalScrollBarVisibility = ScrollBarVisibility.Auto
            });
        }
        FlowDocumentScrollViewer GenerateHeader()
        {
            var ambience = new CSharpAmbience();

            ambience.ConversionFlags = ConversionFlags.StandardConversionFlags;
            var stringBuilder = new StringBuilder();
            var formatter     = new ParameterHighlightingOutputFormatter(stringBuilder, highlightedParameterIndex);

            ambience.ConvertSymbol(Method, formatter, FormattingOptionsFactory.CreateSharpDevelop());

            var documentation = XmlDocumentationElement.Get(Method);

            ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList;

            var    b             = new CSharpDocumentationBuilder(ambience);
            string parameterName = null;

            if (Method.Parameters.Count > highlightedParameterIndex)
            {
                parameterName = Method.Parameters[highlightedParameterIndex].Name;
            }
            b.AddSignatureBlock(stringBuilder.ToString(), formatter.parameterStartOffset, formatter.parameterLength, parameterName);

            var b2 = new CSharpDocumentationBuilder(ambience);

            b2.ParameterName     = parameterName;
            b2.ShowAllParameters = false;

            if (documentation != null)
            {
                foreach (var child in documentation.Children)
                {
                    b2.AddDocumentationElement(child);
                }
            }

            content = new FlowDocumentScrollViewer {
                Document = b2.CreateFlowDocument(),
                VerticalScrollBarVisibility = ScrollBarVisibility.Auto
            };

            var flowDocument = b.CreateFlowDocument();

            flowDocument.PagePadding = new Thickness(0); // default is NOT Thickness(0), but Thickness(Auto), which adds unnecessary space

            return(new FlowDocumentScrollViewer {
                Document = flowDocument,
                VerticalScrollBarVisibility = ScrollBarVisibility.Auto
            });
        }
    protected override object CreateFancyDescription() {
      var ambience = new CSharpAmbience();
      ambience.ConversionFlags = ConversionFlags.StandardConversionFlags | ConversionFlags.ShowDeclaringType;
      string header = ambience.ConvertSymbol(Entity);
      var documentation = XmlDocumentationElement.Get(Entity);

      ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList;
      var b = new CSharpDocumentationBuilder(ambience);
      b.AddCodeBlock(header, keepLargeMargin: true);
      if (documentation != null) {
        foreach (var child in documentation.Children) {
          b.AddDocumentationElement(child);
        }
      }

      var flowDocument = b.CreateFlowDocument();
      flowDocument.PagePadding = new Thickness(0); // default is NOT Thickness(0), but Thickness(Auto), which adds unnecessary space

      return new FlowDocumentScrollViewer {
        Document = flowDocument,
        VerticalScrollBarVisibility = ScrollBarVisibility.Auto
      };
    }
    FlowDocumentScrollViewer GenerateHeader() {
      var ambience = new CSharpAmbience();
      ambience.ConversionFlags = ConversionFlags.StandardConversionFlags;
      var stringBuilder = new StringBuilder();
      var formatter = new ParameterHighlightingOutputFormatter(stringBuilder, highlightedParameterIndex);
      ambience.ConvertSymbol(Method, formatter, FormattingOptionsFactory.CreateSharpDevelop());

      var documentation = XmlDocumentationElement.Get(Method);
      ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList;

      var b = new CSharpDocumentationBuilder(ambience);
      string parameterName = null;
      if (Method.Parameters.Count > highlightedParameterIndex)
        parameterName = Method.Parameters[highlightedParameterIndex].Name;
      b.AddSignatureBlock(stringBuilder.ToString(), formatter.parameterStartOffset, formatter.parameterLength, parameterName);

      var b2 = new CSharpDocumentationBuilder(ambience);
      b2.ParameterName = parameterName;
      b2.ShowAllParameters = false;

      if (documentation != null) {
        foreach (var child in documentation.Children) {
          b2.AddDocumentationElement(child);
        }
      }

      content = new FlowDocumentScrollViewer {
        Document = b2.CreateFlowDocument(),
        VerticalScrollBarVisibility = ScrollBarVisibility.Auto
      };

      var flowDocument = b.CreateFlowDocument();
      flowDocument.PagePadding = new Thickness(0); // default is NOT Thickness(0), but Thickness(Auto), which adds unnecessary space

      return new FlowDocumentScrollViewer {
        Document = flowDocument,
        VerticalScrollBarVisibility = ScrollBarVisibility.Auto
      };
    }