/* Function: GetAllHTMLTagProperties
         * If <Type> is <JavadocElementType.HTMLTag>, this generates a dictionary of all the properties in the tag, if any.
         */
        public Dictionary <string, string> GetAllHTMLTagProperties()
        {
            if (type != JavadocElementType.HTMLTag)
            {
                throw new InvalidOperationException();
            }

            Dictionary <string, string> properties = new Dictionary <string, string>();

            Match             match    = HTMLTagRegex.Match(RawText, RawTextIndex, length);
            CaptureCollection captures = match.Groups[2].Captures;

            foreach (Capture capture in captures)
            {
                Match propertyMatch = HTMLTagPropertyRegex.Match(RawText, capture.Index, capture.Length);
                properties.Add(propertyMatch.Groups[1].ToString(),
                               DecodeHTMLPropertyValue(propertyMatch.Groups[2].Index, propertyMatch.Groups[2].Length));
            }

            return(properties);
        }
        /* Function: HTMLTagProperty
         * If <Type> is <JavadocElementType.HTMLTag>, return the value of the passed property, or null if it doesn't exist.  The property
         * name is case-insensitive.
         */
        public string HTMLTagProperty(string name)
        {
            if (type != JavadocElementType.HTMLTag)
            {
                throw new InvalidOperationException();
            }

            Match             match    = HTMLTagRegex.Match(RawText, RawTextIndex, length);
            CaptureCollection captures = match.Groups[2].Captures;

            foreach (Capture capture in captures)
            {
                Match propertyMatch = HTMLTagPropertyRegex.Match(RawText, capture.Index, capture.Length);

                if (name.Length == propertyMatch.Groups[1].Length &&
                    string.Compare(name, 0, RawText, propertyMatch.Groups[1].Index, name.Length, true) == 0)
                {
                    return(DecodeHTMLPropertyValue(propertyMatch.Groups[2].Index, propertyMatch.Groups[2].Length));
                }
            }

            return(null);
        }