public void AddGlossaryItem(GlossaryItem glossaryItem)
        {
            _glossaryItems.Add(glossaryItem);

            if (glossaryItem.IsTermPreferred)
            {
                try
                {
                    _AbbreviationToTermDictionary.Add(glossaryItem.Abbreviation.ToUpper(), glossaryItem.Term);
                }
                catch (Exception ex)
                {
                    if (ex.GetType() == typeof(ArgumentException) && ex.Message.Contains("same key"))
                    {
                        throw new DuplicateNameException($"An preferred glossary item for '{glossaryItem.Abbreviation}' is already in the glossary. There can be only one primary term for an abbreviation. Consider marking IsTermPreferred to false.");
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
            if (glossaryItem.Abbreviation.IsNotNullOrEmptyString())
            {
                try
                {
                    _TermToAbbreviationDictionary.Add(glossaryItem.Term.ToUpper(), glossaryItem.Abbreviation);
                }
                catch (Exception ex)
                {
                    if (ex.GetType() == typeof(ArgumentException) && ex.Message.Contains("same key"))
                    {
                        throw new DuplicateNameException($"The term '{glossaryItem.Term}' already exists in the glossary. ");
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
        }
 public void RemoveGlossaryItem(GlossaryItem gi)
 {
     _glossaryItems.Remove(gi);
 }