/**
         * <p>
         * Checks to see if the given object is equal to this phrase category. This
         * is done by checking the enumeration if the object is of the type
         * <code>PhraseCategory</code> or by converting the object and this category
         * to strings and comparing the strings.
         * </p>
         * <p>
         * For example, <code>PhraseCategory.CLAUSE</code> will match another
         * <code>PhraseCategory.CLAUSE</code> but will also match the string
         * <em>"clause"</em> as well.
         */
        public override bool Equals(object checkObject)
        {
            bool match = false;

            if (!ReferenceEquals(checkObject, null))
            {
                if (checkObject is PhraseCategory)
                {
                    match = _phraseCategory.Equals(((PhraseCategory)checkObject).GetPhraseCategory());
                }
                else if (checkObject is PhraseCategoryEnum)
                {
                    match = _phraseCategory == (PhraseCategoryEnum)checkObject;
                }
                else
                {
                    match = _phraseCategory.ToString()
                            .Equals(checkObject.ToString(), StringComparison.OrdinalIgnoreCase);
                }
            }

            return(match);
        }