//=====================================================================

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="writer">The API visitor and reflection data writer</param>
        /// <param name="configuration">This add-in has no configurable options</param>
        public XamlAttachedMembersAddIn(ManagedReflectionWriter writer, XPathNavigator configuration) :
          base(writer, configuration)
        {
            attachedMembers = new Dictionary<Object, Field>();

            // Keep track of the writer
            mrw = writer;

            // Register processors as callbacks
            writer.RegisterStartTagCallback("apis", AddAttachedMembers);
            writer.RegisterStartTagCallback("apidata", WriteAttachedMember);
            writer.RegisterEndTagCallback("api", WriteAttachmentData);

            // Determine the type names and suffixes of our relevant fields
            dependencyPropertyTypeName = 
                GetConfigurationValue(configuration, "dependencyPropertyTypeName") ?? 
                "System.Windows.DependencyProperty";

            dependencyPropertySuffix =
                GetConfigurationValue(configuration, "dependencyPropertySuffix") ??
                "Property";

            routedEventTypeName =
                GetConfigurationValue(configuration, "routedEventTypeName") ??
                "System.Windows.RoutedEvent";

            routedEventSuffix =
                GetConfigurationValue(configuration, "routedEventSuffix") ??
                "Event";
        }
        public XamlAttachedMembersAddIn(ManagedReflectionWriter writer, XPathNavigator configuration) : base(writer, configuration) {
            // keep track of the writer
            mrw = writer;

            // register processors as callbacks
            writer.RegisterStartTagCallback("apis", new MRefBuilderCallback(AddAttachedMembers));
            writer.RegisterStartTagCallback("apidata", new MRefBuilderCallback(WriteAttachedMember));
            writer.RegisterStartTagCallback("typedata", new MRefBuilderCallback(WriteContentPropertyData));
            writer.RegisterEndTagCallback("api", new MRefBuilderCallback(WriteAttachmentData));
        }
        //=====================================================================

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="writer">The API visitor and reflection data writer</param>
        /// <param name="configuration">This add-in has no configurable options</param>
        public ExtensionMethodAddIn(ManagedReflectionWriter writer, XPathNavigator configuration) :
          base(writer, configuration)
        {
            index = new Dictionary<TypeNode, List<Method>>();

            this.mrw = writer;

            writer.RegisterStartTagCallback("apis", RecordExtensionMethods);
            writer.RegisterStartTagCallback("apidata", AddExtensionSubsubgroup);
            writer.RegisterEndTagCallback("elements", AddExtensionMethods);
        }
        //=====================================================================

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="writer">The API visitor and reflection data writer</param>
        /// <param name="configuration">This add-in has no configurable options</param>
        public XamlAttachedMembersAddIn(ManagedReflectionWriter writer, XPathNavigator configuration) :
          base(writer, configuration)
        {
            attachedMembers = new Dictionary<Object, Field>();

            // Keep track of the writer
            mrw = writer;

            // Register processors as callbacks
            writer.RegisterStartTagCallback("apis", AddAttachedMembers);
            writer.RegisterStartTagCallback("apidata", WriteAttachedMember);
            writer.RegisterEndTagCallback("api", WriteAttachmentData);
        }
 public ExtensionMethodAddIn(ManagedReflectionWriter reflector, XPathNavigator configuration) : base(reflector, configuration) {
     this.reflector = reflector;
     reflector.RegisterStartTagCallback("apis", new MRefBuilderCallback(RecordExtensionMethods));
     reflector.RegisterEndTagCallback("elements", new MRefBuilderCallback(AddExtensionMethods));
     reflector.RegisterStartTagCallback("apidata", new MRefBuilderCallback(AddExtensionSubsubgroup));
 }