//---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Создание и добавление созданного элемента в список дочерних элементов
            /// </summary>
            /// <remarks>
            /// Происходит создание элемента указанного типа и добавление его в список дочерних элементов
            /// </remarks>
            /// <returns>Структурный элемент документа</returns>
            //---------------------------------------------------------------------------------------------------------
            public override CUrbanPlanningItem AddChildNewElement()
            {
                CSpecialElement special_element = new CSpecialElement(mSpecialType.GetDescriptionOrName(), mSpecialType);

                special_element.Special = this;
                mSpecialElements.Add(special_element);
                return(special_element);
            }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Удаление элемента из списка дочерних элементов
            /// </summary>
            /// <param name="element">Элемент</param>
            /// <returns>Статус успешности удаления</returns>
            //---------------------------------------------------------------------------------------------------------
            public override Boolean RemoveChildElement(CUrbanPlanningItem element)
            {
                CSpecialElement special_element = element as CSpecialElement;

                if (special_element != null)
                {
                    mSpecialElements.Remove(special_element);
                    return(true);
                }
                return(false);
            }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Добавление существующего элемента
            /// </summary>
            /// <remarks>
            /// Происходит только добавление существующего элемента. Если элемент принадлежит другому элементу,
            /// то элемент будет сначала удален из его списка
            /// </remarks>
            /// <param name="element">Элемент</param>
            /// <returns>Статус успешности добавления</returns>
            //---------------------------------------------------------------------------------------------------------
            public override Boolean AddChildExistingElement(CUrbanPlanningItem element)
            {
                CSpecialElement special_element = element as CSpecialElement;

                if (special_element != null)
                {
                    special_element.Special = this;
                    mSpecialElements.Add(special_element);
                    return(true);
                }
                return(false);
            }