
--[[------------------------------------------------------------------------------
-- <auto-generated>
--     This code was generated by a tool.
--     Changes to this file may cause incorrect behavior and will be lost if
--     the code is regenerated.
-- </auto-generated>
--]]------------------------------------------------------------------------------

local setmetatable = setmetatable
local pairs = pairs
local ipairs = ipairs
local tinsert = table.insert

local function SimpleClass()
    local class = {}
    class.__index = class
    class.New = function(...)
        local ctor = class.ctor
        local o = ctor and ctor(...) or {}
        setmetatable(o, class)
        return o
    end
    return class
end


local function get_map_size(m)
    local n = 0
    for _ in pairs(m) do
        n = n + 1
    end
    return n
end

local enums =
{
    ---@class ai.EExecutor
     ---@field public CLIENT integer
     ---@field public SERVER integer
    ['ai.EExecutor'] = {   CLIENT=0,  SERVER=1,  };
    ---@class ai.EKeyType
     ---@field public BOOL integer
     ---@field public INT integer
     ---@field public FLOAT integer
     ---@field public STRING integer
     ---@field public VECTOR integer
     ---@field public ROTATOR integer
     ---@field public NAME integer
     ---@field public CLASS integer
     ---@field public ENUM integer
     ---@field public OBJECT integer
    ['ai.EKeyType'] = {   BOOL=1,  INT=2,  FLOAT=3,  STRING=4,  VECTOR=5,  ROTATOR=6,  NAME=7,  CLASS=8,  ENUM=9,  OBJECT=10,  };
    ---@class ai.EFlowAbortMode
     ---@field public NONE integer
     ---@field public LOWER_PRIORITY integer
     ---@field public SELF integer
     ---@field public BOTH integer
    ['ai.EFlowAbortMode'] = {   NONE=0,  LOWER_PRIORITY=1,  SELF=2,  BOTH=3,  };
    ---@class ai.EFinishMode
     ---@field public IMMEDIATE integer
     ---@field public DELAYED integer
    ['ai.EFinishMode'] = {   IMMEDIATE=0,  DELAYED=1,  };
    ---@class ai.ENotifyObserverMode
     ---@field public ON_VALUE_CHANGE integer
     ---@field public ON_RESULT_CHANGE integer
    ['ai.ENotifyObserverMode'] = {   ON_VALUE_CHANGE=0,  ON_RESULT_CHANGE=1,  };
    ---@class ai.EOperator
     ---@field public IS_EQUAL_TO integer
     ---@field public IS_NOT_EQUAL_TO integer
     ---@field public IS_LESS_THAN integer
     ---@field public IS_LESS_THAN_OR_EQUAL_TO integer
     ---@field public IS_GREAT_THAN integer
     ---@field public IS_GREAT_THAN_OR_EQUAL_TO integer
     ---@field public CONTAINS integer
     ---@field public NOT_CONTAINS integer
    ['ai.EOperator'] = {   IS_EQUAL_TO=0,  IS_NOT_EQUAL_TO=1,  IS_LESS_THAN=2,  IS_LESS_THAN_OR_EQUAL_TO=3,  IS_GREAT_THAN=4,  IS_GREAT_THAN_OR_EQUAL_TO=5,  CONTAINS=6,  NOT_CONTAINS=7,  };
    ---@class AudioType
     ---@field public UNKNOWN integer
     ---@field public ACC integer
     ---@field public AIFF integer
    ['AudioType'] = {   UNKNOWN=0,  ACC=1,  AIFF=2,  };
    ---@class common.EBoolOperator
     ---@field public AND integer
     ---@field public OR integer
    ['common.EBoolOperator'] = {   AND=0,  OR=1,  };
    ---@class item.EItemQuality @道具品质
     ---@field public WHITE integer @白
     ---@field public GREEN integer @绿
     ---@field public BLUE integer @蓝
     ---@field public PURPLE integer @紫
     ---@field public GOLDEN integer @金
    ['item.EItemQuality'] = {   WHITE=0,  GREEN=1,  BLUE=2,  PURPLE=3,  GOLDEN=4,  };
    ---@class item.ECurrencyType
     ---@field public DIAMOND integer @钻石
     ---@field public GOLD integer @金币
     ---@field public SILVER integer @银币
     ---@field public EXP integer @经验
     ---@field public POWER_POINT integer @能量点
    ['item.ECurrencyType'] = {   DIAMOND=1,  GOLD=2,  SILVER=3,  EXP=4,  POWER_POINT=5,  };
    ---@class item.EMajorType
     ---@field public CURRENCY integer @货币
     ---@field public CLOTH integer @服装
     ---@field public QUEST integer @任务
     ---@field public CONSUMABLES integer @消耗品
     ---@field public TREASURE_BOX integer @宝箱
     ---@field public ACHIEVEMENT_AND_TITLE integer @成就和称谓
     ---@field public HEAD_FRAME integer @头像框
     ---@field public VOICE integer @语音
     ---@field public ACTION integer @动作
     ---@field public EXPANSION integer @扩容道具
     ---@field public MATERIAL integer @制作材料
    ['item.EMajorType'] = {   CURRENCY=1,  CLOTH=2,  QUEST=3,  CONSUMABLES=4,  TREASURE_BOX=5,  ACHIEVEMENT_AND_TITLE=6,  HEAD_FRAME=7,  VOICE=8,  ACTION=9,  EXPANSION=10,  MATERIAL=11,  };
    ---@class item.EMinorType
     ---@field public DIAMOND integer @钻石
     ---@field public GOLD integer @金币
     ---@field public SILVER integer @银币
     ---@field public EXP integer @经验
     ---@field public POWER_POINT integer @能量点
     ---@field public HAIR_STYLE integer @发型
     ---@field public COAT integer @外套
     ---@field public UPPER_JACKET integer @上衣
     ---@field public TROUSERS integer @裤子
     ---@field public SKIRT integer @裙子
     ---@field public SOCKS integer @袜子
     ---@field public SHOES integer @鞋子
     ---@field public HAIR_ACCESSORY integer @发饰
     ---@field public HAT integer @帽子
     ---@field public EARRING integer @耳饰
     ---@field public NECKLACE integer @颈饰
     ---@field public BRACELET integer @腕饰
     ---@field public HAIR_CLASP integer @发箍
     ---@field public GLOVE integer @手套
     ---@field public HANDHELD_OBJECT integer @手持物
     ---@field public SPECIAL integer @特殊
     ---@field public BASE_COSMETIC integer @底妆
     ---@field public EYEBROW_COSMETIC integer @眉妆
     ---@field public EYELASH integer @睫毛
     ---@field public COSMETIC_CONTACT_LENSES integer @美瞳
     ---@field public LIP_COSMETIC integer @唇妆
     ---@field public SKIN_COLOR integer @肤色
     ---@field public ONE_PIECE_DRESS integer @连衣裙
     ---@field public SWITCH_CLOTHES_SCENE integer @换装场景
     ---@field public QUEST integer @任务道具
     ---@field public CAST integer @投掷物
     ---@field public SWORD integer @刀剑
     ---@field public BOW_ARROW integer @弓箭
     ---@field public WANDS integer @法杖
     ---@field public SPECIAL_TOOL integer @特殊工具
     ---@field public FOOD integer @食物
     ---@field public TREASURE_BOX integer @宝箱
     ---@field public KEY integer @钥匙
     ---@field public MULTI_CHOOSE_TREASURE_BOX integer @多选一宝箱
     ---@field public ACHIEVEMENT integer @成就相关
     ---@field public TITLE integer @称谓相关
     ---@field public AVATAR_FRAME integer @头像框
     ---@field public VOICE integer @语音
     ---@field public IDLE_POSE integer @特殊待机动作
     ---@field public PHOTO_POSE integer @拍照动作
     ---@field public BAG integer @背包
     ---@field public FRIEND_CAPACITY integer @好友数量
     ---@field public CONSTRUCTION_MATERIAL integer @制作材料
     ---@field public DESIGN_DRAWING integer @设计图纸
    ['item.EMinorType'] = {   DIAMOND=101,  GOLD=102,  SILVER=103,  EXP=104,  POWER_POINT=105,  HAIR_STYLE=210,  COAT=220,  UPPER_JACKET=230,  TROUSERS=241,  SKIRT=242,  SOCKS=250,  SHOES=260,  HAIR_ACCESSORY=271,  HAT=272,  EARRING=273,  NECKLACE=274,  BRACELET=275,  HAIR_CLASP=276,  GLOVE=277,  HANDHELD_OBJECT=278,  SPECIAL=279,  BASE_COSMETIC=281,  EYEBROW_COSMETIC=282,  EYELASH=283,  COSMETIC_CONTACT_LENSES=284,  LIP_COSMETIC=285,  SKIN_COLOR=286,  ONE_PIECE_DRESS=290,  SWITCH_CLOTHES_SCENE=291,  QUEST=301,  CAST=401,  SWORD=421,  BOW_ARROW=422,  WANDS=423,  SPECIAL_TOOL=424,  FOOD=403,  TREASURE_BOX=501,  KEY=502,  MULTI_CHOOSE_TREASURE_BOX=503,  ACHIEVEMENT=601,  TITLE=602,  AVATAR_FRAME=701,  VOICE=801,  IDLE_POSE=901,  PHOTO_POSE=902,  BAG=1001,  FRIEND_CAPACITY=1002,  CONSTRUCTION_MATERIAL=1101,  DESIGN_DRAWING=1102,  };
    ---@class item.EClothersStarQualityType
     ---@field public ONE integer @一星
     ---@field public TWO integer @二星
     ---@field public THREE integer @三星
     ---@field public FOUR integer @四星
     ---@field public FIVE integer @五星
     ---@field public SIX integer @六星
     ---@field public SEVEN integer @七星
     ---@field public EIGHT integer @八星
     ---@field public NINE integer @九星
     ---@field public TEN integer @十星
    ['item.EClothersStarQualityType'] = {   ONE=1,  TWO=2,  THREE=3,  FOUR=4,  FIVE=5,  SIX=6,  SEVEN=7,  EIGHT=8,  NINE=9,  TEN=10,  };
    ---@class item.EClothersTag
     ---@field public FANG_SHAI integer @防晒
     ---@field public WU_ZHE integer @舞者
    ['item.EClothersTag'] = {   FANG_SHAI=1,  WU_ZHE=2,  };
    ---@class item.EUseType
     ---@field public MANUAL integer @手动
     ---@field public AUTO integer @自动
    ['item.EUseType'] = {   MANUAL=0,  AUTO=1,  };
    ---@class item.EClothesHidePartType
     ---@field public CHEST integer @胸部
     ---@field public HEAD integer @手
     ---@field public SPINE_UPPER integer @脊柱上
     ---@field public SPINE_LOWER integer @脊柱下
     ---@field public HIP integer @臀部
     ---@field public LEG_UPPER integer @腿上
     ---@field public LEG_MIDDLE integer @腿中
     ---@field public LEG_LOWER integer @腿下
    ['item.EClothesHidePartType'] = {   CHEST=0,  HEAD=1,  SPINE_UPPER=2,  SPINE_LOWER=3,  HIP=4,  LEG_UPPER=5,  LEG_MIDDLE=6,  LEG_LOWER=7,  };
    ---@class item.EClothesPropertyType
     ---@field public JIAN_YUE integer @简约
     ---@field public HUA_LI integer @华丽
     ---@field public KE_AI integer @可爱
     ---@field public CHENG_SHU integer @成熟
     ---@field public HUO_PO integer @活泼
     ---@field public YOU_YA integer @优雅
     ---@field public QING_CHUN integer @清纯
     ---@field public XING_GAN integer @性感
     ---@field public QING_LIANG integer @清凉
     ---@field public BAO_NUAN integer @保暖
    ['item.EClothesPropertyType'] = {   JIAN_YUE=1,  HUA_LI=2,  KE_AI=3,  CHENG_SHU=4,  HUO_PO=5,  YOU_YA=6,  QING_CHUN=7,  XING_GAN=8,  QING_LIANG=9,  BAO_NUAN=10,  };
    ---@class test.DemoEnum
     ---@field public NONE integer
     ---@field public A integer @aa
     ---@field public B integer @bb
     ---@field public C integer @cc
     ---@field public D integer @dd
    ['test.DemoEnum'] = {   NONE=0,  A=1,  B=2,  C=4,  D=5,  };
    ---@class test.DemoFlag
     ---@field public A integer
     ---@field public B integer
     ---@field public C integer
     ---@field public D integer
    ['test.DemoFlag'] = {   A=1,  B=2,  C=4,  D=8,  };
    ---@class test.ETestUeType
     ---@field public WHITE integer @白
     ---@field public BLACK integer
    ['test.ETestUeType'] = {   WHITE=0,  BLACK=1,  };
    ---@class test.ETestEmptyEnum
    ['test.ETestEmptyEnum'] = {   };
    ---@class test.ETestEmptyEnum2
     ---@field public SMALL_THAN_256 integer
     ---@field public X_256 integer
     ---@field public X_257 integer
    ['test.ETestEmptyEnum2'] = {   SMALL_THAN_256=255,  X_256=256,  X_257=257,  };
    ---@class test.ETestQuality
     ---@field public A integer @最高品质
     ---@field public B integer @黑色的
     ---@field public C integer @蓝色的
     ---@field public D integer @最差品质
    ['test.ETestQuality'] = {   A=1,  B=2,  C=3,  D=4,  };
    ---@class test.AccessFlag
     ---@field public WRITE integer
     ---@field public READ integer
     ---@field public TRUNCATE integer
     ---@field public NEW integer
     ---@field public READ_WRITE integer
    ['test.AccessFlag'] = {   WRITE=1,  READ=2,  TRUNCATE=4,  NEW=8,  READ_WRITE=3,  };
}

local tables =
{
    { name='TbBlackboard', file='ai_tbblackboard', mode='map', index='name', value_type='ai.Blackboard' },
    { name='TbBehaviorTree', file='ai_tbbehaviortree', mode='map', index='id', value_type='ai.BehaviorTree' },
    { name='TbGlobalConfig', file='common_tbglobalconfig', mode='one', value_type='common.GlobalConfig'},
    { name='TbItem', file='item_tbitem', mode='map', index='id', value_type='item.Item' },
    { name='TbL10NDemo', file='l10n_tbl10ndemo', mode='map', index='id', value_type='l10n.L10NDemo' },
    { name='TbPatchDemo', file='l10n_tbpatchdemo', mode='map', index='id', value_type='l10n.PatchDemo' },
    { name='TbTestTag', file='tag_tbtesttag', mode='map', index='id', value_type='tag.TestTag' },
    { name='TbFullTypes', file='test_tbfulltypes', mode='map', index='x4', value_type='test.DemoType2' },
    { name='TbSingleton', file='test_tbsingleton', mode='one', value_type='test.DemoSingletonType'},
    { name='TbNotIndexList', file='test_tbnotindexlist', mode='list', index='', value_type='test.NotIndexList' },
    { name='TbMultiUnionIndexList', file='test_tbmultiunionindexlist', mode='list', index='id1+id2+id3', value_type='test.MultiUnionIndexList' },
    { name='TbMultiIndexList', file='test_tbmultiindexlist', mode='list', index='id1,id2,id3', value_type='test.MultiIndexList' },
    { name='TbDataFromMisc', file='test_tbdatafrommisc', mode='map', index='x4', value_type='test.DemoType2' },
    { name='TbMultiRowRecord', file='test_tbmultirowrecord', mode='map', index='id', value_type='test.MultiRowRecord' },
    { name='TbTestMultiColumn', file='test_tbtestmulticolumn', mode='map', index='id', value_type='test.TestMultiColumn' },
    { name='TbMultiRowTitle', file='test_tbmultirowtitle', mode='map', index='id', value_type='test.MultiRowTitle' },
    { name='TbTestNull', file='test_tbtestnull', mode='map', index='id', value_type='test.TestNull' },
    { name='TbDemoPrimitive', file='test_tbdemoprimitive', mode='map', index='x4', value_type='test.DemoPrimitiveTypesTable' },
    { name='TbTestString', file='test_tbteststring', mode='map', index='id', value_type='test.TestString' },
    { name='TbDemoGroup', file='test_tbdemogroup', mode='map', index='id', value_type='test.DemoGroup' },
    { name='TbTestGlobal', file='test_tbtestglobal', mode='one', value_type='test.TestGlobal'},
    { name='TbTestBeRef', file='test_tbtestberef', mode='map', index='id', value_type='test.TestBeRef' },
    { name='TbTestBeRef2', file='test_tbtestberef2', mode='map', index='id', value_type='test.TestBeRef' },
    { name='TbTestRef', file='test_tbtestref', mode='map', index='id', value_type='test.TestRef' },
    { name='TbTestSize', file='test_tbtestsize', mode='map', index='id', value_type='test.TestSize' },
    { name='TbTestSet', file='test_tbtestset', mode='map', index='id', value_type='test.TestSet' },
    { name='TbDetectCsvEncoding', file='test_tbdetectcsvencoding', mode='map', index='id', value_type='test.DetectEncoding' },
    { name='TbItem2', file='test_tbitem2', mode='map', index='id', value_type='test.ItemBase' },
    { name='TbTestIndex', file='test_tbtestindex', mode='map', index='id', value_type='test.TestIndex' },
    { name='TbTestMap', file='test_tbtestmap', mode='map', index='id', value_type='test.TestMap' },
    { name='TbExcelFromJson', file='test_tbexcelfromjson', mode='map', index='x4', value_type='test.ExcelFromJson' },
    { name='TbCompositeJsonTable1', file='test_tbcompositejsontable1', mode='map', index='id', value_type='test.CompositeJsonTable1' },
    { name='TbCompositeJsonTable2', file='test_tbcompositejsontable2', mode='map', index='id', value_type='test.CompositeJsonTable2' },
    { name='TbCompositeJsonTable3', file='test_tbcompositejsontable3', mode='one', value_type='test.CompositeJsonTable3'},
    { name='TbExcelFromJsonMultiRow', file='test_tbexcelfromjsonmultirow', mode='map', index='id', value_type='test.ExcelFromJsonMultiRow' },
    { name='TbTestScriptableObject', file='test_tbtestscriptableobject', mode='map', index='id', value_type='test.TestScriptableObject' },
    { name='TbTestMapper', file='test_tbtestmapper', mode='map', index='id', value_type='test.TestMapper' },
    { name='TbDefineFromExcel2', file='test_tbdefinefromexcel2', mode='map', index='id', value_type='DefineFromExcel2' },
}

local function InitTypes(methods)
    local readBool = methods.readBool
    local readByte = methods.readByte
    local readShort = methods.readShort
    local readFshort = methods.readFshort
    local readInt = methods.readInt
    local readFint = methods.readFint
    local readLong = methods.readLong
    local readFlong = methods.readFlong
    local readFloat = methods.readFloat
    local readDouble = methods.readDouble
    local readSize = methods.readSize

    local readString = methods.readString

    local function readList(bs, keyFun)
        local list = {}
        local v
        for i = 1, readSize(bs) do
            tinsert(list, keyFun(bs))
        end
        return list
    end

    local readArray = readList

    local function readSet(bs, keyFun)
        local set = {}
        local v
        for i = 1, readSize(bs) do
            tinsert(set, keyFun(bs))
        end
        return set
    end

    local function readMap(bs, keyFun, valueFun)
        local map = {}
        for i = 1, readSize(bs) do
            local k = keyFun(bs)
            local v = valueFun(bs)
            map[k] = v
        end
        return map
    end

    local function readNullableBool(bs)
        if readBool(bs) then
            return readBool(bs)
        end
    end
    
    local beans = {}
        do
        ---@class ai.Blackboard 
         ---@field public name string
         ---@field public desc string
         ---@field public parent_name string
         ---@field public keys ai.BlackboardKey[]
            local class = {
                { name='name', type='string'},
                { name='desc', type='string'},
                { name='parent_name', type='string'},
                { name='keys', type='ai.BlackboardKey[]'},
            }
            beans['ai.Blackboard'] = class
        end
        do
        ---@class ai.BlackboardKey 
         ---@field public name string
         ---@field public desc string
         ---@field public is_static boolean
         ---@field public type integer
         ---@field public type_class_name string
            local class = {
                { name='name', type='string'},
                { name='desc', type='string'},
                { name='is_static', type='boolean'},
                { name='type', type='integer'},
                { name='type_class_name', type='string'},
            }
            beans['ai.BlackboardKey'] = class
        end
        do
        ---@class ai.BehaviorTree 
         ---@field public id integer
         ---@field public name string
         ---@field public desc string
         ---@field public blackboard_id string
         ---@field public root ai.ComposeNode
            local class = {
                { name='id', type='integer'},
                { name='name', type='string'},
                { name='desc', type='string'},
                { name='blackboard_id', type='string'},
                { name='root', type='ai.ComposeNode'},
            }
            beans['ai.BehaviorTree'] = class
        end
        do
        ---@class ai.Node 
         ---@field public id integer
         ---@field public node_name string
            local class = {
                { name='id', type='integer'},
                { name='node_name', type='string'},
            }
            beans['ai.Node'] = class
        end
        do
        ---@class ai.Service :ai.Node 
            local class = {
            }
            beans['ai.Service'] = class
        end
        do
        ---@class ai.UeSetDefaultFocus :ai.Service 
         ---@field public keyboard_key string
            local class = {
                { name='keyboard_key', type='string'},
            }
            beans['ai.UeSetDefaultFocus'] = class
        end
        do
        ---@class ai.ExecuteTimeStatistic :ai.Service 
            local class = {
            }
            beans['ai.ExecuteTimeStatistic'] = class
        end
        do
        ---@class ai.ChooseTarget :ai.Service 
         ---@field public result_target_key string
            local class = {
                { name='result_target_key', type='string'},
            }
            beans['ai.ChooseTarget'] = class
        end
        do
        ---@class ai.KeepFaceTarget :ai.Service 
         ---@field public target_actor_key string
            local class = {
                { name='target_actor_key', type='string'},
            }
            beans['ai.KeepFaceTarget'] = class
        end
        do
        ---@class ai.GetOwnerPlayer :ai.Service 
         ---@field public player_actor_key string
            local class = {
                { name='player_actor_key', type='string'},
            }
            beans['ai.GetOwnerPlayer'] = class
        end
        do
        ---@class ai.UpdateDailyBehaviorProps :ai.Service 
         ---@field public satiety_key string
         ---@field public energy_key string
         ---@field public mood_key string
         ---@field public satiety_lower_threshold_key string
         ---@field public satiety_upper_threshold_key string
         ---@field public energy_lower_threshold_key string
         ---@field public energy_upper_threshold_key string
         ---@field public mood_lower_threshold_key string
         ---@field public mood_upper_threshold_key string
            local class = {
                { name='satiety_key', type='string'},
                { name='energy_key', type='string'},
                { name='mood_key', type='string'},
                { name='satiety_lower_threshold_key', type='string'},
                { name='satiety_upper_threshold_key', type='string'},
                { name='energy_lower_threshold_key', type='string'},
                { name='energy_upper_threshold_key', type='string'},
                { name='mood_lower_threshold_key', type='string'},
                { name='mood_upper_threshold_key', type='string'},
            }
            beans['ai.UpdateDailyBehaviorProps'] = class
        end
        do
        ---@class ai.Decorator :ai.Node 
         ---@field public flow_abort_mode integer
            local class = {
                { name='flow_abort_mode', type='integer'},
            }
            beans['ai.Decorator'] = class
        end
        do
        ---@class ai.UeLoop :ai.Decorator 
         ---@field public num_loops integer
         ---@field public infinite_loop boolean
         ---@field public infinite_loop_timeout_time number
            local class = {
                { name='num_loops', type='integer'},
                { name='infinite_loop', type='boolean'},
                { name='infinite_loop_timeout_time', type='number'},
            }
            beans['ai.UeLoop'] = class
        end
        do
        ---@class ai.UeCooldown :ai.Decorator 
         ---@field public cooldown_time number
            local class = {
                { name='cooldown_time', type='number'},
            }
            beans['ai.UeCooldown'] = class
        end
        do
        ---@class ai.UeTimeLimit :ai.Decorator 
         ---@field public limit_time number
            local class = {
                { name='limit_time', type='number'},
            }
            beans['ai.UeTimeLimit'] = class
        end
        do
        ---@class ai.UeBlackboard :ai.Decorator 
         ---@field public notify_observer integer
         ---@field public blackboard_key string
         ---@field public key_query ai.KeyQueryOperator
            local class = {
                { name='notify_observer', type='integer'},
                { name='blackboard_key', type='string'},
                { name='key_query', type='ai.KeyQueryOperator'},
            }
            beans['ai.UeBlackboard'] = class
        end
        do
        ---@class ai.KeyQueryOperator 
            local class = {
            }
            beans['ai.KeyQueryOperator'] = class
        end
        do
        ---@class ai.IsSet :ai.KeyQueryOperator 
            local class = {
            }
            beans['ai.IsSet'] = class
        end
        do
        ---@class ai.IsNotSet :ai.KeyQueryOperator 
            local class = {
            }
            beans['ai.IsNotSet'] = class
        end
        do
        ---@class ai.BinaryOperator :ai.KeyQueryOperator 
         ---@field public oper integer
         ---@field public data ai.KeyData
            local class = {
                { name='oper', type='integer'},
                { name='data', type='ai.KeyData'},
            }
            beans['ai.BinaryOperator'] = class
        end
        do
        ---@class ai.KeyData 
            local class = {
            }
            beans['ai.KeyData'] = class
        end
        do
        ---@class ai.FloatKeyData :ai.KeyData 
         ---@field public value number
            local class = {
                { name='value', type='number'},
            }
            beans['ai.FloatKeyData'] = class
        end
        do
        ---@class ai.IntKeyData :ai.KeyData 
         ---@field public value integer
            local class = {
                { name='value', type='integer'},
            }
            beans['ai.IntKeyData'] = class
        end
        do
        ---@class ai.StringKeyData :ai.KeyData 
         ---@field public value string
            local class = {
                { name='value', type='string'},
            }
            beans['ai.StringKeyData'] = class
        end
        do
        ---@class ai.BlackboardKeyData :ai.KeyData 
         ---@field public value string
            local class = {
                { name='value', type='string'},
            }
            beans['ai.BlackboardKeyData'] = class
        end
        do
        ---@class ai.UeForceSuccess :ai.Decorator 
            local class = {
            }
            beans['ai.UeForceSuccess'] = class
        end
        do
        ---@class ai.IsAtLocation :ai.Decorator 
         ---@field public acceptable_radius number
         ---@field public keyboard_key string
         ---@field public inverse_condition boolean
            local class = {
                { name='acceptable_radius', type='number'},
                { name='keyboard_key', type='string'},
                { name='inverse_condition', type='boolean'},
            }
            beans['ai.IsAtLocation'] = class
        end
        do
        ---@class ai.DistanceLessThan :ai.Decorator 
         ---@field public actor1_key string
         ---@field public actor2_key string
         ---@field public distance number
         ---@field public reverse_result boolean
            local class = {
                { name='actor1_key', type='string'},
                { name='actor2_key', type='string'},
                { name='distance', type='number'},
                { name='reverse_result', type='boolean'},
            }
            beans['ai.DistanceLessThan'] = class
        end
        do
        ---@class ai.FlowNode :ai.Node 
         ---@field public decorators ai.Decorator[]
         ---@field public services ai.Service[]
            local class = {
                { name='decorators', type='ai.Decorator[]'},
                { name='services', type='ai.Service[]'},
            }
            beans['ai.FlowNode'] = class
        end
        do
        ---@class ai.ComposeNode :ai.FlowNode 
            local class = {
            }
            beans['ai.ComposeNode'] = class
        end
        do
        ---@class ai.Sequence :ai.ComposeNode 
         ---@field public children ai.FlowNode[]
            local class = {
                { name='children', type='ai.FlowNode[]'},
            }
            beans['ai.Sequence'] = class
        end
        do
        ---@class ai.Selector :ai.ComposeNode 
         ---@field public children ai.FlowNode[]
            local class = {
                { name='children', type='ai.FlowNode[]'},
            }
            beans['ai.Selector'] = class
        end
        do
        ---@class ai.SimpleParallel :ai.ComposeNode 
         ---@field public finish_mode integer
         ---@field public main_task ai.Task
         ---@field public background_node ai.FlowNode
            local class = {
                { name='finish_mode', type='integer'},
                { name='main_task', type='ai.Task'},
                { name='background_node', type='ai.FlowNode'},
            }
            beans['ai.SimpleParallel'] = class
        end
        do
        ---@class ai.Task :ai.FlowNode 
         ---@field public ignore_restart_self boolean
            local class = {
                { name='ignore_restart_self', type='boolean'},
            }
            beans['ai.Task'] = class
        end
        do
        ---@class ai.UeWait :ai.Task 
         ---@field public wait_time number
         ---@field public random_deviation number
            local class = {
                { name='wait_time', type='number'},
                { name='random_deviation', type='number'},
            }
            beans['ai.UeWait'] = class
        end
        do
        ---@class ai.UeWaitBlackboardTime :ai.Task 
         ---@field public blackboard_key string
            local class = {
                { name='blackboard_key', type='string'},
            }
            beans['ai.UeWaitBlackboardTime'] = class
        end
        do
        ---@class ai.MoveToTarget :ai.Task 
         ---@field public target_actor_key string
         ---@field public acceptable_radius number
            local class = {
                { name='target_actor_key', type='string'},
                { name='acceptable_radius', type='number'},
            }
            beans['ai.MoveToTarget'] = class
        end
        do
        ---@class ai.ChooseSkill :ai.Task 
         ---@field public target_actor_key string
         ---@field public result_skill_id_key string
            local class = {
                { name='target_actor_key', type='string'},
                { name='result_skill_id_key', type='string'},
            }
            beans['ai.ChooseSkill'] = class
        end
        do
        ---@class ai.MoveToRandomLocation :ai.Task 
         ---@field public origin_position_key string
         ---@field public radius number
            local class = {
                { name='origin_position_key', type='string'},
                { name='radius', type='number'},
            }
            beans['ai.MoveToRandomLocation'] = class
        end
        do
        ---@class ai.MoveToLocation :ai.Task 
         ---@field public acceptable_radius number
            local class = {
                { name='acceptable_radius', type='number'},
            }
            beans['ai.MoveToLocation'] = class
        end
        do
        ---@class ai.DebugPrint :ai.Task 
         ---@field public text string
            local class = {
                { name='text', type='string'},
            }
            beans['ai.DebugPrint'] = class
        end
        do
        ---@class common.GlobalConfig 
         ---@field public x1 integer @背包容量
         ---@field public x2 integer
         ---@field public x3 integer
         ---@field public x4 integer
         ---@field public x5 integer
         ---@field public x6 integer
         ---@field public x7 integer[]
            local class = {
                { name='x1', type='integer'},
                { name='x2', type='integer'},
                { name='x3', type='integer'},
                { name='x4', type='integer'},
                { name='x5', type='integer'},
                { name='x6', type='integer'},
                { name='x7', type='integer[]'},
            }
            beans['common.GlobalConfig'] = class
        end
        do
        ---@class item.Item  @道具
         ---@field public id integer @道具id
         ---@field public name string
         ---@field public minor_type integer
         ---@field public quality integer
         ---@field public icon_backgroud string
         ---@field public icon_mask string
         ---@field public desc string
         ---@field public show_order integer
            local class = {
                { name='id', type='integer'},
                { name='name', type='string'},
                { name='minor_type', type='integer'},
                { name='quality', type='integer'},
                { name='icon_backgroud', type='string'},
                { name='icon_mask', type='string'},
                { name='desc', type='string'},
                { name='show_order', type='integer'},
            }
            beans['item.Item'] = class
        end
        do
        ---@class l10n.L10NDemo 
         ---@field public id integer
         ---@field public text string
            local class = {
                { name='id', type='integer'},
                { name='text', type='string'},
            }
            beans['l10n.L10NDemo'] = class
        end
        do
        ---@class l10n.PatchDemo 
         ---@field public id integer
         ---@field public value integer
            local class = {
                { name='id', type='integer'},
                { name='value', type='integer'},
            }
            beans['l10n.PatchDemo'] = class
        end
        do
        ---@class tag.TestTag 
         ---@field public id integer
         ---@field public value string
            local class = {
                { name='id', type='integer'},
                { name='value', type='string'},
            }
            beans['tag.TestTag'] = class
        end
        do
        ---@class test.DemoType2 
         ---@field public x4 integer
         ---@field public x1 boolean
         ---@field public x2 integer
         ---@field public x3 integer
         ---@field public x5 integer
         ---@field public x6 number
         ---@field public x7 number
         ---@field public x8_0 integer
         ---@field public x8 integer
         ---@field public x9 integer
         ---@field public x10 string
         ---@field public x12 test.DemoType1
         ---@field public x13 integer
         ---@field public x14 test.DemoDynamic
         ---@field public s1 string
         ---@field public t1 integer
         ---@field public k1 integer[]
         ---@field public k2 integer[]
         ---@field public k5 integer[]
         ---@field public k8 table<integer,integer>
         ---@field public k9 test.DemoE2[]
         ---@field public k15 test.DemoDynamic[]
            local class = {
                { name='x4', type='integer'},
                { name='x1', type='boolean'},
                { name='x2', type='integer'},
                { name='x3', type='integer'},
                { name='x5', type='integer'},
                { name='x6', type='number'},
                { name='x7', type='number'},
                { name='x8_0', type='integer'},
                { name='x8', type='integer'},
                { name='x9', type='integer'},
                { name='x10', type='string'},
                { name='x12', type='test.DemoType1'},
                { name='x13', type='integer'},
                { name='x14', type='test.DemoDynamic'},
                { name='s1', type='string'},
                { name='t1', type='integer'},
                { name='k1', type='integer[]'},
                { name='k2', type='integer[]'},
                { name='k5', type='integer[]'},
                { name='k8', type='table<integer,integer>'},
                { name='k9', type='test.DemoE2[]'},
                { name='k15', type='test.DemoDynamic[]'},
            }
            beans['test.DemoType2'] = class
        end
        do
        ---@class test.DemoType1 
         ---@field public x1 integer
            local class = {
                { name='x1', type='integer'},
            }
            beans['test.DemoType1'] = class
        end
        do
        ---@class test.DemoDynamic 
         ---@field public x1 integer
            local class = {
                { name='x1', type='integer'},
            }
            beans['test.DemoDynamic'] = class
        end
        do
        ---@class test.DemoD2 :test.DemoDynamic 
         ---@field public x2 integer
            local class = {
                { name='x2', type='integer'},
            }
            beans['test.DemoD2'] = class
        end
        do
        ---@class test.DemoD3 :test.DemoDynamic 
         ---@field public x3 integer
            local class = {
                { name='x3', type='integer'},
            }
            beans['test.DemoD3'] = class
        end
        do
        ---@class test.DemoE1 :test.DemoD3 
         ---@field public x4 integer
            local class = {
                { name='x4', type='integer'},
            }
            beans['test.DemoE1'] = class
        end
        do
        ---@class test.login.RoleInfo :test.DemoD3 
         ---@field public role_id integer
            local class = {
                { name='role_id', type='integer'},
            }
            beans['test.login.RoleInfo'] = class
        end
        do
        ---@class test.DemoD5 :test.DemoDynamic 
         ---@field public time test.DateTimeRange
            local class = {
                { name='time', type='test.DateTimeRange'},
            }
            beans['test.DemoD5'] = class
        end
        do
        ---@class test.DateTimeRange 
         ---@field public start_time integer
         ---@field public end_time integer
            local class = {
                { name='start_time', type='integer'},
                { name='end_time', type='integer'},
            }
            beans['test.DateTimeRange'] = class
        end
        do
        ---@class test.DemoE2 
         ---@field public y1 integer
         ---@field public y2 boolean
            local class = {
                { name='y1', type='integer'},
                { name='y2', type='boolean'},
            }
            beans['test.DemoE2'] = class
        end
        do
        ---@class test.DemoSingletonType 
         ---@field public id integer
         ---@field public name string
         ---@field public date test.DemoDynamic
            local class = {
                { name='id', type='integer'},
                { name='name', type='string'},
                { name='date', type='test.DemoDynamic'},
            }
            beans['test.DemoSingletonType'] = class
        end
        do
        ---@class test.NotIndexList 
         ---@field public x integer
         ---@field public y integer
            local class = {
                { name='x', type='integer'},
                { name='y', type='integer'},
            }
            beans['test.NotIndexList'] = class
        end
        do
        ---@class test.MultiUnionIndexList 
         ---@field public id1 integer
         ---@field public id2 integer
         ---@field public id3 string
         ---@field public num integer
         ---@field public desc string
            local class = {
                { name='id1', type='integer'},
                { name='id2', type='integer'},
                { name='id3', type='string'},
                { name='num', type='integer'},
                { name='desc', type='string'},
            }
            beans['test.MultiUnionIndexList'] = class
        end
        do
        ---@class test.MultiIndexList 
         ---@field public id1 integer
         ---@field public id2 integer
         ---@field public id3 string
         ---@field public num integer
         ---@field public desc string
            local class = {
                { name='id1', type='integer'},
                { name='id2', type='integer'},
                { name='id3', type='string'},
                { name='num', type='integer'},
                { name='desc', type='string'},
            }
            beans['test.MultiIndexList'] = class
        end
        do
        ---@class test.MultiRowRecord 
         ---@field public id integer
         ---@field public name string
         ---@field public one_rows test.MultiRowType1[]
         ---@field public multi_rows1 test.MultiRowType1[]
         ---@field public multi_rows2 test.MultiRowType1[]
         ---@field public multi_rows4 table<integer,test.MultiRowType2>
         ---@field public multi_rows5 test.MultiRowType3[]
         ---@field public multi_rows6 table<integer,test.MultiRowType2>
         ---@field public multi_rows7 table<integer,integer>
            local class = {
                { name='id', type='integer'},
                { name='name', type='string'},
                { name='one_rows', type='test.MultiRowType1[]'},
                { name='multi_rows1', type='test.MultiRowType1[]'},
                { name='multi_rows2', type='test.MultiRowType1[]'},
                { name='multi_rows4', type='table<integer,test.MultiRowType2>'},
                { name='multi_rows5', type='test.MultiRowType3[]'},
                { name='multi_rows6', type='table<integer,test.MultiRowType2>'},
                { name='multi_rows7', type='table<integer,integer>'},
            }
            beans['test.MultiRowRecord'] = class
        end
        do
        ---@class test.MultiRowType1 
         ---@field public id integer
         ---@field public x integer
            local class = {
                { name='id', type='integer'},
                { name='x', type='integer'},
            }
            beans['test.MultiRowType1'] = class
        end
        do
        ---@class test.MultiRowType2 
         ---@field public id integer
         ---@field public x integer
         ---@field public y number
            local class = {
                { name='id', type='integer'},
                { name='x', type='integer'},
                { name='y', type='number'},
            }
            beans['test.MultiRowType2'] = class
        end
        do
        ---@class test.MultiRowType3 
         ---@field public id integer
         ---@field public items test.MultiRowType1[]
            local class = {
                { name='id', type='integer'},
                { name='items', type='test.MultiRowType1[]'},
            }
            beans['test.MultiRowType3'] = class
        end
        do
        ---@class test.TestMultiColumn 
         ---@field public id integer
         ---@field public a test.Foo
         ---@field public b test.Foo
         ---@field public c test.Foo
            local class = {
                { name='id', type='integer'},
                { name='a', type='test.Foo'},
                { name='b', type='test.Foo'},
                { name='c', type='test.Foo'},
            }
            beans['test.TestMultiColumn'] = class
        end
        do
        ---@class test.Foo 
         ---@field public y1 integer
         ---@field public y2 integer
         ---@field public y3 integer
            local class = {
                { name='y1', type='integer'},
                { name='y2', type='integer'},
                { name='y3', type='integer'},
            }
            beans['test.Foo'] = class
        end
        do
        ---@class test.MultiRowTitle 
         ---@field public id integer
         ---@field public name string
         ---@field public x1 test.H1
         ---@field public x2_0 test.H2
         ---@field public x2 test.H2[]
         ---@field public x3 test.H2[]
         ---@field public x4 test.H2[]
            local class = {
                { name='id', type='integer'},
                { name='name', type='string'},
                { name='x1', type='test.H1'},
                { name='x2_0', type='test.H2'},
                { name='x2', type='test.H2[]'},
                { name='x3', type='test.H2[]'},
                { name='x4', type='test.H2[]'},
            }
            beans['test.MultiRowTitle'] = class
        end
        do
        ---@class test.H1 
         ---@field public y2 test.H2
         ---@field public y3 integer
            local class = {
                { name='y2', type='test.H2'},
                { name='y3', type='integer'},
            }
            beans['test.H1'] = class
        end
        do
        ---@class test.H2 
         ---@field public z2 integer
         ---@field public z3 integer
            local class = {
                { name='z2', type='integer'},
                { name='z3', type='integer'},
            }
            beans['test.H2'] = class
        end
        do
        ---@class test.TestNull 
         ---@field public id integer
         ---@field public x1 integer
         ---@field public x2 integer
         ---@field public x3 test.DemoType1
         ---@field public x4 test.DemoDynamic
         ---@field public s1 string
         ---@field public s2 string
            local class = {
                { name='id', type='integer'},
                { name='x1', type='integer'},
                { name='x2', type='integer'},
                { name='x3', type='test.DemoType1'},
                { name='x4', type='test.DemoDynamic'},
                { name='s1', type='string'},
                { name='s2', type='string'},
            }
            beans['test.TestNull'] = class
        end
        do
        ---@class test.DemoPrimitiveTypesTable 
         ---@field public x1 boolean
         ---@field public x2 integer
         ---@field public x3 integer
         ---@field public x4 integer
         ---@field public x5 integer
         ---@field public x6 number
         ---@field public x7 number
         ---@field public s1 string
         ---@field public s2 string
         ---@field public v2 vec2
         ---@field public v3 vec3
         ---@field public v4 vec4
         ---@field public t1 integer
            local class = {
                { name='x1', type='boolean'},
                { name='x2', type='integer'},
                { name='x3', type='integer'},
                { name='x4', type='integer'},
                { name='x5', type='integer'},
                { name='x6', type='number'},
                { name='x7', type='number'},
                { name='s1', type='string'},
                { name='s2', type='string'},
                { name='v2', type='vec2'},
                { name='v3', type='vec3'},
                { name='v4', type='vec4'},
                { name='t1', type='integer'},
            }
            beans['test.DemoPrimitiveTypesTable'] = class
        end
        do
        ---@class vec2 
         ---@field public x number
         ---@field public y number
            local class = {
                { name='x', type='number'},
                { name='y', type='number'},
            }
            beans['vec2'] = class
        end
        do
        ---@class vec3 
         ---@field public x number
         ---@field public y number
         ---@field public z number
            local class = {
                { name='x', type='number'},
                { name='y', type='number'},
                { name='z', type='number'},
            }
            beans['vec3'] = class
        end
        do
        ---@class vec4 
         ---@field public x number
         ---@field public y number
         ---@field public z number
         ---@field public w number
            local class = {
                { name='x', type='number'},
                { name='y', type='number'},
                { name='z', type='number'},
                { name='w', type='number'},
            }
            beans['vec4'] = class
        end
        do
        ---@class test.TestString 
         ---@field public id string
         ---@field public s1 string
         ---@field public s2 string
         ---@field public cs1 test.CompactString
         ---@field public cs2 test.CompactString
            local class = {
                { name='id', type='string'},
                { name='s1', type='string'},
                { name='s2', type='string'},
                { name='cs1', type='test.CompactString'},
                { name='cs2', type='test.CompactString'},
            }
            beans['test.TestString'] = class
        end
        do
        ---@class test.CompactString 
         ---@field public id integer
         ---@field public s2 string
         ---@field public s3 string
            local class = {
                { name='id', type='integer'},
                { name='s2', type='string'},
                { name='s3', type='string'},
            }
            beans['test.CompactString'] = class
        end
        do
        ---@class test.DemoGroup 
         ---@field public id integer
         ---@field public x5 test.InnerGroup
            local class = {
                { name='id', type='integer'},
                { name='x5', type='test.InnerGroup'},
            }
            beans['test.DemoGroup'] = class
        end
        do
        ---@class test.InnerGroup 
         ---@field public y1 integer
            local class = {
                { name='y1', type='integer'},
            }
            beans['test.InnerGroup'] = class
        end
        do
        ---@class test.TestGlobal 
         ---@field public unlock_equip integer
         ---@field public unlock_hero integer
            local class = {
                { name='unlock_equip', type='integer'},
                { name='unlock_hero', type='integer'},
            }
            beans['test.TestGlobal'] = class
        end
        do
        ---@class test.TestBeRef 
         ---@field public id integer
         ---@field public count integer
            local class = {
                { name='id', type='integer'},
                { name='count', type='integer'},
            }
            beans['test.TestBeRef'] = class
        end
        do
        ---@class test.TestRef 
         ---@field public id integer
         ---@field public x1 integer
         ---@field public x1_2 integer
         ---@field public x2 integer
         ---@field public x3 integer
         ---@field public x4 integer
         ---@field public a1 integer[]
         ---@field public a2 integer[]
         ---@field public b1 integer[]
         ---@field public b2 integer[]
         ---@field public c1 integer[]
         ---@field public c2 integer[]
         ---@field public d1 table<integer,integer>
         ---@field public d2 table<integer,integer>
         ---@field public e1 integer
         ---@field public e2 integer
         ---@field public e3 string
         ---@field public f1 integer
         ---@field public f2 integer
         ---@field public f3 string
         ---@field public s1 test.RefDynamicBase
            local class = {
                { name='id', type='integer'},
                { name='x1', type='integer'},
                { name='x1_2', type='integer'},
                { name='x2', type='integer'},
                { name='x3', type='integer'},
                { name='x4', type='integer'},
                { name='a1', type='integer[]'},
                { name='a2', type='integer[]'},
                { name='b1', type='integer[]'},
                { name='b2', type='integer[]'},
                { name='c1', type='integer[]'},
                { name='c2', type='integer[]'},
                { name='d1', type='table<integer,integer>'},
                { name='d2', type='table<integer,integer>'},
                { name='e1', type='integer'},
                { name='e2', type='integer'},
                { name='e3', type='string'},
                { name='f1', type='integer'},
                { name='f2', type='integer'},
                { name='f3', type='string'},
                { name='s1', type='test.RefDynamicBase'},
            }
            beans['test.TestRef'] = class
        end
        do
        ---@class test.RefDynamicBase 
         ---@field public x integer
            local class = {
                { name='x', type='integer'},
            }
            beans['test.RefDynamicBase'] = class
        end
        do
        ---@class test.RefBean :test.RefDynamicBase 
         ---@field public arr integer[]
            local class = {
                { name='arr', type='integer[]'},
            }
            beans['test.RefBean'] = class
        end
        do
        ---@class test.TestSize 
         ---@field public id integer
         ---@field public x1 integer[]
         ---@field public x2 integer[]
         ---@field public x3 integer[]
         ---@field public x4 table<integer,integer>
            local class = {
                { name='id', type='integer'},
                { name='x1', type='integer[]'},
                { name='x2', type='integer[]'},
                { name='x3', type='integer[]'},
                { name='x4', type='table<integer,integer>'},
            }
            beans['test.TestSize'] = class
        end
        do
        ---@class test.TestSet 
         ---@field public id integer
         ---@field public x0 string
         ---@field public x1 integer[]
         ---@field public x2 integer[]
         ---@field public x3 string[]
         ---@field public x4 integer[]
            local class = {
                { name='id', type='integer'},
                { name='x0', type='string'},
                { name='x1', type='integer[]'},
                { name='x2', type='integer[]'},
                { name='x3', type='string[]'},
                { name='x4', type='integer[]'},
            }
            beans['test.TestSet'] = class
        end
        do
        ---@class test.DetectEncoding 
         ---@field public id integer
         ---@field public name string
            local class = {
                { name='id', type='integer'},
                { name='name', type='string'},
            }
            beans['test.DetectEncoding'] = class
        end
        do
        ---@class test.ItemBase 
         ---@field public id integer
         ---@field public name string
         ---@field public desc string
            local class = {
                { name='id', type='integer'},
                { name='name', type='string'},
                { name='desc', type='string'},
            }
            beans['test.ItemBase'] = class
        end
        do
        ---@class test.Item :test.ItemBase 
         ---@field public num integer
         ---@field public price integer
            local class = {
                { name='num', type='integer'},
                { name='price', type='integer'},
            }
            beans['test.Item'] = class
        end
        do
        ---@class test.Equipment :test.ItemBase 
         ---@field public attr integer
         ---@field public value integer
            local class = {
                { name='attr', type='integer'},
                { name='value', type='integer'},
            }
            beans['test.Equipment'] = class
        end
        do
        ---@class test.Decorator :test.ItemBase 
         ---@field public duration integer
            local class = {
                { name='duration', type='integer'},
            }
            beans['test.Decorator'] = class
        end
        do
        ---@class test.TestIndex 
         ---@field public id integer
         ---@field public eles test.DemoType1[]
            local class = {
                { name='id', type='integer'},
                { name='eles', type='test.DemoType1[]'},
            }
            beans['test.TestIndex'] = class
        end
        do
        ---@class test.TestMap 
         ---@field public id integer
         ---@field public x1 table<integer,integer>
         ---@field public x2 table<integer,integer>
         ---@field public x3 table<string,integer>
         ---@field public x4 table<integer,integer>
            local class = {
                { name='id', type='integer'},
                { name='x1', type='table<integer,integer>'},
                { name='x2', type='table<integer,integer>'},
                { name='x3', type='table<string,integer>'},
                { name='x4', type='table<integer,integer>'},
            }
            beans['test.TestMap'] = class
        end
        do
        ---@class test.ExcelFromJson 
         ---@field public x4 integer
         ---@field public x1 boolean
         ---@field public x5 integer
         ---@field public x6 number
         ---@field public s1 string
         ---@field public s2 string
         ---@field public t1 integer
         ---@field public x12 test.DemoType1
         ---@field public x13 integer
         ---@field public x14 test.DemoDynamic
         ---@field public k1 integer[]
         ---@field public k8 table<integer,integer>
         ---@field public k9 test.DemoE2[]
         ---@field public k15 test.DemoDynamic[]
            local class = {
                { name='x4', type='integer'},
                { name='x1', type='boolean'},
                { name='x5', type='integer'},
                { name='x6', type='number'},
                { name='s1', type='string'},
                { name='s2', type='string'},
                { name='t1', type='integer'},
                { name='x12', type='test.DemoType1'},
                { name='x13', type='integer'},
                { name='x14', type='test.DemoDynamic'},
                { name='k1', type='integer[]'},
                { name='k8', type='table<integer,integer>'},
                { name='k9', type='test.DemoE2[]'},
                { name='k15', type='test.DemoDynamic[]'},
            }
            beans['test.ExcelFromJson'] = class
        end
        do
        ---@class test.CompositeJsonTable1 
         ---@field public id integer
         ---@field public x string
            local class = {
                { name='id', type='integer'},
                { name='x', type='string'},
            }
            beans['test.CompositeJsonTable1'] = class
        end
        do
        ---@class test.CompositeJsonTable2 
         ---@field public id integer
         ---@field public y integer
            local class = {
                { name='id', type='integer'},
                { name='y', type='integer'},
            }
            beans['test.CompositeJsonTable2'] = class
        end
        do
        ---@class test.CompositeJsonTable3 
         ---@field public a integer
         ---@field public b integer
            local class = {
                { name='a', type='integer'},
                { name='b', type='integer'},
            }
            beans['test.CompositeJsonTable3'] = class
        end
        do
        ---@class test.ExcelFromJsonMultiRow 
         ---@field public id integer
         ---@field public x integer
         ---@field public items test.TestRow[]
            local class = {
                { name='id', type='integer'},
                { name='x', type='integer'},
                { name='items', type='test.TestRow[]'},
            }
            beans['test.ExcelFromJsonMultiRow'] = class
        end
        do
        ---@class test.TestRow 
         ---@field public x integer
         ---@field public y boolean
         ---@field public z string
         ---@field public a test.Test3
         ---@field public b integer[]
            local class = {
                { name='x', type='integer'},
                { name='y', type='boolean'},
                { name='z', type='string'},
                { name='a', type='test.Test3'},
                { name='b', type='integer[]'},
            }
            beans['test.TestRow'] = class
        end
        do
        ---@class test.Test3 
         ---@field public x integer
         ---@field public y integer
            local class = {
                { name='x', type='integer'},
                { name='y', type='integer'},
            }
            beans['test.Test3'] = class
        end
        do
        ---@class test.TestScriptableObject 
         ---@field public id integer
         ---@field public desc string
         ---@field public rate number
         ---@field public num integer
         ---@field public v2 vec2
         ---@field public v3 vec3
         ---@field public v4 vec4
            local class = {
                { name='id', type='integer'},
                { name='desc', type='string'},
                { name='rate', type='number'},
                { name='num', type='integer'},
                { name='v2', type='vec2'},
                { name='v3', type='vec3'},
                { name='v4', type='vec4'},
            }
            beans['test.TestScriptableObject'] = class
        end
        do
        ---@class test.TestMapper 
         ---@field public id integer
         ---@field public audio_type integer
         ---@field public v2 vec2
            local class = {
                { name='id', type='integer'},
                { name='audio_type', type='integer'},
                { name='v2', type='vec2'},
            }
            beans['test.TestMapper'] = class
        end
        do
        ---@class DefineFromExcel2 
         ---@field public id integer @这是id
         ---@field public x1 boolean @字段x1
         ---@field public x5 integer
         ---@field public x6 number
         ---@field public x8 integer
         ---@field public x10 string
         ---@field public x13 integer
         ---@field public x13_2 integer
         ---@field public x14 test.DemoDynamic
         ---@field public x15 test.Shape
         ---@field public v2 vec2
         ---@field public t1 integer
         ---@field public k1 integer[]
         ---@field public k2 integer[]
         ---@field public k8 table<integer,integer>
         ---@field public k9 test.DemoE2[]
         ---@field public k10 vec3[]
         ---@field public k11 vec4[]
            local class = {
                { name='id', type='integer'},
                { name='x1', type='boolean'},
                { name='x5', type='integer'},
                { name='x6', type='number'},
                { name='x8', type='integer'},
                { name='x10', type='string'},
                { name='x13', type='integer'},
                { name='x13_2', type='integer'},
                { name='x14', type='test.DemoDynamic'},
                { name='x15', type='test.Shape'},
                { name='v2', type='vec2'},
                { name='t1', type='integer'},
                { name='k1', type='integer[]'},
                { name='k2', type='integer[]'},
                { name='k8', type='table<integer,integer>'},
                { name='k9', type='test.DemoE2[]'},
                { name='k10', type='vec3[]'},
                { name='k11', type='vec4[]'},
            }
            beans['DefineFromExcel2'] = class
        end
        do
        ---@class test.Shape 
            local class = {
            }
            beans['test.Shape'] = class
        end
        do
        ---@class test.Circle :Shape  @圆
         ---@field public radius number @半径
            local class = {
                { name='radius', type='number'},
            }
            beans['test.Circle'] = class
        end
        do
        ---@class test2.Rectangle :test.Shape  @矩形
         ---@field public width number @宽度
         ---@field public height number @高度
            local class = {
                { name='width', type='number'},
                { name='height', type='number'},
            }
            beans['test2.Rectangle'] = class
        end
    
    local beans = {}
    do
    ---@class ai.Blackboard 
         ---@field public name string
         ---@field public desc string
         ---@field public parent_name string
         ---@field public keys ai.BlackboardKey[]
        local class = SimpleClass()
        class._id = 1576193005
        class._type_ = 'ai.Blackboard'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            name = readString(bs),
            desc = readString(bs),
            parent_name = readString(bs),
            keys = readList(bs, beans['ai.BlackboardKey']._deserialize),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.BlackboardKey 
         ---@field public name string
         ---@field public desc string
         ---@field public is_static boolean
         ---@field public type integer
         ---@field public type_class_name string
        local class = SimpleClass()
        class._id = -511559886
        class._type_ = 'ai.BlackboardKey'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            name = readString(bs),
            desc = readString(bs),
            is_static = readBool(bs),
            type = readInt(bs),
            type_class_name = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.BehaviorTree 
         ---@field public id integer
         ---@field public name string
         ---@field public desc string
         ---@field public blackboard_id string
         ---@field public root ai.ComposeNode
        local class = SimpleClass()
        class._id = 159552822
        class._type_ = 'ai.BehaviorTree'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            name = readString(bs),
            desc = readString(bs),
            blackboard_id = readString(bs),
            root = beans['ai.ComposeNode']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.Node 
         ---@field public id integer
         ---@field public node_name string
        local class = SimpleClass()
        class._id = -1055479768
        class._type_ = 'ai.Node'
        local id2name = {  [1812449155] = 'ai.UeSetDefaultFocus',  [990693812] = 'ai.ExecuteTimeStatistic',  [1601247918] = 'ai.ChooseTarget',  [1195270745] = 'ai.KeepFaceTarget',  [-999247644] = 'ai.GetOwnerPlayer',  [-61887372] = 'ai.UpdateDailyBehaviorProps',  [-513308166] = 'ai.UeLoop',  [-951439423] = 'ai.UeCooldown',  [338469720] = 'ai.UeTimeLimit',  [-315297507] = 'ai.UeBlackboard',  [195054574] = 'ai.UeForceSuccess',  [1255972344] = 'ai.IsAtLocation',  [-1207170283] = 'ai.DistanceLessThan',  [-1789006105] = 'ai.Sequence',  [-1946981627] = 'ai.Selector',  [-1952582529] = 'ai.SimpleParallel',  [-512994101] = 'ai.UeWait',  [1215378271] = 'ai.UeWaitBlackboardTime',  [514987779] = 'ai.MoveToTarget',  [-918812268] = 'ai.ChooseSkill',  [-2140042998] = 'ai.MoveToRandomLocation',  [-969953113] = 'ai.MoveToLocation',  [1357409728] = 'ai.DebugPrint',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.Service :ai.Node 
        local class = SimpleClass()
        class._id = -472395057
        class._type_ = 'ai.Service'
        local id2name = {  [1812449155] = 'ai.UeSetDefaultFocus',  [990693812] = 'ai.ExecuteTimeStatistic',  [1601247918] = 'ai.ChooseTarget',  [1195270745] = 'ai.KeepFaceTarget',  [-999247644] = 'ai.GetOwnerPlayer',  [-61887372] = 'ai.UpdateDailyBehaviorProps',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.UeSetDefaultFocus :ai.Service 
         ---@field public keyboard_key string
        local class = SimpleClass()
        class._id = 1812449155
        class._type_ = 'ai.UeSetDefaultFocus'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            keyboard_key = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.ExecuteTimeStatistic :ai.Service 
        local class = SimpleClass()
        class._id = 990693812
        class._type_ = 'ai.ExecuteTimeStatistic'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.ChooseTarget :ai.Service 
         ---@field public result_target_key string
        local class = SimpleClass()
        class._id = 1601247918
        class._type_ = 'ai.ChooseTarget'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            result_target_key = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.KeepFaceTarget :ai.Service 
         ---@field public target_actor_key string
        local class = SimpleClass()
        class._id = 1195270745
        class._type_ = 'ai.KeepFaceTarget'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            target_actor_key = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.GetOwnerPlayer :ai.Service 
         ---@field public player_actor_key string
        local class = SimpleClass()
        class._id = -999247644
        class._type_ = 'ai.GetOwnerPlayer'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            player_actor_key = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.UpdateDailyBehaviorProps :ai.Service 
         ---@field public satiety_key string
         ---@field public energy_key string
         ---@field public mood_key string
         ---@field public satiety_lower_threshold_key string
         ---@field public satiety_upper_threshold_key string
         ---@field public energy_lower_threshold_key string
         ---@field public energy_upper_threshold_key string
         ---@field public mood_lower_threshold_key string
         ---@field public mood_upper_threshold_key string
        local class = SimpleClass()
        class._id = -61887372
        class._type_ = 'ai.UpdateDailyBehaviorProps'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            satiety_key = readString(bs),
            energy_key = readString(bs),
            mood_key = readString(bs),
            satiety_lower_threshold_key = readString(bs),
            satiety_upper_threshold_key = readString(bs),
            energy_lower_threshold_key = readString(bs),
            energy_upper_threshold_key = readString(bs),
            mood_lower_threshold_key = readString(bs),
            mood_upper_threshold_key = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.Decorator :ai.Node 
         ---@field public flow_abort_mode integer
        local class = SimpleClass()
        class._id = 2017109461
        class._type_ = 'ai.Decorator'
        local id2name = {  [-513308166] = 'ai.UeLoop',  [-951439423] = 'ai.UeCooldown',  [338469720] = 'ai.UeTimeLimit',  [-315297507] = 'ai.UeBlackboard',  [195054574] = 'ai.UeForceSuccess',  [1255972344] = 'ai.IsAtLocation',  [-1207170283] = 'ai.DistanceLessThan',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.UeLoop :ai.Decorator 
         ---@field public num_loops integer
         ---@field public infinite_loop boolean
         ---@field public infinite_loop_timeout_time number
        local class = SimpleClass()
        class._id = -513308166
        class._type_ = 'ai.UeLoop'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            flow_abort_mode = readInt(bs),
            num_loops = readInt(bs),
            infinite_loop = readBool(bs),
            infinite_loop_timeout_time = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.UeCooldown :ai.Decorator 
         ---@field public cooldown_time number
        local class = SimpleClass()
        class._id = -951439423
        class._type_ = 'ai.UeCooldown'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            flow_abort_mode = readInt(bs),
            cooldown_time = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.UeTimeLimit :ai.Decorator 
         ---@field public limit_time number
        local class = SimpleClass()
        class._id = 338469720
        class._type_ = 'ai.UeTimeLimit'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            flow_abort_mode = readInt(bs),
            limit_time = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.UeBlackboard :ai.Decorator 
         ---@field public notify_observer integer
         ---@field public blackboard_key string
         ---@field public key_query ai.KeyQueryOperator
        local class = SimpleClass()
        class._id = -315297507
        class._type_ = 'ai.UeBlackboard'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            flow_abort_mode = readInt(bs),
            notify_observer = readInt(bs),
            blackboard_key = readString(bs),
            key_query = beans['ai.KeyQueryOperator']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.KeyQueryOperator 
        local class = SimpleClass()
        class._id = -738364781
        class._type_ = 'ai.KeyQueryOperator'
        local id2name = {  [1635350898] = 'ai.IsSet',  [790736255] = 'ai.IsNotSet',  [-979891605] = 'ai.BinaryOperator',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.IsSet :ai.KeyQueryOperator 
        local class = SimpleClass()
        class._id = 1635350898
        class._type_ = 'ai.IsSet'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.IsNotSet :ai.KeyQueryOperator 
        local class = SimpleClass()
        class._id = 790736255
        class._type_ = 'ai.IsNotSet'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.BinaryOperator :ai.KeyQueryOperator 
         ---@field public oper integer
         ---@field public data ai.KeyData
        local class = SimpleClass()
        class._id = -979891605
        class._type_ = 'ai.BinaryOperator'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            oper = readInt(bs),
            data = beans['ai.KeyData']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.KeyData 
        local class = SimpleClass()
        class._id = 1022478019
        class._type_ = 'ai.KeyData'
        local id2name = {  [-719747885] = 'ai.FloatKeyData',  [-342751904] = 'ai.IntKeyData',  [-307888654] = 'ai.StringKeyData',  [1517269500] = 'ai.BlackboardKeyData',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.FloatKeyData :ai.KeyData 
         ---@field public value number
        local class = SimpleClass()
        class._id = -719747885
        class._type_ = 'ai.FloatKeyData'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            value = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.IntKeyData :ai.KeyData 
         ---@field public value integer
        local class = SimpleClass()
        class._id = -342751904
        class._type_ = 'ai.IntKeyData'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            value = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.StringKeyData :ai.KeyData 
         ---@field public value string
        local class = SimpleClass()
        class._id = -307888654
        class._type_ = 'ai.StringKeyData'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            value = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.BlackboardKeyData :ai.KeyData 
         ---@field public value string
        local class = SimpleClass()
        class._id = 1517269500
        class._type_ = 'ai.BlackboardKeyData'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            value = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.UeForceSuccess :ai.Decorator 
        local class = SimpleClass()
        class._id = 195054574
        class._type_ = 'ai.UeForceSuccess'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            flow_abort_mode = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.IsAtLocation :ai.Decorator 
         ---@field public acceptable_radius number
         ---@field public keyboard_key string
         ---@field public inverse_condition boolean
        local class = SimpleClass()
        class._id = 1255972344
        class._type_ = 'ai.IsAtLocation'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            flow_abort_mode = readInt(bs),
            acceptable_radius = readFloat(bs),
            keyboard_key = readString(bs),
            inverse_condition = readBool(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.DistanceLessThan :ai.Decorator 
         ---@field public actor1_key string
         ---@field public actor2_key string
         ---@field public distance number
         ---@field public reverse_result boolean
        local class = SimpleClass()
        class._id = -1207170283
        class._type_ = 'ai.DistanceLessThan'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            flow_abort_mode = readInt(bs),
            actor1_key = readString(bs),
            actor2_key = readString(bs),
            distance = readFloat(bs),
            reverse_result = readBool(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.FlowNode :ai.Node 
         ---@field public decorators ai.Decorator[]
         ---@field public services ai.Service[]
        local class = SimpleClass()
        class._id = -1109240970
        class._type_ = 'ai.FlowNode'
        local id2name = {  [-1789006105] = 'ai.Sequence',  [-1946981627] = 'ai.Selector',  [-1952582529] = 'ai.SimpleParallel',  [-512994101] = 'ai.UeWait',  [1215378271] = 'ai.UeWaitBlackboardTime',  [514987779] = 'ai.MoveToTarget',  [-918812268] = 'ai.ChooseSkill',  [-2140042998] = 'ai.MoveToRandomLocation',  [-969953113] = 'ai.MoveToLocation',  [1357409728] = 'ai.DebugPrint',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.ComposeNode :ai.FlowNode 
        local class = SimpleClass()
        class._id = -70129202
        class._type_ = 'ai.ComposeNode'
        local id2name = {  [-1789006105] = 'ai.Sequence',  [-1946981627] = 'ai.Selector',  [-1952582529] = 'ai.SimpleParallel',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.Sequence :ai.ComposeNode 
         ---@field public children ai.FlowNode[]
        local class = SimpleClass()
        class._id = -1789006105
        class._type_ = 'ai.Sequence'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            decorators = readList(bs, beans['ai.Decorator']._deserialize),
            services = readList(bs, beans['ai.Service']._deserialize),
            children = readList(bs, beans['ai.FlowNode']._deserialize),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.Selector :ai.ComposeNode 
         ---@field public children ai.FlowNode[]
        local class = SimpleClass()
        class._id = -1946981627
        class._type_ = 'ai.Selector'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            decorators = readList(bs, beans['ai.Decorator']._deserialize),
            services = readList(bs, beans['ai.Service']._deserialize),
            children = readList(bs, beans['ai.FlowNode']._deserialize),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.SimpleParallel :ai.ComposeNode 
         ---@field public finish_mode integer
         ---@field public main_task ai.Task
         ---@field public background_node ai.FlowNode
        local class = SimpleClass()
        class._id = -1952582529
        class._type_ = 'ai.SimpleParallel'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            decorators = readList(bs, beans['ai.Decorator']._deserialize),
            services = readList(bs, beans['ai.Service']._deserialize),
            finish_mode = readInt(bs),
            main_task = beans['ai.Task']._deserialize(bs),
            background_node = beans['ai.FlowNode']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.Task :ai.FlowNode 
         ---@field public ignore_restart_self boolean
        local class = SimpleClass()
        class._id = -1055314005
        class._type_ = 'ai.Task'
        local id2name = {  [-512994101] = 'ai.UeWait',  [1215378271] = 'ai.UeWaitBlackboardTime',  [514987779] = 'ai.MoveToTarget',  [-918812268] = 'ai.ChooseSkill',  [-2140042998] = 'ai.MoveToRandomLocation',  [-969953113] = 'ai.MoveToLocation',  [1357409728] = 'ai.DebugPrint',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.UeWait :ai.Task 
         ---@field public wait_time number
         ---@field public random_deviation number
        local class = SimpleClass()
        class._id = -512994101
        class._type_ = 'ai.UeWait'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            decorators = readList(bs, beans['ai.Decorator']._deserialize),
            services = readList(bs, beans['ai.Service']._deserialize),
            ignore_restart_self = readBool(bs),
            wait_time = readFloat(bs),
            random_deviation = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.UeWaitBlackboardTime :ai.Task 
         ---@field public blackboard_key string
        local class = SimpleClass()
        class._id = 1215378271
        class._type_ = 'ai.UeWaitBlackboardTime'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            decorators = readList(bs, beans['ai.Decorator']._deserialize),
            services = readList(bs, beans['ai.Service']._deserialize),
            ignore_restart_self = readBool(bs),
            blackboard_key = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.MoveToTarget :ai.Task 
         ---@field public target_actor_key string
         ---@field public acceptable_radius number
        local class = SimpleClass()
        class._id = 514987779
        class._type_ = 'ai.MoveToTarget'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            decorators = readList(bs, beans['ai.Decorator']._deserialize),
            services = readList(bs, beans['ai.Service']._deserialize),
            ignore_restart_self = readBool(bs),
            target_actor_key = readString(bs),
            acceptable_radius = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.ChooseSkill :ai.Task 
         ---@field public target_actor_key string
         ---@field public result_skill_id_key string
        local class = SimpleClass()
        class._id = -918812268
        class._type_ = 'ai.ChooseSkill'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            decorators = readList(bs, beans['ai.Decorator']._deserialize),
            services = readList(bs, beans['ai.Service']._deserialize),
            ignore_restart_self = readBool(bs),
            target_actor_key = readString(bs),
            result_skill_id_key = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.MoveToRandomLocation :ai.Task 
         ---@field public origin_position_key string
         ---@field public radius number
        local class = SimpleClass()
        class._id = -2140042998
        class._type_ = 'ai.MoveToRandomLocation'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            decorators = readList(bs, beans['ai.Decorator']._deserialize),
            services = readList(bs, beans['ai.Service']._deserialize),
            ignore_restart_self = readBool(bs),
            origin_position_key = readString(bs),
            radius = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.MoveToLocation :ai.Task 
         ---@field public acceptable_radius number
        local class = SimpleClass()
        class._id = -969953113
        class._type_ = 'ai.MoveToLocation'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            decorators = readList(bs, beans['ai.Decorator']._deserialize),
            services = readList(bs, beans['ai.Service']._deserialize),
            ignore_restart_self = readBool(bs),
            acceptable_radius = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class ai.DebugPrint :ai.Task 
         ---@field public text string
        local class = SimpleClass()
        class._id = 1357409728
        class._type_ = 'ai.DebugPrint'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            node_name = readString(bs),
            decorators = readList(bs, beans['ai.Decorator']._deserialize),
            services = readList(bs, beans['ai.Service']._deserialize),
            ignore_restart_self = readBool(bs),
            text = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class common.GlobalConfig 
         ---@field public x1 integer
         ---@field public x2 integer
         ---@field public x3 integer
         ---@field public x4 integer
         ---@field public x5 integer
         ---@field public x6 integer
         ---@field public x7 integer[]
        local class = SimpleClass()
        class._id = -848234488
        class._type_ = 'common.GlobalConfig'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x1 = readInt(bs),
            x2 = readInt(bs),
            x3 = readInt(bs),
            x4 = readInt(bs),
            x5 = readInt(bs),
            x6 = readInt(bs),
            x7 = readList(bs, readInt),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class item.Item 
         ---@field public id integer
         ---@field public name string
         ---@field public minor_type integer
         ---@field public quality integer
         ---@field public icon_backgroud string
         ---@field public icon_mask string
         ---@field public desc string
         ---@field public show_order integer
        local class = SimpleClass()
        class._id = 2107285806
        class._type_ = 'item.Item'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            name = readString(bs),
            minor_type = readInt(bs),
            quality = readInt(bs),
            icon_backgroud = readString(bs),
            icon_mask = readString(bs),
            desc = readString(bs),
            show_order = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class l10n.L10NDemo 
         ---@field public id integer
         ---@field public text string
        local class = SimpleClass()
        class._id = -331195887
        class._type_ = 'l10n.L10NDemo'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            text = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class l10n.PatchDemo 
         ---@field public id integer
         ---@field public value integer
        local class = SimpleClass()
        class._id = -1707294656
        class._type_ = 'l10n.PatchDemo'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            value = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class tag.TestTag 
         ---@field public id integer
         ---@field public value string
        local class = SimpleClass()
        class._id = 1742933812
        class._type_ = 'tag.TestTag'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            value = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoType2 
         ---@field public x4 integer
         ---@field public x1 boolean
         ---@field public x2 integer
         ---@field public x3 integer
         ---@field public x5 integer
         ---@field public x6 number
         ---@field public x7 number
         ---@field public x8_0 integer
         ---@field public x8 integer
         ---@field public x9 integer
         ---@field public x10 string
         ---@field public x12 test.DemoType1
         ---@field public x13 integer
         ---@field public x14 test.DemoDynamic
         ---@field public s1 string
         ---@field public t1 integer
         ---@field public k1 integer[]
         ---@field public k2 integer[]
         ---@field public k5 integer[]
         ---@field public k8 table<integer,integer>
         ---@field public k9 test.DemoE2[]
         ---@field public k15 test.DemoDynamic[]
        local class = SimpleClass()
        class._id = -367048295
        class._type_ = 'test.DemoType2'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x4 = readInt(bs),
            x1 = readBool(bs),
            x2 = readByte(bs),
            x3 = readShort(bs),
            x5 = readLong(bs),
            x6 = readFloat(bs),
            x7 = readDouble(bs),
            x8_0 = readShort(bs),
            x8 = readInt(bs),
            x9 = readLong(bs),
            x10 = readString(bs),
            x12 = beans['test.DemoType1']._deserialize(bs),
            x13 = readInt(bs),
            x14 = beans['test.DemoDynamic']._deserialize(bs),
            s1 = readString(bs),
            t1 = readLong(bs),
            k1 = readArray(bs, readInt),
            k2 = readList(bs, readInt),
            k5 = readSet(bs, readInt),
            k8 = readMap(bs, readInt, readInt),
            k9 = readList(bs, beans['test.DemoE2']._deserialize),
            k15 = readArray(bs, beans['test.DemoDynamic']._deserialize),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoType1 
         ---@field public x1 integer
        local class = SimpleClass()
        class._id = -367048296
        class._type_ = 'test.DemoType1'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x1 = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoDynamic 
         ---@field public x1 integer
        local class = SimpleClass()
        class._id = -1863156384
        class._type_ = 'test.DemoDynamic'
        local id2name = {  [-2138341747] = 'test.DemoD2',  [-2138341717] = 'test.DemoE1',  [-989153243] = 'test.login.RoleInfo',  [-2138341744] = 'test.DemoD5',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoD2 :test.DemoDynamic 
         ---@field public x2 integer
        local class = SimpleClass()
        class._id = -2138341747
        class._type_ = 'test.DemoD2'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x1 = readInt(bs),
            x2 = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoD3 :test.DemoDynamic 
         ---@field public x3 integer
        local class = SimpleClass()
        class._id = -2138341746
        class._type_ = 'test.DemoD3'
        local id2name = {  [-2138341717] = 'test.DemoE1',  [-989153243] = 'test.login.RoleInfo',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoE1 :test.DemoD3 
         ---@field public x4 integer
        local class = SimpleClass()
        class._id = -2138341717
        class._type_ = 'test.DemoE1'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x1 = readInt(bs),
            x3 = readInt(bs),
            x4 = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.login.RoleInfo :test.DemoD3 
         ---@field public role_id integer
        local class = SimpleClass()
        class._id = -989153243
        class._type_ = 'test.login.RoleInfo'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x1 = readInt(bs),
            x3 = readInt(bs),
            role_id = readLong(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoD5 :test.DemoDynamic 
         ---@field public time test.DateTimeRange
        local class = SimpleClass()
        class._id = -2138341744
        class._type_ = 'test.DemoD5'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x1 = readInt(bs),
            time = beans['test.DateTimeRange']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DateTimeRange 
         ---@field public start_time integer
         ---@field public end_time integer
        local class = SimpleClass()
        class._id = 495315430
        class._type_ = 'test.DateTimeRange'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            start_time = readLong(bs),
            end_time = readLong(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoE2 
         ---@field public y1 integer
         ---@field public y2 boolean
        local class = SimpleClass()
        class._id = -2138341716
        class._type_ = 'test.DemoE2'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            y1 = readBool(bs) and readInt(bs) or nil,
            y2 = readBool(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoSingletonType 
         ---@field public id integer
         ---@field public name string
         ---@field public date test.DemoDynamic
        local class = SimpleClass()
        class._id = 539196998
        class._type_ = 'test.DemoSingletonType'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            name = readString(bs),
            date = beans['test.DemoDynamic']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.NotIndexList 
         ---@field public x integer
         ---@field public y integer
        local class = SimpleClass()
        class._id = -50446599
        class._type_ = 'test.NotIndexList'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x = readInt(bs),
            y = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.MultiUnionIndexList 
         ---@field public id1 integer
         ---@field public id2 integer
         ---@field public id3 string
         ---@field public num integer
         ---@field public desc string
        local class = SimpleClass()
        class._id = 1966847134
        class._type_ = 'test.MultiUnionIndexList'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id1 = readInt(bs),
            id2 = readLong(bs),
            id3 = readString(bs),
            num = readInt(bs),
            desc = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.MultiIndexList 
         ---@field public id1 integer
         ---@field public id2 integer
         ---@field public id3 string
         ---@field public num integer
         ---@field public desc string
        local class = SimpleClass()
        class._id = 2016237651
        class._type_ = 'test.MultiIndexList'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id1 = readInt(bs),
            id2 = readLong(bs),
            id3 = readString(bs),
            num = readInt(bs),
            desc = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.MultiRowRecord 
         ---@field public id integer
         ---@field public name string
         ---@field public one_rows test.MultiRowType1[]
         ---@field public multi_rows1 test.MultiRowType1[]
         ---@field public multi_rows2 test.MultiRowType1[]
         ---@field public multi_rows4 table<integer,test.MultiRowType2>
         ---@field public multi_rows5 test.MultiRowType3[]
         ---@field public multi_rows6 table<integer,test.MultiRowType2>
         ---@field public multi_rows7 table<integer,integer>
        local class = SimpleClass()
        class._id = -501249394
        class._type_ = 'test.MultiRowRecord'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            name = readString(bs),
            one_rows = readList(bs, beans['test.MultiRowType1']._deserialize),
            multi_rows1 = readList(bs, beans['test.MultiRowType1']._deserialize),
            multi_rows2 = readArray(bs, beans['test.MultiRowType1']._deserialize),
            multi_rows4 = readMap(bs, readInt, beans['test.MultiRowType2']._deserialize),
            multi_rows5 = readList(bs, beans['test.MultiRowType3']._deserialize),
            multi_rows6 = readMap(bs, readInt, beans['test.MultiRowType2']._deserialize),
            multi_rows7 = readMap(bs, readInt, readInt),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.MultiRowType1 
         ---@field public id integer
         ---@field public x integer
        local class = SimpleClass()
        class._id = 540474970
        class._type_ = 'test.MultiRowType1'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.MultiRowType2 
         ---@field public id integer
         ---@field public x integer
         ---@field public y number
        local class = SimpleClass()
        class._id = 540474971
        class._type_ = 'test.MultiRowType2'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x = readInt(bs),
            y = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.MultiRowType3 
         ---@field public id integer
         ---@field public items test.MultiRowType1[]
        local class = SimpleClass()
        class._id = 540474972
        class._type_ = 'test.MultiRowType3'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            items = readList(bs, beans['test.MultiRowType1']._deserialize),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestMultiColumn 
         ---@field public id integer
         ---@field public a test.Foo
         ---@field public b test.Foo
         ---@field public c test.Foo
        local class = SimpleClass()
        class._id = -294473599
        class._type_ = 'test.TestMultiColumn'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            a = beans['test.Foo']._deserialize(bs),
            b = beans['test.Foo']._deserialize(bs),
            c = beans['test.Foo']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.Foo 
         ---@field public y1 integer
         ---@field public y2 integer
         ---@field public y3 integer
        local class = SimpleClass()
        class._id = -1147950774
        class._type_ = 'test.Foo'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            y1 = readInt(bs),
            y2 = readInt(bs),
            y3 = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.MultiRowTitle 
         ---@field public id integer
         ---@field public name string
         ---@field public x1 test.H1
         ---@field public x2_0 test.H2
         ---@field public x2 test.H2[]
         ---@field public x3 test.H2[]
         ---@field public x4 test.H2[]
        local class = SimpleClass()
        class._id = 540002427
        class._type_ = 'test.MultiRowTitle'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            name = readString(bs),
            x1 = beans['test.H1']._deserialize(bs),
            x2_0 = readBool(bs) and beans['test.H2']._deserialize(bs) or nil,
            x2 = readList(bs, beans['test.H2']._deserialize),
            x3 = readArray(bs, beans['test.H2']._deserialize),
            x4 = readArray(bs, beans['test.H2']._deserialize),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.H1 
         ---@field public y2 test.H2
         ---@field public y3 integer
        local class = SimpleClass()
        class._id = -1422503995
        class._type_ = 'test.H1'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            y2 = beans['test.H2']._deserialize(bs),
            y3 = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.H2 
         ---@field public z2 integer
         ---@field public z3 integer
        local class = SimpleClass()
        class._id = -1422503994
        class._type_ = 'test.H2'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            z2 = readInt(bs),
            z3 = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestNull 
         ---@field public id integer
         ---@field public x1 integer
         ---@field public x2 integer
         ---@field public x3 test.DemoType1
         ---@field public x4 test.DemoDynamic
         ---@field public s1 string
         ---@field public s2 string
        local class = SimpleClass()
        class._id = 339868469
        class._type_ = 'test.TestNull'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x1 = readBool(bs) and readInt(bs) or nil,
            x2 = readBool(bs) and readInt(bs) or nil,
            x3 = readBool(bs) and beans['test.DemoType1']._deserialize(bs) or nil,
            x4 = readBool(bs) and beans['test.DemoDynamic']._deserialize(bs) or nil,
            s1 = readBool(bs) and readString(bs) or nil,
            s2 = readBool(bs) and readString(bs) or nil,
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoPrimitiveTypesTable 
         ---@field public x1 boolean
         ---@field public x2 integer
         ---@field public x3 integer
         ---@field public x4 integer
         ---@field public x5 integer
         ---@field public x6 number
         ---@field public x7 number
         ---@field public s1 string
         ---@field public s2 string
         ---@field public v2 vec2
         ---@field public v3 vec3
         ---@field public v4 vec4
         ---@field public t1 integer
        local class = SimpleClass()
        class._id = -370934083
        class._type_ = 'test.DemoPrimitiveTypesTable'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x1 = readBool(bs),
            x2 = readByte(bs),
            x3 = readShort(bs),
            x4 = readInt(bs),
            x5 = readLong(bs),
            x6 = readFloat(bs),
            x7 = readDouble(bs),
            s1 = readString(bs),
            s2 = readString(bs),
            v2 = beans['vec2']._deserialize(bs),
            v3 = beans['vec3']._deserialize(bs),
            v4 = beans['vec4']._deserialize(bs),
            t1 = readLong(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class vec2 
         ---@field public x number
         ---@field public y number
        local class = SimpleClass()
        class._id = 3615518
        class._type_ = 'vec2'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x = readFloat(bs),
            y = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class vec3 
         ---@field public x number
         ---@field public y number
         ---@field public z number
        local class = SimpleClass()
        class._id = 3615519
        class._type_ = 'vec3'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x = readFloat(bs),
            y = readFloat(bs),
            z = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class vec4 
         ---@field public x number
         ---@field public y number
         ---@field public z number
         ---@field public w number
        local class = SimpleClass()
        class._id = 3615520
        class._type_ = 'vec4'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x = readFloat(bs),
            y = readFloat(bs),
            z = readFloat(bs),
            w = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestString 
         ---@field public id string
         ---@field public s1 string
         ---@field public s2 string
         ---@field public cs1 test.CompactString
         ---@field public cs2 test.CompactString
        local class = SimpleClass()
        class._id = 338485823
        class._type_ = 'test.TestString'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readString(bs),
            s1 = readString(bs),
            s2 = readString(bs),
            cs1 = beans['test.CompactString']._deserialize(bs),
            cs2 = beans['test.CompactString']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.CompactString 
         ---@field public id integer
         ---@field public s2 string
         ---@field public s3 string
        local class = SimpleClass()
        class._id = 1968089240
        class._type_ = 'test.CompactString'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            s2 = readString(bs),
            s3 = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DemoGroup 
         ---@field public id integer
         ---@field public x5 test.InnerGroup
        local class = SimpleClass()
        class._id = -379263008
        class._type_ = 'test.DemoGroup'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x5 = beans['test.InnerGroup']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.InnerGroup 
         ---@field public y1 integer
        local class = SimpleClass()
        class._id = -587873083
        class._type_ = 'test.InnerGroup'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            y1 = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestGlobal 
         ---@field public unlock_equip integer
         ---@field public unlock_hero integer
        local class = SimpleClass()
        class._id = -12548655
        class._type_ = 'test.TestGlobal'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            unlock_equip = readInt(bs),
            unlock_hero = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestBeRef 
         ---@field public id integer
         ---@field public count integer
        local class = SimpleClass()
        class._id = 1934403938
        class._type_ = 'test.TestBeRef'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            count = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestRef 
         ---@field public id integer
         ---@field public x1 integer
         ---@field public x1_2 integer
         ---@field public x2 integer
         ---@field public x3 integer
         ---@field public x4 integer
         ---@field public a1 integer[]
         ---@field public a2 integer[]
         ---@field public b1 integer[]
         ---@field public b2 integer[]
         ---@field public c1 integer[]
         ---@field public c2 integer[]
         ---@field public d1 table<integer,integer>
         ---@field public d2 table<integer,integer>
         ---@field public e1 integer
         ---@field public e2 integer
         ---@field public e3 string
         ---@field public f1 integer
         ---@field public f2 integer
         ---@field public f3 string
         ---@field public s1 test.RefDynamicBase
        local class = SimpleClass()
        class._id = -543222491
        class._type_ = 'test.TestRef'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x1 = readInt(bs),
            x1_2 = readInt(bs),
            x2 = readInt(bs),
            x3 = readInt(bs),
            x4 = readInt(bs),
            a1 = readArray(bs, readInt),
            a2 = readArray(bs, readInt),
            b1 = readList(bs, readInt),
            b2 = readList(bs, readInt),
            c1 = readSet(bs, readInt),
            c2 = readSet(bs, readInt),
            d1 = readMap(bs, readInt, readInt),
            d2 = readMap(bs, readInt, readInt),
            e1 = readInt(bs),
            e2 = readLong(bs),
            e3 = readString(bs),
            f1 = readInt(bs),
            f2 = readLong(bs),
            f3 = readString(bs),
            s1 = beans['test.RefDynamicBase']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.RefDynamicBase 
         ---@field public x integer
        local class = SimpleClass()
        class._id = 772878873
        class._type_ = 'test.RefDynamicBase'
        local id2name = {  [1963260263] = 'test.RefBean',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class test.RefBean :test.RefDynamicBase 
         ---@field public arr integer[]
        local class = SimpleClass()
        class._id = 1963260263
        class._type_ = 'test.RefBean'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x = readInt(bs),
            arr = readList(bs, readInt),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestSize 
         ---@field public id integer
         ---@field public x1 integer[]
         ---@field public x2 integer[]
         ---@field public x3 integer[]
         ---@field public x4 table<integer,integer>
        local class = SimpleClass()
        class._id = 340006319
        class._type_ = 'test.TestSize'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x1 = readArray(bs, readInt),
            x2 = readList(bs, readInt),
            x3 = readSet(bs, readInt),
            x4 = readMap(bs, readInt, readInt),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestSet 
         ---@field public id integer
         ---@field public x0 string
         ---@field public x1 integer[]
         ---@field public x2 integer[]
         ---@field public x3 string[]
         ---@field public x4 integer[]
        local class = SimpleClass()
        class._id = -543221516
        class._type_ = 'test.TestSet'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x0 = readString(bs),
            x1 = readList(bs, readInt),
            x2 = readList(bs, readLong),
            x3 = readList(bs, readString),
            x4 = readList(bs, readInt),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.DetectEncoding 
         ---@field public id integer
         ---@field public name string
        local class = SimpleClass()
        class._id = -1154609646
        class._type_ = 'test.DetectEncoding'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            name = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.ItemBase 
         ---@field public id integer
         ---@field public name string
         ---@field public desc string
        local class = SimpleClass()
        class._id = -1631171968
        class._type_ = 'test.ItemBase'
        local id2name = {  [-1226641649] = 'test.Item',  [-76837102] = 'test.Equipment',  [-625155649] = 'test.Decorator',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class test.Item :test.ItemBase 
         ---@field public num integer
         ---@field public price integer
        local class = SimpleClass()
        class._id = -1226641649
        class._type_ = 'test.Item'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            name = readString(bs),
            desc = readString(bs),
            num = readInt(bs),
            price = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.Equipment :test.ItemBase 
         ---@field public attr integer
         ---@field public value integer
        local class = SimpleClass()
        class._id = -76837102
        class._type_ = 'test.Equipment'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            name = readString(bs),
            desc = readString(bs),
            attr = readInt(bs),
            value = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.Decorator :test.ItemBase 
         ---@field public duration integer
        local class = SimpleClass()
        class._id = -625155649
        class._type_ = 'test.Decorator'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            name = readString(bs),
            desc = readString(bs),
            duration = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestIndex 
         ---@field public id integer
         ---@field public eles test.DemoType1[]
        local class = SimpleClass()
        class._id = 1941154020
        class._type_ = 'test.TestIndex'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            eles = readList(bs, beans['test.DemoType1']._deserialize),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestMap 
         ---@field public id integer
         ---@field public x1 table<integer,integer>
         ---@field public x2 table<integer,integer>
         ---@field public x3 table<string,integer>
         ---@field public x4 table<integer,integer>
        local class = SimpleClass()
        class._id = -543227410
        class._type_ = 'test.TestMap'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x1 = readMap(bs, readInt, readInt),
            x2 = readMap(bs, readLong, readInt),
            x3 = readMap(bs, readString, readInt),
            x4 = readMap(bs, readInt, readInt),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.ExcelFromJson 
         ---@field public x4 integer
         ---@field public x1 boolean
         ---@field public x5 integer
         ---@field public x6 number
         ---@field public s1 string
         ---@field public s2 string
         ---@field public t1 integer
         ---@field public x12 test.DemoType1
         ---@field public x13 integer
         ---@field public x14 test.DemoDynamic
         ---@field public k1 integer[]
         ---@field public k8 table<integer,integer>
         ---@field public k9 test.DemoE2[]
         ---@field public k15 test.DemoDynamic[]
        local class = SimpleClass()
        class._id = -1485706483
        class._type_ = 'test.ExcelFromJson'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x4 = readInt(bs),
            x1 = readBool(bs),
            x5 = readLong(bs),
            x6 = readFloat(bs),
            s1 = readString(bs),
            s2 = readString(bs),
            t1 = readLong(bs),
            x12 = beans['test.DemoType1']._deserialize(bs),
            x13 = readInt(bs),
            x14 = beans['test.DemoDynamic']._deserialize(bs),
            k1 = readArray(bs, readInt),
            k8 = readMap(bs, readInt, readInt),
            k9 = readList(bs, beans['test.DemoE2']._deserialize),
            k15 = readArray(bs, beans['test.DemoDynamic']._deserialize),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.CompositeJsonTable1 
         ---@field public id integer
         ---@field public x string
        local class = SimpleClass()
        class._id = 1566207894
        class._type_ = 'test.CompositeJsonTable1'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x = readString(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.CompositeJsonTable2 
         ---@field public id integer
         ---@field public y integer
        local class = SimpleClass()
        class._id = 1566207895
        class._type_ = 'test.CompositeJsonTable2'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            y = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.CompositeJsonTable3 
         ---@field public a integer
         ---@field public b integer
        local class = SimpleClass()
        class._id = 1566207896
        class._type_ = 'test.CompositeJsonTable3'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            a = readInt(bs),
            b = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.ExcelFromJsonMultiRow 
         ---@field public id integer
         ---@field public x integer
         ---@field public items test.TestRow[]
        local class = SimpleClass()
        class._id = 715335694
        class._type_ = 'test.ExcelFromJsonMultiRow'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x = readInt(bs),
            items = readList(bs, beans['test.TestRow']._deserialize),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestRow 
         ---@field public x integer
         ---@field public y boolean
         ---@field public z string
         ---@field public a test.Test3
         ---@field public b integer[]
        local class = SimpleClass()
        class._id = -543222164
        class._type_ = 'test.TestRow'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x = readInt(bs),
            y = readBool(bs),
            z = readString(bs),
            a = beans['test.Test3']._deserialize(bs),
            b = readList(bs, readInt),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.Test3 
         ---@field public x integer
         ---@field public y integer
        local class = SimpleClass()
        class._id = 638540133
        class._type_ = 'test.Test3'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            x = readInt(bs),
            y = readInt(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestScriptableObject 
         ---@field public id integer
         ---@field public desc string
         ---@field public rate number
         ---@field public num integer
         ---@field public v2 vec2
         ---@field public v3 vec3
         ---@field public v4 vec4
        local class = SimpleClass()
        class._id = -1896814350
        class._type_ = 'test.TestScriptableObject'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            desc = readString(bs),
            rate = readFloat(bs),
            num = readInt(bs),
            v2 = beans['vec2']._deserialize(bs),
            v3 = beans['vec3']._deserialize(bs),
            v4 = beans['vec4']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.TestMapper 
         ---@field public id integer
         ---@field public audio_type integer
         ---@field public v2 vec2
        local class = SimpleClass()
        class._id = 149110895
        class._type_ = 'test.TestMapper'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            audio_type = readInt(bs),
            v2 = beans['vec2']._deserialize(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class DefineFromExcel2 
         ---@field public id integer
         ---@field public x1 boolean
         ---@field public x5 integer
         ---@field public x6 number
         ---@field public x8 integer
         ---@field public x10 string
         ---@field public x13 integer
         ---@field public x13_2 integer
         ---@field public x14 test.DemoDynamic
         ---@field public x15 test.Shape
         ---@field public v2 vec2
         ---@field public t1 integer
         ---@field public k1 integer[]
         ---@field public k2 integer[]
         ---@field public k8 table<integer,integer>
         ---@field public k9 test.DemoE2[]
         ---@field public k10 vec3[]
         ---@field public k11 vec4[]
        local class = SimpleClass()
        class._id = 482045152
        class._type_ = 'DefineFromExcel2'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            id = readInt(bs),
            x1 = readBool(bs),
            x5 = readLong(bs),
            x6 = readFloat(bs),
            x8 = readInt(bs),
            x10 = readString(bs),
            x13 = readInt(bs),
            x13_2 = readInt(bs),
            x14 = beans['test.DemoDynamic']._deserialize(bs),
            x15 = beans['test.Shape']._deserialize(bs),
            v2 = beans['vec2']._deserialize(bs),
            t1 = readLong(bs),
            k1 = readArray(bs, readInt),
            k2 = readArray(bs, readInt),
            k8 = readMap(bs, readInt, readInt),
            k9 = readList(bs, beans['test.DemoE2']._deserialize),
            k10 = readList(bs, beans['vec3']._deserialize),
            k11 = readList(bs, beans['vec4']._deserialize),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test.Shape 
        local class = SimpleClass()
        class._id = 637688613
        class._type_ = 'test.Shape'
        local id2name = {  [2131829196] = 'test.Circle',  [694982337] = 'test2.Rectangle',  }
        class._deserialize = function(bs)
            local id = readInt(bs)
            return beans[id2name[id]]._deserialize(bs)
        end
        beans[class._type_] = class
    end
    do
    ---@class test.Circle :Shape 
         ---@field public radius number
        local class = SimpleClass()
        class._id = 2131829196
        class._type_ = 'test.Circle'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            radius = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end
    do
    ---@class test2.Rectangle :test.Shape 
         ---@field public width number
         ---@field public height number
        local class = SimpleClass()
        class._id = 694982337
        class._type_ = 'test2.Rectangle'
        local id2name = {  }
        class._deserialize = function(bs)
            local o = {
            width = readFloat(bs),
            height = readFloat(bs),
            }
            setmetatable(o, class)
            return o
        end
        beans[class._type_] = class
    end


    return { enums = enums, beans = beans, tables = tables }
    end

return { InitTypes = InitTypes }


