public override void Init()
        {
            try
            {
                CppQualifiedName cppQualifiedName = this.DeclarationSpecifierTypename.GetQualifiedName();

                this.TypeName = cppQualifiedName.GetNameStr();

                CppClassTag cppClassTag = this.DeclarationSpecifierTypename.GetClassTag();

                this.ClassTag = cppClassTag.ToString("g");

                DeclarationSpecifiersBase declarationSpecifiers = this.DeclarationSpecifierTypename.GetDeclarationSpecifiers();

                switch (declarationSpecifiers)
                {
                case BaseTypeGenericConstraintItem genericConstraintItem:
                    break;

                case DeclarationSpecifiers specifiers:
                    break;

                case EnumBase enumBase:
                    break;

                default:
                    break;
                }

                string identifier = this.DeclarationSpecifierTypename.Identifier.GetText();

                TypeId typeId = this.DeclarationSpecifierTypename.CliSimpleTypeId;

                if (typeId != null)
                {
                    string typeIdStr = typeId.GetText();

                    CppQualType cppQualType = typeId.GetQualType();

                    CppTypeVisitor cppTypeVisitor = new CppTypeVisitor();

                    cppQualType.Accept(cppTypeVisitor);

                    string typeStr = cppTypeVisitor.TypeStr;
                    string nameStr = cppTypeVisitor.Name;
                    string dbgStr  = cppTypeVisitor.DbgStr;
                }

                base.Init();

                //this.SaveToJson = true;
            }
            catch (Exception e)
            {
                LogManager.Self.Log("PenWebDeclarationSpecifierTypename Exception", e);
            }

            this.DeclarationSpecifierTypename = null;
        }