/// <summary>
        /// УДАЛЕНИЕ ДУБЛИКАТОВ СВОЙСТВ
        /// Обход классов. Заполнение словарей для быстрого поиска классов
        /// </summary>
        /// <param name="class"></param>
        private void SurveyClass(Class @class)
        {
            @class.PropsCorrection();
            if (!String.IsNullOrWhiteSpace(@class.Code))//Классы без кода останутся но не попадают в словари
            {
                ClassLookUpByCode.Add(@class.Code, @class);

                if (@class.Properties.Count > 0)
                {
                    string key = GetClassKey(@class.Properties);

                    //Если есть 2 класса с одинаковым набором свойств, то словаре будет только один из них
                    if (!ClassLookUpByProps.ContainsKey(key))
                    {
                        ClassLookUpByProps.Add(key, @class);
                    }
                }
                else
                {
                    //обнаружен класс без свойств. Он подходит по имени?
                    for (int i = 0; i < Classifier.DefaultClasses.Length; i++)
                    {
                        if (DefClassesWithNoProps[i] == null && @class.Name.Equals(Classifier.DefaultClasses[i]))
                        {
                            DefClassesWithNoProps[i] = @class;
                        }
                    }
                }
            }

            foreach (Class nestedClass in @class.NestedClasses)
            {
                SurveyClass(nestedClass);
            }
        }
        /// <summary>
        /// Создает класс и добавляет его во все нужные словари
        /// </summary>
        /// <param name="Name"></param>
        /// <param name=""></param>
        /// <returns></returns>
        private Class CreateNewClass(string name, string nameInPlural, int defLevelNum, string propKey = null, List <XML.Cl.Property> clProps = null)
        {
            //string code = GetUniqueClassCode();
            string code   = Guid.NewGuid().ToString();
            Class  @class = new Class()
            {
                Name = name, NameInPlural = nameInPlural, DetailLevel = DefDetailLevels[defLevelNum], Code = code
            };

            ClassLookUpByCode.Add(code, @class);
            Classifier.NestedClasses.Add(@class);

            if (propKey != null && clProps != null)
            {
                @class.Properties = clProps;
                ClassLookUpByProps.Add(propKey, @class);
            }

            return(@class);
        }