Full Code of yanghuan/CSharpLuaForUnity for AI

master b2945e3c7950 cached
842 files
3.1 MB
859.0k tokens
2732 symbols
1 requests
Download .txt
Showing preview only (3,440K chars total). Download the full file or copy to clipboard to get everything.
Repository: yanghuan/CSharpLuaForUnity
Branch: master
Commit: b2945e3c7950
Files: 842
Total size: 3.1 MB

Directory structure:
gitextract_wjxhfzse/

├── .gitignore
├── Assets/
│   ├── CSharpLua/
│   │   ├── Base/
│   │   │   ├── BaseScripts.asmdef
│   │   │   ├── BaseScripts.asmdef.meta
│   │   │   ├── CSharpLua/
│   │   │   │   ├── BaseUtility.cs
│   │   │   │   ├── BaseUtility.cs.meta
│   │   │   │   ├── LuaAutoWrapAttribute.cs
│   │   │   │   ├── LuaAutoWrapAttribute.cs.meta
│   │   │   │   ├── Settings.cs
│   │   │   │   └── Settings.cs.meta
│   │   │   └── CSharpLua.meta
│   │   ├── Base.meta
│   │   ├── Bridge/
│   │   │   ├── BridgeScripts.asmdef
│   │   │   ├── BridgeScripts.asmdef.meta
│   │   │   ├── TestUtils.cs
│   │   │   └── TestUtils.cs.meta
│   │   ├── Bridge.meta
│   │   ├── CSharpLuaClient.cs
│   │   ├── CSharpLuaClient.cs.meta
│   │   ├── Compiled/
│   │   │   ├── CompiledScripts.asmdef
│   │   │   ├── CompiledScripts.asmdef.meta
│   │   │   ├── Protocol/
│   │   │   │   ├── AutoGen/
│   │   │   │   │   ├── CommonPrototype.cs
│   │   │   │   │   └── CommonPrototype.cs.meta
│   │   │   │   ├── AutoGen.meta
│   │   │   │   ├── CommonPrototype.proto
│   │   │   │   ├── CommonPrototype.proto.meta
│   │   │   │   ├── IProtocol.cs
│   │   │   │   └── IProtocol.cs.meta
│   │   │   ├── Protocol.meta
│   │   │   ├── Sample/
│   │   │   │   ├── TestCoroutine.cs
│   │   │   │   ├── TestCoroutine.cs.meta
│   │   │   │   ├── TestHangingScript.cs
│   │   │   │   ├── TestHangingScript.cs.meta
│   │   │   │   ├── TestHelloWord.cs
│   │   │   │   ├── TestHelloWord.cs.meta
│   │   │   │   ├── TestProtobuf.cs
│   │   │   │   └── TestProtobuf.cs.meta
│   │   │   └── Sample.meta
│   │   ├── Compiled.meta
│   │   ├── Editor/
│   │   │   ├── Compiler.cs
│   │   │   └── Compiler.cs.meta
│   │   ├── Editor.meta
│   │   ├── Examples/
│   │   │   ├── 01_HelloWorld/
│   │   │   │   ├── HelloWorld.unity
│   │   │   │   ├── HelloWorld.unity.meta
│   │   │   │   ├── TestLoader.prefab
│   │   │   │   ├── TestLoader.prefab.meta
│   │   │   │   ├── testText.txt
│   │   │   │   └── testText.txt.meta
│   │   │   └── 01_HelloWorld.meta
│   │   ├── Examples.meta
│   │   ├── UserMonoBehaviourConverter.cs
│   │   └── UserMonoBehaviourConverter.cs.meta
│   ├── CSharpLua.meta
│   ├── Editor/
│   │   ├── Custom/
│   │   │   ├── CustomSettings.cs
│   │   │   └── CustomSettings.cs.meta
│   │   └── Custom.meta
│   ├── Editor.meta
│   ├── Lua/
│   │   ├── 3rd/
│   │   │   ├── pbc/
│   │   │   │   ├── Protocol/
│   │   │   │   │   ├── CommonPrototype.pb
│   │   │   │   │   └── CommonPrototype.pb.meta
│   │   │   │   ├── Protocol.meta
│   │   │   │   ├── protobuf.lua
│   │   │   │   └── protobuf.lua.meta
│   │   │   └── pbc.meta
│   │   ├── 3rd.meta
│   │   ├── Classloader.lua
│   │   ├── Classloader.lua.meta
│   │   ├── Compiled/
│   │   │   ├── Protocol/
│   │   │   │   ├── AutoGen/
│   │   │   │   │   ├── CommonPrototype.lua
│   │   │   │   │   └── CommonPrototype.lua.meta
│   │   │   │   ├── AutoGen.meta
│   │   │   │   ├── IProtocol.lua
│   │   │   │   └── IProtocol.lua.meta
│   │   │   ├── Protocol.meta
│   │   │   ├── Sample/
│   │   │   │   ├── TestCoroutine.lua
│   │   │   │   ├── TestCoroutine.lua.meta
│   │   │   │   ├── TestHangingScript.lua
│   │   │   │   ├── TestHangingScript.lua.meta
│   │   │   │   ├── TestHelloWord.lua
│   │   │   │   ├── TestHelloWord.lua.meta
│   │   │   │   ├── TestProtobuf.lua
│   │   │   │   └── TestProtobuf.lua.meta
│   │   │   ├── Sample.meta
│   │   │   ├── manifest.lua
│   │   │   └── manifest.lua.meta
│   │   ├── Compiled.meta
│   │   ├── CoreSystemLua/
│   │   │   ├── All.lua
│   │   │   ├── All.lua.meta
│   │   │   ├── CoreSystem/
│   │   │   │   ├── Array.lua
│   │   │   │   ├── Array.lua.meta
│   │   │   │   ├── Boolean.lua
│   │   │   │   ├── Boolean.lua.meta
│   │   │   │   ├── Char.lua
│   │   │   │   ├── Char.lua.meta
│   │   │   │   ├── Collections/
│   │   │   │   │   ├── Dictionary.lua
│   │   │   │   │   ├── Dictionary.lua.meta
│   │   │   │   │   ├── EqualityComparer.lua
│   │   │   │   │   ├── EqualityComparer.lua.meta
│   │   │   │   │   ├── HashSet.lua
│   │   │   │   │   ├── HashSet.lua.meta
│   │   │   │   │   ├── LinkedList.lua
│   │   │   │   │   ├── LinkedList.lua.meta
│   │   │   │   │   ├── Linq.lua
│   │   │   │   │   ├── Linq.lua.meta
│   │   │   │   │   ├── List.lua
│   │   │   │   │   ├── List.lua.meta
│   │   │   │   │   ├── Queue.lua
│   │   │   │   │   ├── Queue.lua.meta
│   │   │   │   │   ├── SortedSet.lua
│   │   │   │   │   ├── SortedSet.lua.meta
│   │   │   │   │   ├── Stack.lua
│   │   │   │   │   └── Stack.lua.meta
│   │   │   │   ├── Collections.meta
│   │   │   │   ├── Console.lua
│   │   │   │   ├── Console.lua.meta
│   │   │   │   ├── Convert.lua
│   │   │   │   ├── Convert.lua.meta
│   │   │   │   ├── Core.lua
│   │   │   │   ├── Core.lua.meta
│   │   │   │   ├── DateTime.lua
│   │   │   │   ├── DateTime.lua.meta
│   │   │   │   ├── Delegate.lua
│   │   │   │   ├── Delegate.lua.meta
│   │   │   │   ├── Enum.lua
│   │   │   │   ├── Enum.lua.meta
│   │   │   │   ├── Exception.lua
│   │   │   │   ├── Exception.lua.meta
│   │   │   │   ├── IO/
│   │   │   │   │   ├── File.lua
│   │   │   │   │   └── File.lua.meta
│   │   │   │   ├── IO.meta
│   │   │   │   ├── Interfaces.lua
│   │   │   │   ├── Interfaces.lua.meta
│   │   │   │   ├── Math.lua
│   │   │   │   ├── Math.lua.meta
│   │   │   │   ├── Number.lua
│   │   │   │   ├── Number.lua.meta
│   │   │   │   ├── Random.lua
│   │   │   │   ├── Random.lua.meta
│   │   │   │   ├── Reflection/
│   │   │   │   │   ├── Assembly.lua
│   │   │   │   │   └── Assembly.lua.meta
│   │   │   │   ├── Reflection.meta
│   │   │   │   ├── String.lua
│   │   │   │   ├── String.lua.meta
│   │   │   │   ├── Text/
│   │   │   │   │   ├── StringBuilder.lua
│   │   │   │   │   └── StringBuilder.lua.meta
│   │   │   │   ├── Text.meta
│   │   │   │   ├── Threading/
│   │   │   │   │   ├── Task.lua
│   │   │   │   │   ├── Task.lua.meta
│   │   │   │   │   ├── Thread.lua
│   │   │   │   │   ├── Thread.lua.meta
│   │   │   │   │   ├── Timer.lua
│   │   │   │   │   └── Timer.lua.meta
│   │   │   │   ├── Threading.meta
│   │   │   │   ├── Threads.meta
│   │   │   │   ├── TimeSpan.lua
│   │   │   │   ├── TimeSpan.lua.meta
│   │   │   │   ├── Type.lua
│   │   │   │   ├── Type.lua.meta
│   │   │   │   ├── Utilities.lua
│   │   │   │   └── Utilities.lua.meta
│   │   │   ├── CoreSystem.meta
│   │   │   ├── Sample/
│   │   │   │   ├── test.lua
│   │   │   │   └── test.lua.meta
│   │   │   └── Sample.meta
│   │   ├── CoreSystemLua.meta
│   │   ├── Main.lua
│   │   ├── Main.lua.meta
│   │   ├── ProtobufAdapter.lua
│   │   ├── ProtobufAdapter.lua.meta
│   │   ├── UnityAdapter.Lua
│   │   └── UnityAdapter.Lua.meta
│   ├── Lua.meta
│   ├── Plugins/
│   │   ├── 3rd/
│   │   │   └── protobuf-net.dll.meta
│   │   ├── 3rd.meta
│   │   ├── Android/
│   │   │   ├── libs/
│   │   │   │   ├── arm64-v8a/
│   │   │   │   │   └── libtolua.so.meta
│   │   │   │   ├── arm64-v8a.meta
│   │   │   │   ├── armeabi-v7a/
│   │   │   │   │   └── libtolua.so.meta
│   │   │   │   ├── armeabi-v7a.meta
│   │   │   │   ├── x86/
│   │   │   │   │   └── libtolua.so.meta
│   │   │   │   └── x86.meta
│   │   │   └── libs.meta
│   │   ├── Android.meta
│   │   ├── CString.dll.meta
│   │   ├── Debugger.dll.meta
│   │   ├── iOS/
│   │   │   ├── libtolua.a
│   │   │   └── libtolua.a.meta
│   │   ├── iOS.meta
│   │   ├── tolua.bundle/
│   │   │   ├── Contents/
│   │   │   │   ├── Info.plist
│   │   │   │   ├── Info.plist.meta
│   │   │   │   ├── MacOS/
│   │   │   │   │   ├── tolua
│   │   │   │   │   └── tolua.meta
│   │   │   │   ├── MacOS.meta
│   │   │   │   ├── Resources/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── LICENSE.meta
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── README.md.meta
│   │   │   │   │   ├── print_r.lua
│   │   │   │   │   ├── print_r.lua.meta
│   │   │   │   │   ├── sproto.lua
│   │   │   │   │   ├── sproto.lua.meta
│   │   │   │   │   ├── sproto.new/
│   │   │   │   │   │   ├── LICENSE
│   │   │   │   │   │   ├── LICENSE.meta
│   │   │   │   │   │   ├── Makefile
│   │   │   │   │   │   ├── Makefile.meta
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── README.md.meta
│   │   │   │   │   │   ├── lsproto.c
│   │   │   │   │   │   ├── lsproto.c.meta
│   │   │   │   │   │   ├── msvcint.h
│   │   │   │   │   │   ├── msvcint.h.meta
│   │   │   │   │   │   ├── print_r.lua
│   │   │   │   │   │   ├── print_r.lua.meta
│   │   │   │   │   │   ├── sproto.c
│   │   │   │   │   │   ├── sproto.c.meta
│   │   │   │   │   │   ├── sproto.h
│   │   │   │   │   │   ├── sproto.h.meta
│   │   │   │   │   │   ├── sproto.lua
│   │   │   │   │   │   ├── sproto.lua.meta
│   │   │   │   │   │   ├── sproto.new.xcodeproj/
│   │   │   │   │   │   │   ├── project.pbxproj
│   │   │   │   │   │   │   └── project.pbxproj.meta
│   │   │   │   │   │   ├── sproto.new.xcodeproj.meta
│   │   │   │   │   │   ├── sprotoparser.lua
│   │   │   │   │   │   ├── sprotoparser.lua.meta
│   │   │   │   │   │   ├── test.lua
│   │   │   │   │   │   ├── test.lua.meta
│   │   │   │   │   │   ├── testall.lua
│   │   │   │   │   │   ├── testall.lua.meta
│   │   │   │   │   │   ├── testrpc.lua
│   │   │   │   │   │   └── testrpc.lua.meta
│   │   │   │   │   ├── sproto.new.meta
│   │   │   │   │   ├── sprotoparser.lua
│   │   │   │   │   ├── sprotoparser.lua.meta
│   │   │   │   │   ├── test.lua
│   │   │   │   │   ├── test.lua.meta
│   │   │   │   │   ├── testall.lua
│   │   │   │   │   ├── testall.lua.meta
│   │   │   │   │   ├── testrpc.lua
│   │   │   │   │   └── testrpc.lua.meta
│   │   │   │   └── Resources.meta
│   │   │   └── Contents.meta
│   │   ├── tolua.bundle.meta
│   │   ├── x86/
│   │   │   └── tolua.dll.meta
│   │   ├── x86.meta
│   │   ├── x86_64/
│   │   │   └── tolua.dll.meta
│   │   └── x86_64.meta
│   ├── Plugins.meta
│   ├── Source/
│   │   ├── Generate.meta
│   │   ├── LuaConst.cs
│   │   └── LuaConst.cs.meta
│   ├── Source.meta
│   ├── ToLua/
│   │   ├── BaseType/
│   │   │   ├── LuaInterface_EventObjectWrap.cs
│   │   │   ├── LuaInterface_EventObjectWrap.cs.meta
│   │   │   ├── LuaInterface_LuaConstructorWrap.cs
│   │   │   ├── LuaInterface_LuaConstructorWrap.cs.meta
│   │   │   ├── LuaInterface_LuaFieldWrap.cs
│   │   │   ├── LuaInterface_LuaFieldWrap.cs.meta
│   │   │   ├── LuaInterface_LuaMethodWrap.cs
│   │   │   ├── LuaInterface_LuaMethodWrap.cs.meta
│   │   │   ├── LuaInterface_LuaOutWrap.cs
│   │   │   ├── LuaInterface_LuaOutWrap.cs.meta
│   │   │   ├── LuaInterface_LuaPropertyWrap.cs
│   │   │   ├── LuaInterface_LuaPropertyWrap.cs.meta
│   │   │   ├── System_ArrayWrap.cs
│   │   │   ├── System_ArrayWrap.cs.meta
│   │   │   ├── System_Collections_Generic_DictionaryWrap.cs
│   │   │   ├── System_Collections_Generic_DictionaryWrap.cs.meta
│   │   │   ├── System_Collections_Generic_Dictionary_KeyCollectionWrap.cs
│   │   │   ├── System_Collections_Generic_Dictionary_KeyCollectionWrap.cs.meta
│   │   │   ├── System_Collections_Generic_Dictionary_ValueCollectionWrap.cs
│   │   │   ├── System_Collections_Generic_Dictionary_ValueCollectionWrap.cs.meta
│   │   │   ├── System_Collections_Generic_KeyValuePairWrap.cs
│   │   │   ├── System_Collections_Generic_KeyValuePairWrap.cs.meta
│   │   │   ├── System_Collections_Generic_ListWrap.cs
│   │   │   ├── System_Collections_Generic_ListWrap.cs.meta
│   │   │   ├── System_Collections_IEnumeratorWrap.cs
│   │   │   ├── System_Collections_IEnumeratorWrap.cs.meta
│   │   │   ├── System_Collections_ObjectModel_ReadOnlyCollectionWrap.cs
│   │   │   ├── System_Collections_ObjectModel_ReadOnlyCollectionWrap.cs.meta
│   │   │   ├── System_DelegateWrap.cs
│   │   │   ├── System_DelegateWrap.cs.meta
│   │   │   ├── System_EnumWrap.cs
│   │   │   ├── System_EnumWrap.cs.meta
│   │   │   ├── System_NullObjectWrap.cs
│   │   │   ├── System_NullObjectWrap.cs.meta
│   │   │   ├── System_ObjectWrap.cs
│   │   │   ├── System_ObjectWrap.cs.meta
│   │   │   ├── System_StringWrap.cs
│   │   │   ├── System_StringWrap.cs.meta
│   │   │   ├── System_TypeWrap.cs
│   │   │   ├── System_TypeWrap.cs.meta
│   │   │   ├── UnityEngine_CoroutineWrap.cs
│   │   │   ├── UnityEngine_CoroutineWrap.cs.meta
│   │   │   ├── UnityEngine_ObjectWrap.cs
│   │   │   └── UnityEngine_ObjectWrap.cs.meta
│   │   ├── BaseType.meta
│   │   ├── Core/
│   │   │   ├── LuaAttributes.cs
│   │   │   ├── LuaAttributes.cs.meta
│   │   │   ├── LuaBaseRef.cs
│   │   │   ├── LuaBaseRef.cs.meta
│   │   │   ├── LuaBeatEvent.cs
│   │   │   ├── LuaBeatEvent.cs.meta
│   │   │   ├── LuaDLL.cs
│   │   │   ├── LuaDLL.cs.meta
│   │   │   ├── LuaEvent.cs
│   │   │   ├── LuaEvent.cs.meta
│   │   │   ├── LuaException.cs
│   │   │   ├── LuaException.cs.meta
│   │   │   ├── LuaFileUtils.cs
│   │   │   ├── LuaFileUtils.cs.meta
│   │   │   ├── LuaFunction.cs
│   │   │   ├── LuaFunction.cs.meta
│   │   │   ├── LuaMatchType.cs
│   │   │   ├── LuaMatchType.cs.meta
│   │   │   ├── LuaMethodCache.cs
│   │   │   ├── LuaMethodCache.cs.meta
│   │   │   ├── LuaMisc.cs
│   │   │   ├── LuaMisc.cs.meta
│   │   │   ├── LuaStackOp.cs
│   │   │   ├── LuaStackOp.cs.meta
│   │   │   ├── LuaState.cs
│   │   │   ├── LuaState.cs.meta
│   │   │   ├── LuaStatePtr.cs
│   │   │   ├── LuaStatePtr.cs.meta
│   │   │   ├── LuaStatic.cs
│   │   │   ├── LuaStatic.cs.meta
│   │   │   ├── LuaTable.cs
│   │   │   ├── LuaTable.cs.meta
│   │   │   ├── LuaThread.cs
│   │   │   ├── LuaThread.cs.meta
│   │   │   ├── LuaUnityLibs.cs
│   │   │   ├── LuaUnityLibs.cs.meta
│   │   │   ├── LuaValueType.cs
│   │   │   ├── LuaValueType.cs.meta
│   │   │   ├── ObjectPool.cs
│   │   │   ├── ObjectPool.cs.meta
│   │   │   ├── ObjectTranslator.cs
│   │   │   ├── ObjectTranslator.cs.meta
│   │   │   ├── ToLua.cs
│   │   │   ├── ToLua.cs.meta
│   │   │   ├── TypeChecker.cs
│   │   │   ├── TypeChecker.cs.meta
│   │   │   ├── TypeTraits.cs
│   │   │   └── TypeTraits.cs.meta
│   │   ├── Core.meta
│   │   ├── Editor/
│   │   │   ├── Extend/
│   │   │   │   ├── ToLua_LuaInterface_EventObject.cs
│   │   │   │   ├── ToLua_LuaInterface_EventObject.cs.meta
│   │   │   │   ├── ToLua_LuaInterface_LuaConstructor.cs
│   │   │   │   ├── ToLua_LuaInterface_LuaConstructor.cs.meta
│   │   │   │   ├── ToLua_LuaInterface_LuaField.cs
│   │   │   │   ├── ToLua_LuaInterface_LuaField.cs.meta
│   │   │   │   ├── ToLua_LuaInterface_LuaMethod.cs
│   │   │   │   ├── ToLua_LuaInterface_LuaMethod.cs.meta
│   │   │   │   ├── ToLua_LuaInterface_LuaProperty.cs
│   │   │   │   ├── ToLua_LuaInterface_LuaProperty.cs.meta
│   │   │   │   ├── ToLua_System_Delegate.cs
│   │   │   │   ├── ToLua_System_Delegate.cs.meta
│   │   │   │   ├── ToLua_System_Enum.cs
│   │   │   │   ├── ToLua_System_Enum.cs.meta
│   │   │   │   ├── ToLua_System_Object.cs
│   │   │   │   ├── ToLua_System_Object.cs.meta
│   │   │   │   ├── ToLua_System_String.cs
│   │   │   │   ├── ToLua_System_String.cs.meta
│   │   │   │   ├── ToLua_System_Type.cs
│   │   │   │   ├── ToLua_System_Type.cs.meta
│   │   │   │   ├── ToLua_UnityEngine_GameObject.cs
│   │   │   │   ├── ToLua_UnityEngine_GameObject.cs.meta
│   │   │   │   ├── ToLua_UnityEngine_Input.cs
│   │   │   │   ├── ToLua_UnityEngine_Input.cs.meta
│   │   │   │   ├── ToLua_UnityEngine_Object.cs
│   │   │   │   ├── ToLua_UnityEngine_Object.cs.meta
│   │   │   │   ├── ToLua_UnityEngine_RectTransform.cs
│   │   │   │   └── ToLua_UnityEngine_RectTransform.cs.meta
│   │   │   ├── Extend.meta
│   │   │   ├── ToLuaExport.cs
│   │   │   ├── ToLuaExport.cs.meta
│   │   │   ├── ToLuaMenu.cs
│   │   │   ├── ToLuaMenu.cs.meta
│   │   │   ├── ToLuaTree.cs
│   │   │   └── ToLuaTree.cs.meta
│   │   ├── Editor.meta
│   │   ├── Examples/
│   │   │   ├── 01_HelloWorld/
│   │   │   │   ├── HelloWorld.cs
│   │   │   │   ├── HelloWorld.cs.meta
│   │   │   │   ├── HelloWorld.unity
│   │   │   │   └── HelloWorld.unity.meta
│   │   │   ├── 01_HelloWorld.meta
│   │   │   ├── 02_ScriptsFromFile/
│   │   │   │   ├── ScriptsFromFile.cs
│   │   │   │   ├── ScriptsFromFile.cs.meta
│   │   │   │   ├── ScriptsFromFile.lua
│   │   │   │   ├── ScriptsFromFile.lua.meta
│   │   │   │   ├── ScriptsFromFile.unity
│   │   │   │   └── ScriptsFromFile.unity.meta
│   │   │   ├── 02_ScriptsFromFile.meta
│   │   │   ├── 03_CallLuaFunction/
│   │   │   │   ├── CallLuaFunction.cs
│   │   │   │   ├── CallLuaFunction.cs.meta
│   │   │   │   ├── CallLuaFunction.unity
│   │   │   │   └── CallLuaFunction.unity.meta
│   │   │   ├── 03_CallLuaFunction.meta
│   │   │   ├── 04_AccessingLuaVariables/
│   │   │   │   ├── AccessingLuaVariables.cs
│   │   │   │   ├── AccessingLuaVariables.cs.meta
│   │   │   │   ├── AccessingLuaVariables.unity
│   │   │   │   └── AccessingLuaVariables.unity.meta
│   │   │   ├── 04_AccessingLuaVariables.meta
│   │   │   ├── 05_LuaCoroutine/
│   │   │   │   ├── LuaCoroutine.unity
│   │   │   │   ├── LuaCoroutine.unity.meta
│   │   │   │   ├── TestCoroutine.cs
│   │   │   │   └── TestCoroutine.cs.meta
│   │   │   ├── 05_LuaCoroutine.meta
│   │   │   ├── 06_LuaCoroutine2/
│   │   │   │   ├── Coroutine.unity
│   │   │   │   ├── Coroutine.unity.meta
│   │   │   │   ├── TestCoroutine2.cs
│   │   │   │   └── TestCoroutine2.cs.meta
│   │   │   ├── 06_LuaCoroutine2.meta
│   │   │   ├── 07_LuaThread/
│   │   │   │   ├── TestLuaThread.cs
│   │   │   │   ├── TestLuaThread.cs.meta
│   │   │   │   ├── TestThread.unity
│   │   │   │   └── TestThread.unity.meta
│   │   │   ├── 07_LuaThread.meta
│   │   │   ├── 08_AccessingArray/
│   │   │   │   ├── AccessingArray.cs
│   │   │   │   ├── AccessingArray.cs.meta
│   │   │   │   ├── AccessingArray.unity
│   │   │   │   └── AccessingArray.unity.meta
│   │   │   ├── 08_AccessingArray.meta
│   │   │   ├── 09_Dictionary/
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccountWrap.cs
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccountWrap.cs.meta
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccount_KeyCollectionWrap.cs
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccount_KeyCollectionWrap.cs.meta
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccount_ValueCollectionWrap.cs
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccount_ValueCollectionWrap.cs.meta
│   │   │   │   ├── System_Collections_Generic_KeyValuePair_int_TestAccountWrap.cs
│   │   │   │   ├── System_Collections_Generic_KeyValuePair_int_TestAccountWrap.cs.meta
│   │   │   │   ├── TestAccountWrap.cs
│   │   │   │   ├── TestAccountWrap.cs.meta
│   │   │   │   ├── UseDictionary.cs
│   │   │   │   ├── UseDictionary.cs.meta
│   │   │   │   ├── UseDictionary.unity
│   │   │   │   └── UseDictionary.unity.meta
│   │   │   ├── 09_Dictionary.meta
│   │   │   ├── 10_Enum/
│   │   │   │   ├── AccessingEnum.cs
│   │   │   │   ├── AccessingEnum.cs.meta
│   │   │   │   ├── AccessingEnum.unity
│   │   │   │   └── AccessingEnum.unity.meta
│   │   │   ├── 10_Enum.meta
│   │   │   ├── 11_Delegate/
│   │   │   │   ├── TestDelegate.cs
│   │   │   │   ├── TestDelegate.cs.meta
│   │   │   │   ├── TestEventListener.cs
│   │   │   │   ├── TestEventListener.cs.meta
│   │   │   │   ├── TestEventListenerWrap.cs
│   │   │   │   ├── TestEventListenerWrap.cs.meta
│   │   │   │   ├── UseDelegate.unity
│   │   │   │   └── UseDelegate.unity.meta
│   │   │   ├── 11_Delegate.meta
│   │   │   ├── 12_GameObject/
│   │   │   │   ├── TestGameObject.cs
│   │   │   │   ├── TestGameObject.cs.meta
│   │   │   │   ├── TestGameObject.unity
│   │   │   │   └── TestGameObject.unity.meta
│   │   │   ├── 12_GameObject.meta
│   │   │   ├── 13_CustomLoader/
│   │   │   │   ├── CustomLoader.unity
│   │   │   │   ├── CustomLoader.unity.meta
│   │   │   │   ├── TestCustomLoader.cs
│   │   │   │   └── TestCustomLoader.cs.meta
│   │   │   ├── 13_CustomLoader.meta
│   │   │   ├── 14_Out/
│   │   │   │   ├── TestOut.unity
│   │   │   │   ├── TestOut.unity.meta
│   │   │   │   ├── TestOutArg.cs
│   │   │   │   └── TestOutArg.cs.meta
│   │   │   ├── 14_Out.meta
│   │   │   ├── 15_ProtoBuffer/
│   │   │   │   ├── ProtoBuffer.unity
│   │   │   │   ├── ProtoBuffer.unity.meta
│   │   │   │   ├── TestProtoBuffer.cs
│   │   │   │   ├── TestProtoBuffer.cs.meta
│   │   │   │   ├── TestProtol.cs
│   │   │   │   ├── TestProtol.cs.meta
│   │   │   │   ├── TestProtolWrap.cs
│   │   │   │   ├── TestProtolWrap.cs.meta
│   │   │   │   ├── common.proto
│   │   │   │   ├── common.proto.meta
│   │   │   │   ├── person.proto
│   │   │   │   └── person.proto.meta
│   │   │   ├── 15_ProtoBuffer.meta
│   │   │   ├── 16_Int64/
│   │   │   │   ├── TestInt64.cs
│   │   │   │   ├── TestInt64.cs.meta
│   │   │   │   ├── TestInt64.unity
│   │   │   │   └── TestInt64.unity.meta
│   │   │   ├── 16_Int64.meta
│   │   │   ├── 17_Inherit/
│   │   │   │   ├── Inherit.unity
│   │   │   │   ├── Inherit.unity.meta
│   │   │   │   ├── TestInherit.cs
│   │   │   │   └── TestInherit.cs.meta
│   │   │   ├── 17_Inherit.meta
│   │   │   ├── 18_Bundle/
│   │   │   │   ├── TesetAssetBundle.unity
│   │   │   │   ├── TesetAssetBundle.unity.meta
│   │   │   │   ├── TestABLoader.cs
│   │   │   │   └── TestABLoader.cs.meta
│   │   │   ├── 18_Bundle.meta
│   │   │   ├── 19_cjson/
│   │   │   │   ├── TestCJson.cs
│   │   │   │   ├── TestCJson.cs.meta
│   │   │   │   ├── testcjson.unity
│   │   │   │   └── testcjson.unity.meta
│   │   │   ├── 19_cjson.meta
│   │   │   ├── 20_utf8/
│   │   │   │   ├── TestUTF8.cs
│   │   │   │   ├── TestUTF8.cs.meta
│   │   │   │   ├── utf8.unity
│   │   │   │   └── utf8.unity.meta
│   │   │   ├── 20_utf8.meta
│   │   │   ├── 21_String/
│   │   │   │   ├── TestString.cs
│   │   │   │   ├── TestString.cs.meta
│   │   │   │   ├── TestString.unity
│   │   │   │   └── TestString.unity.meta
│   │   │   ├── 21_String.meta
│   │   │   ├── 22_Reflection/
│   │   │   │   ├── TestReflection.cs
│   │   │   │   ├── TestReflection.cs.meta
│   │   │   │   ├── TestReflection.unity
│   │   │   │   └── TestReflection.unity.meta
│   │   │   ├── 22_Reflection.meta
│   │   │   ├── 23_List/
│   │   │   │   ├── UseList.cs
│   │   │   │   ├── UseList.cs.meta
│   │   │   │   ├── UseList.unity
│   │   │   │   └── UseList.unity.meta
│   │   │   ├── 23_List.meta
│   │   │   ├── 24_Struct/
│   │   │   │   ├── PassStruct.cs
│   │   │   │   ├── PassStruct.cs.meta
│   │   │   │   ├── Struct.unity
│   │   │   │   └── Struct.unity.meta
│   │   │   ├── 24_Struct.meta
│   │   │   ├── Performance/
│   │   │   │   ├── Performance.unity
│   │   │   │   ├── Performance.unity.meta
│   │   │   │   ├── TestPerformance.cs
│   │   │   │   └── TestPerformance.cs.meta
│   │   │   ├── Performance.meta
│   │   │   ├── README.md
│   │   │   ├── README.md.meta
│   │   │   ├── Resources/
│   │   │   │   ├── Lua/
│   │   │   │   │   ├── Protol/
│   │   │   │   │   │   ├── common_pb.lua.bytes
│   │   │   │   │   │   ├── common_pb.lua.bytes.meta
│   │   │   │   │   │   ├── person_pb.lua.bytes
│   │   │   │   │   │   └── person_pb.lua.bytes.meta
│   │   │   │   │   ├── Protol.meta
│   │   │   │   │   ├── TestErrorStack.lua.bytes
│   │   │   │   │   ├── TestErrorStack.lua.bytes.meta
│   │   │   │   │   ├── TestLoader.lua.bytes
│   │   │   │   │   ├── TestLoader.lua.bytes.meta
│   │   │   │   │   ├── TestLuaCoroutine.lua.bytes
│   │   │   │   │   ├── TestLuaCoroutine.lua.bytes.meta
│   │   │   │   │   ├── TestPerf.lua.bytes
│   │   │   │   │   ├── TestPerf.lua.bytes.meta
│   │   │   │   │   ├── ToLuaInjectionTestInjector.lua.bytes
│   │   │   │   │   └── ToLuaInjectionTestInjector.lua.bytes.meta
│   │   │   │   ├── Lua.meta
│   │   │   │   ├── jsonexample.json
│   │   │   │   └── jsonexample.json.meta
│   │   │   ├── Resources.meta
│   │   │   ├── TestErrorStack/
│   │   │   │   ├── TestInstantiate.cs
│   │   │   │   ├── TestInstantiate.cs.meta
│   │   │   │   ├── TestInstantiate.prefab
│   │   │   │   ├── TestInstantiate.prefab.meta
│   │   │   │   ├── TestInstantiate2.cs
│   │   │   │   ├── TestInstantiate2.cs.meta
│   │   │   │   ├── TestInstantiate2.prefab
│   │   │   │   ├── TestInstantiate2.prefab.meta
│   │   │   │   ├── TestLuaStack.cs
│   │   │   │   ├── TestLuaStack.cs.meta
│   │   │   │   ├── TestLuaStack.unity
│   │   │   │   └── TestLuaStack.unity.meta
│   │   │   ├── TestErrorStack.meta
│   │   │   ├── TestInjection/
│   │   │   │   ├── BaseTestWrap.cs
│   │   │   │   ├── BaseTestWrap.cs.meta
│   │   │   │   ├── TestInjection.cs
│   │   │   │   ├── TestInjection.cs.meta
│   │   │   │   ├── TestInjection.unity
│   │   │   │   ├── TestInjection.unity.meta
│   │   │   │   ├── ToLuaInjectionTest.cs
│   │   │   │   ├── ToLuaInjectionTest.cs.meta
│   │   │   │   ├── ToLuaInjectionTestWrap.cs
│   │   │   │   └── ToLuaInjectionTestWrap.cs.meta
│   │   │   ├── TestInjection.meta
│   │   │   ├── TestOverload/
│   │   │   │   ├── TestExportWrap.cs
│   │   │   │   ├── TestExportWrap.cs.meta
│   │   │   │   ├── TestExport_SpaceWrap.cs
│   │   │   │   ├── TestExport_SpaceWrap.cs.meta
│   │   │   │   ├── TestOverload.cs
│   │   │   │   ├── TestOverload.cs.meta
│   │   │   │   ├── TestOverload.unity
│   │   │   │   └── TestOverload.unity.meta
│   │   │   └── TestOverload.meta
│   │   ├── Examples.meta
│   │   ├── Injection/
│   │   │   ├── Editor/
│   │   │   │   ├── CustomCecilRocks/
│   │   │   │   │   ├── MethodBodyRocks.cs
│   │   │   │   │   └── MethodBodyRocks.cs.meta
│   │   │   │   ├── CustomCecilRocks.meta
│   │   │   │   ├── ToLuaInjection.cs
│   │   │   │   ├── ToLuaInjection.cs.meta
│   │   │   │   ├── ToLuaInjectionHelper.cs
│   │   │   │   ├── ToLuaInjectionHelper.cs.meta
│   │   │   │   ├── ToLuaText.cs
│   │   │   │   ├── ToLuaText.cs.meta
│   │   │   │   ├── ToluaInjectionBlackListPanel.cs
│   │   │   │   └── ToluaInjectionBlackListPanel.cs.meta
│   │   │   ├── Editor.meta
│   │   │   ├── InjectionBlackList.txt
│   │   │   ├── InjectionBlackList.txt.meta
│   │   │   ├── InjectionBridgeEditorInfo.xml
│   │   │   ├── InjectionBridgeEditorInfo.xml.meta
│   │   │   ├── LuaInjectionSkipPaths.txt
│   │   │   ├── LuaInjectionSkipPaths.txt.meta
│   │   │   ├── LuaInjectionStation.cs
│   │   │   └── LuaInjectionStation.cs.meta
│   │   ├── Injection.meta
│   │   ├── Lua/
│   │   │   ├── Build.bat
│   │   │   ├── Build.bat.meta
│   │   │   ├── System/
│   │   │   │   ├── Injection/
│   │   │   │   │   ├── InjectionBridgeInfo.lua
│   │   │   │   │   ├── InjectionBridgeInfo.lua.meta
│   │   │   │   │   ├── LuaInjectionBus.lua
│   │   │   │   │   ├── LuaInjectionBus.lua.meta
│   │   │   │   │   ├── LuaInjectionStation.lua
│   │   │   │   │   └── LuaInjectionStation.lua.meta
│   │   │   │   ├── Injection.meta
│   │   │   │   ├── Reflection/
│   │   │   │   │   ├── BindingFlags.lua
│   │   │   │   │   └── BindingFlags.lua.meta
│   │   │   │   ├── Reflection.meta
│   │   │   │   ├── Timer.lua
│   │   │   │   ├── Timer.lua.meta
│   │   │   │   ├── ValueType.lua
│   │   │   │   ├── ValueType.lua.meta
│   │   │   │   ├── coroutine.lua
│   │   │   │   └── coroutine.lua.meta
│   │   │   ├── System.meta
│   │   │   ├── UnityEngine/
│   │   │   │   ├── Bounds.lua
│   │   │   │   ├── Bounds.lua.meta
│   │   │   │   ├── Color.lua
│   │   │   │   ├── Color.lua.meta
│   │   │   │   ├── Color32.lua
│   │   │   │   ├── Color32.lua.meta
│   │   │   │   ├── LayerMask.lua
│   │   │   │   ├── LayerMask.lua.meta
│   │   │   │   ├── Mathf.lua
│   │   │   │   ├── Mathf.lua.meta
│   │   │   │   ├── Plane.lua
│   │   │   │   ├── Plane.lua.meta
│   │   │   │   ├── Profiler.lua
│   │   │   │   ├── Profiler.lua.meta
│   │   │   │   ├── Quaternion.lua
│   │   │   │   ├── Quaternion.lua.meta
│   │   │   │   ├── Ray.lua
│   │   │   │   ├── Ray.lua.meta
│   │   │   │   ├── RaycastHit.lua
│   │   │   │   ├── RaycastHit.lua.meta
│   │   │   │   ├── Time.lua
│   │   │   │   ├── Time.lua.meta
│   │   │   │   ├── Touch.lua
│   │   │   │   ├── Touch.lua.meta
│   │   │   │   ├── Vector2.lua
│   │   │   │   ├── Vector2.lua.meta
│   │   │   │   ├── Vector3.lua
│   │   │   │   ├── Vector3.lua.meta
│   │   │   │   ├── Vector4.lua
│   │   │   │   └── Vector4.lua.meta
│   │   │   ├── UnityEngine.meta
│   │   │   ├── cjson/
│   │   │   │   ├── util.lua
│   │   │   │   └── util.lua.meta
│   │   │   ├── cjson.meta
│   │   │   ├── event.lua
│   │   │   ├── event.lua.meta
│   │   │   ├── jit/
│   │   │   │   ├── bc.lua
│   │   │   │   ├── bc.lua.meta
│   │   │   │   ├── bcsave.lua
│   │   │   │   ├── bcsave.lua.meta
│   │   │   │   ├── dis_arm.lua
│   │   │   │   ├── dis_arm.lua.meta
│   │   │   │   ├── dis_arm64.lua
│   │   │   │   ├── dis_arm64.lua.meta
│   │   │   │   ├── dis_arm64be.lua
│   │   │   │   ├── dis_arm64be.lua.meta
│   │   │   │   ├── dis_mips.lua
│   │   │   │   ├── dis_mips.lua.meta
│   │   │   │   ├── dis_mips64.lua
│   │   │   │   ├── dis_mips64.lua.meta
│   │   │   │   ├── dis_mips64el.lua
│   │   │   │   ├── dis_mips64el.lua.meta
│   │   │   │   ├── dis_mipsel.lua
│   │   │   │   ├── dis_mipsel.lua.meta
│   │   │   │   ├── dis_ppc.lua
│   │   │   │   ├── dis_ppc.lua.meta
│   │   │   │   ├── dis_x64.lua
│   │   │   │   ├── dis_x64.lua.meta
│   │   │   │   ├── dis_x86.lua
│   │   │   │   ├── dis_x86.lua.meta
│   │   │   │   ├── dump.lua
│   │   │   │   ├── dump.lua.meta
│   │   │   │   ├── p.lua
│   │   │   │   ├── p.lua.meta
│   │   │   │   ├── v.lua
│   │   │   │   ├── v.lua.meta
│   │   │   │   ├── zone.lua
│   │   │   │   └── zone.lua.meta
│   │   │   ├── jit.meta
│   │   │   ├── list.lua
│   │   │   ├── list.lua.meta
│   │   │   ├── lpeg/
│   │   │   │   ├── re.lua
│   │   │   │   └── re.lua.meta
│   │   │   ├── lpeg.meta
│   │   │   ├── ltn12.lua
│   │   │   ├── ltn12.lua.meta
│   │   │   ├── mime.lua
│   │   │   ├── mime.lua.meta
│   │   │   ├── misc/
│   │   │   │   ├── functions.lua
│   │   │   │   ├── functions.lua.meta
│   │   │   │   ├── strict.lua
│   │   │   │   ├── strict.lua.meta
│   │   │   │   ├── utf8.lua
│   │   │   │   └── utf8.lua.meta
│   │   │   ├── misc.meta
│   │   │   ├── pbc.meta
│   │   │   ├── protobuf/
│   │   │   │   ├── containers.lua
│   │   │   │   ├── containers.lua.meta
│   │   │   │   ├── decoder.lua
│   │   │   │   ├── decoder.lua.meta
│   │   │   │   ├── descriptor.lua
│   │   │   │   ├── descriptor.lua.meta
│   │   │   │   ├── encoder.lua
│   │   │   │   ├── encoder.lua.meta
│   │   │   │   ├── listener.lua
│   │   │   │   ├── listener.lua.meta
│   │   │   │   ├── protobuf.lua
│   │   │   │   ├── protobuf.lua.meta
│   │   │   │   ├── text_format.lua
│   │   │   │   ├── text_format.lua.meta
│   │   │   │   ├── type_checkers.lua
│   │   │   │   ├── type_checkers.lua.meta
│   │   │   │   ├── wire_format.lua
│   │   │   │   └── wire_format.lua.meta
│   │   │   ├── protobuf.meta
│   │   │   ├── slot.lua
│   │   │   ├── slot.lua.meta
│   │   │   ├── socket/
│   │   │   │   ├── ftp.lua
│   │   │   │   ├── ftp.lua.meta
│   │   │   │   ├── headers.lua
│   │   │   │   ├── headers.lua.meta
│   │   │   │   ├── http.lua
│   │   │   │   ├── http.lua.meta
│   │   │   │   ├── mbox.lua
│   │   │   │   ├── mbox.lua.meta
│   │   │   │   ├── smtp.lua
│   │   │   │   ├── smtp.lua.meta
│   │   │   │   ├── tp.lua
│   │   │   │   ├── tp.lua.meta
│   │   │   │   ├── url.lua
│   │   │   │   └── url.lua.meta
│   │   │   ├── socket.lua
│   │   │   ├── socket.lua.meta
│   │   │   ├── socket.meta
│   │   │   ├── tolua.lua
│   │   │   ├── tolua.lua.meta
│   │   │   ├── typeof.lua
│   │   │   └── typeof.lua.meta
│   │   ├── Lua.meta
│   │   ├── Misc/
│   │   │   ├── LuaClient.cs
│   │   │   ├── LuaClient.cs.meta
│   │   │   ├── LuaCoroutine.cs
│   │   │   ├── LuaCoroutine.cs.meta
│   │   │   ├── LuaLooper.cs
│   │   │   ├── LuaLooper.cs.meta
│   │   │   ├── LuaProfiler.cs
│   │   │   ├── LuaProfiler.cs.meta
│   │   │   ├── LuaResLoader.cs
│   │   │   └── LuaResLoader.cs.meta
│   │   ├── Misc.meta
│   │   ├── Reflection/
│   │   │   ├── LuaConstructor.cs
│   │   │   ├── LuaConstructor.cs.meta
│   │   │   ├── LuaField.cs
│   │   │   ├── LuaField.cs.meta
│   │   │   ├── LuaMethod.cs
│   │   │   ├── LuaMethod.cs.meta
│   │   │   ├── LuaProperty.cs
│   │   │   ├── LuaProperty.cs.meta
│   │   │   ├── LuaReflection.cs
│   │   │   └── LuaReflection.cs.meta
│   │   ├── Reflection.meta
│   │   ├── readme.txt
│   │   └── readme.txt.meta
│   ├── ToLua.meta
│   ├── link.xml
│   └── link.xml.meta
├── LICENSE-tolua
├── Luajit/
│   ├── Build.bat
│   └── jit/
│       ├── bc.lua
│       ├── bcsave.lua
│       ├── dis_arm.lua
│       ├── dis_arm64.lua
│       ├── dis_arm64be.lua
│       ├── dis_mips.lua
│       ├── dis_mips64.lua
│       ├── dis_mips64el.lua
│       ├── dis_mipsel.lua
│       ├── dis_ppc.lua
│       ├── dis_x64.lua
│       ├── dis_x86.lua
│       ├── dump.lua
│       ├── p.lua
│       ├── v.lua
│       ├── vmdef.lua
│       └── zone.lua
├── Luajit64/
│   ├── Build.bat
│   └── jit/
│       ├── bc.lua
│       ├── bcsave.lua
│       ├── dis_arm.lua
│       ├── dis_arm64.lua
│       ├── dis_arm64be.lua
│       ├── dis_mips.lua
│       ├── dis_mips64.lua
│       ├── dis_mips64el.lua
│       ├── dis_mipsel.lua
│       ├── dis_ppc.lua
│       ├── dis_x64.lua
│       ├── dis_x86.lua
│       ├── dump.lua
│       ├── p.lua
│       ├── v.lua
│       ├── vmdef.lua
│       └── zone.lua
├── README-tolua.md
├── README.md
├── Tools/
│   ├── CSharpLua/
│   │   ├── CSharp.lua/
│   │   │   ├── CSharp.lua.Launcher.deps.json
│   │   │   ├── CSharp.lua.Launcher.pdb
│   │   │   ├── CSharp.lua.Launcher.runtimeconfig.json
│   │   │   ├── CSharp.lua.pdb
│   │   │   └── System.xml
│   │   ├── UnityEngine.xml
│   │   ├── codes/
│   │   │   └── All.lua
│   │   ├── disable_track.bat
│   │   ├── enable_track.bat
│   │   └── update_csharp.lua.cmd
│   └── ProtobufGen/
│       ├── protobuf-net/
│       │   ├── Licence.txt
│       │   ├── common.xslt
│       │   ├── csharp.xslt
│       │   ├── descriptor.proto
│       │   ├── protobuf-net.xml
│       │   ├── protoc-license.txt
│       │   ├── protogen.exe.config
│       │   ├── vb.xslt
│       │   └── xml.xslt
│       └── protogen.bat
└── Unity5.x/
    └── Assets/
        └── Plugins/
            ├── Android/
            │   └── libs/
            │       ├── armeabi-v7a/
            │       │   └── libtolua.so.meta
            │       └── x86/
            │           └── libtolua.so.meta
            ├── iOS/
            │   └── libtolua.a.meta
            ├── tolua.bundle.meta
            ├── x86/
            │   └── tolua.dll.meta
            └── x86_64/
                └── tolua.dll.meta

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/

# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj

# Unity3D generated meta files
*.pidb.meta

# Unity3D Generated File On Crash Reports
sysinfo.txt
/Assets/UnityVS.meta
/Assets/UnityVS
/UnityVS.tolua.v11.suo
/UnityVS.tolua.CSharp.csproj
/UnityVS.tolua.CSharp.Editor.csproj
/UnityVS.tolua.sln

.vs/
Packages
ProjectSettings
/Assets/Source/Generate
/Assets/CSharpLuaTemp
/Assets/CSharpLuaTemp.meta
/Assets/Lua/.idea/
/Assets/.lpproj
/Assets/ThirdParty/
/Assets/ThirdParty.meta
LuaDebuggee.dll

================================================
FILE: Assets/CSharpLua/Base/BaseScripts.asmdef
================================================
{
    "name": "Base",
    "references": [],
    "optionalUnityReferences": [],
    "includePlatforms": [],
    "excludePlatforms": [],
    "allowUnsafeCode": false
}

================================================
FILE: Assets/CSharpLua/Base/BaseScripts.asmdef.meta
================================================
fileFormatVersion: 2
guid: a74114e4c2e22e5439cffab27da66e88
AssemblyDefinitionImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Base/CSharpLua/BaseUtility.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;

namespace CSharpLua {
  public interface IProvider {
    void ConvertCustomMonoBehaviour(ref GameObject prefab);
  }

  public static class BaseUtility {
    public static IProvider Provider { get; set; }
  }
}


================================================
FILE: Assets/CSharpLua/Base/CSharpLua/BaseUtility.cs.meta
================================================
fileFormatVersion: 2
guid: 926b10807f8340942925508454855bca
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Base/CSharpLua/LuaAutoWrapAttribute.cs
================================================
using System;

/// <summary>
/// 加入此标记,可以自动添加到导出列表
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Enum | AttributeTargets.Struct)]
public class LuaAutoWrapAttribute : Attribute {
  public LuaAutoWrapAttribute() { }
}


================================================
FILE: Assets/CSharpLua/Base/CSharpLua/LuaAutoWrapAttribute.cs.meta
================================================
fileFormatVersion: 2
guid: dafb7d14d4c87b74da4e18fb257c904d
timeCreated: 1526898161
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Base/CSharpLua/Settings.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

using UnityEngine;

namespace CSharpLua {
  public static class Settings {
#if UNITY_EDITOR
    public static class Paths {
      public static readonly string CompiledScriptDir = Application.dataPath + "/CSharpLua/Compiled";
      public static readonly string CompiledOutDir = Application.dataPath + "/Lua/Compiled";
      public static readonly string ToolsDir = Application.dataPath + "/../Tools";
      public const string kTempDir = "Assets/CSharpLuaTemp";
      public const string kCompiledScripts = "Compiled";
      public static readonly string SettingFilePath = Application.dataPath + "/CSharpLua/Base/CSharpLua/Settings.cs";
    }

    public static class Menus {
      public const string kCompile = "CharpLua/Compile";
      public const string kRunFromCSharp = "CharpLua/Switch to RunFromCSharp";
      public const string kRunFromLua = "CharpLua/Swicth to RunFromLua";
      public const string kGenProtobuf = "CharpLua/Gen protobuf";
    }
#endif

    public const bool kIsRunFromLua = true;
  }
}


================================================
FILE: Assets/CSharpLua/Base/CSharpLua/Settings.cs.meta
================================================
fileFormatVersion: 2
guid: 3496baf3649572f44b1d70ef854e729f
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Base/CSharpLua.meta
================================================
fileFormatVersion: 2
guid: 344556a0bba10b744aceb8f65773392e
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Base.meta
================================================
fileFormatVersion: 2
guid: 58354dbb9d958af4399ff1a50246b611
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Bridge/BridgeScripts.asmdef
================================================
{
    "name": "Bridge",
    "references": [
        "Base"
    ],
    "optionalUnityReferences": [],
    "includePlatforms": [],
    "excludePlatforms": [],
    "allowUnsafeCode": false
}

================================================
FILE: Assets/CSharpLua/Bridge/BridgeScripts.asmdef.meta
================================================
fileFormatVersion: 2
guid: 4c78da7caad00b44ea75ddb210bf7528
AssemblyDefinitionImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Bridge/TestUtils.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using UnityEngine;
using UnityEditor;

[LuaAutoWrap]
public sealed class TestUtils {
  public static GameObject Load(string path) {
    GameObject prefab = (GameObject)AssetDatabase.LoadMainAssetAtPath(path);
    CSharpLua.BaseUtility.Provider.ConvertCustomMonoBehaviour(ref prefab);
    return prefab;
  }
}

================================================
FILE: Assets/CSharpLua/Bridge/TestUtils.cs.meta
================================================
fileFormatVersion: 2
guid: 0f7832487e5e88a47b620e14661a1e00
timeCreated: 1528447325
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Bridge.meta
================================================
fileFormatVersion: 2
guid: d5c23c299d89e9f47a02659740280a56
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/CSharpLuaClient.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using UnityEngine;
using LuaInterface;

namespace CSharpLua {
  [LuaAutoWrap]
  public sealed class BridgeMonoBehaviour : MonoBehaviour {
    private static readonly YieldInstruction[] updateYieldInstructions_ = new YieldInstruction[] { null, new WaitForFixedUpdate(), new WaitForEndOfFrame() };

    public LuaTable Table { get; private set; }
    public string LuaClass;
    public string SerializeData;
    public UnityEngine.Object[] SerializeObjects;

    public void Bind(LuaTable table, string luaClass) {
      Table = table;
      LuaClass = luaClass;
    }

    public void Bind(LuaTable table) {
      Table = table;
    }

    internal void Bind(string luaClass, string serializeData, UnityEngine.Object[] serializeObjects) {
      LuaClass = luaClass;
      SerializeData = serializeData;
      SerializeObjects = serializeObjects;
    }

    public void RegisterUpdate(int instructionIndex, LuaFunction updateFn) {
      StartCoroutine(StartUpdate(updateFn, updateYieldInstructions_[instructionIndex]));
    }

    private IEnumerator StartUpdate(LuaFunction updateFn, YieldInstruction yieldInstruction) {
      while (true) {
        yield return yieldInstruction;
        updateFn.Call(Table);
      }
    }

    private void Awake() {
      if (!string.IsNullOrEmpty(LuaClass)) {
        if (Table == null) {
          Table = CSharpLuaClient.Instance.BindLua(this);
        } else {
          using (var fn = Table.GetLuaFunction("Awake")) {
            fn.Call(Table);
          }
        }
      }
    }

    private void Start() {
      using (var fn = Table.GetLuaFunction("Start")) {
        fn.Call(Table);
      }
    }
  }

  internal sealed class LuaIEnumerator : IEnumerator, IDisposable {
    private LuaTable table_;
    private LuaFunction current_;
    private LuaFunction moveNext_;

    private LuaIEnumerator(LuaTable table) {
      table_ = table;
      current_ = table.GetLuaFunction("getCurrent");
      if (current_ == null) {
        throw new ArgumentNullException();
      }
      moveNext_ = table.GetLuaFunction("MoveNext");
      if (moveNext_ == null) {
        throw new ArgumentNullException();
      }
    }

    public static LuaIEnumerator Create(LuaTable table) {
      var ret = table.GetTable<LuaIEnumerator>("ref");
      if (ret == null) {
        ret = new LuaIEnumerator(table);
        table.SetTable("ref", ret);
      }
      return ret;
    }

    public void Push(IntPtr L) {
      table_.Push();
    }

    public object Current {
      get {
        object obj = current_.Invoke<LuaTable, object>(table_);
        var t = obj as LuaTable;
        if (t != null && CSharpLuaClient.Instance.IsLuaIEnumerator(t)) {
          return Create(t);
        }
        return obj;
      }
    }

    public void Dispose() {
      if (current_ != null) {
        current_.Dispose();
        current_ = null;
      }

      if (moveNext_ != null) {
        moveNext_.Dispose();
        moveNext_ = null;
      }

      if (table_ != null) {
        table_.Dispose();
        table_ = null;
      }
    }

    public bool MoveNext() {
      bool hasNext = moveNext_.Invoke<LuaTable, bool>(table_);
      if (!hasNext) {
        Dispose();
      }
      return hasNext;
    }

    public void Reset() {
      throw new NotSupportedException();
    }
  }

  public class CSharpLuaClient : LuaClient, IProvider {
    public string[] Components;
    private LuaFunction bindFn_;
    private LuaFunction isIEnumeratorFn_;
    public static new CSharpLuaClient Instance { get { return (CSharpLuaClient)LuaClient.Instance; } }

    protected override void OpenLibs() {
      base.OpenLibs();
      OpenCJson();
      OpenPBC();
    }

    private void OpenPBC() {
      luaState.OpenLibs(LuaDLL.luaopen_protobuf_c);
    }

    public override void Destroy() {
      if (bindFn_ != null) {
        bindFn_.Dispose();
        bindFn_ = null;
      }
      if (isIEnumeratorFn_ != null) {
        isIEnumeratorFn_.Dispose();
        isIEnumeratorFn_ = null;
      }
      base.Destroy();
      BaseUtility.Provider = null;
    }

    protected override void StartMain() {
      BaseUtility.Provider = this;

      if (Settings.kIsRunFromLua) {
        base.StartMain();
        bindFn_ = luaState.GetFunction("UnityEngine.bind");
        if (bindFn_ == null) {
          throw new InvalidProgramException();
        }
        if (Components != null && Components.Length > 0) {
          using (var fn = luaState.GetFunction("UnityEngine.addComponent")) {
            foreach (string type in Components) {
              fn.Call(gameObject, type);
            }
          }
        }
      } else {
#pragma warning disable 0162
        if (Components != null) {
          foreach (string type in Components) {
            Type componentType = Type.GetType(type, true, false);
            gameObject.AddComponent(componentType);
          }
        }
#pragma warning restore 0162
      }
    }

    internal LuaTable BindLua(BridgeMonoBehaviour bridgeMonoBehaviour) {
      return bindFn_.Invoke<BridgeMonoBehaviour, string, string, UnityEngine.Object[], LuaTable>(
        bridgeMonoBehaviour,
        bridgeMonoBehaviour.LuaClass,
        bridgeMonoBehaviour.SerializeData,
        bridgeMonoBehaviour.SerializeObjects);
    }

    internal bool IsLuaIEnumerator(LuaTable t) {
      if (isIEnumeratorFn_ == null) {
        isIEnumeratorFn_ = luaState.GetFunction("System.IsIEnumerator");
        if (isIEnumeratorFn_ == null) {
          throw new InvalidProgramException();
        }
      }
      return isIEnumeratorFn_.Invoke<LuaTable, bool>(t);
    }


    public void ConvertCustomMonoBehaviour(ref GameObject prefab) {
#if UNITY_EDITOR
      if (Settings.kIsRunFromLua) {
        UserMonoBehaviourConverter.Default.Do(ref prefab);
      }
#endif
    }
  }
}



================================================
FILE: Assets/CSharpLua/CSharpLuaClient.cs.meta
================================================
fileFormatVersion: 2
guid: 1c379516c224fca4198f4de0962735e4
timeCreated: 1528271831
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/CompiledScripts.asmdef
================================================
{
  "name": "Compiled",
  "references": [
    "Bridge"
  ],
  "optionalUnityReferences": [],
  "includePlatforms": [],
  "excludePlatforms": [],
  "allowUnsafeCode": false
}

================================================
FILE: Assets/CSharpLua/Compiled/CompiledScripts.asmdef.meta
================================================
fileFormatVersion: 2
guid: 55be9d1390aba8646b0237dae609af2e
AssemblyDefinitionImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/Protocol/AutoGen/CommonPrototype.cs
================================================
//------------------------------------------------------------------------------
// <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>
//------------------------------------------------------------------------------

// Generated from: CommonPrototype.proto

using System;   
using System.Collections.Generic;
using ProtoBuf;
    
namespace CSharpLua.Project.Protocol
{
  [ProtoContract]
  public partial class SettingProto : IProtocol
  { 
    [ProtoMember(1, DataFormat = DataFormat.Default)]
    public List<CSharpLua.Project.Protocol.SettingProto.ValuePairProto> Values { get; set; } = new List<CSharpLua.Project.Protocol.SettingProto.ValuePairProto>();
  
    [ProtoMember(2, IsRequired = true, DataFormat = DataFormat.TwosComplement)]
    public int SettingsMark { get; set; }
    
  [ProtoContract]
  public partial class ValuePairProto : IProtocol
  { 
    [ProtoMember(1, IsRequired = true, DataFormat = DataFormat.Default)]
    public string Key { get; set; }
    
    [ProtoMember(2, IsRequired = true, DataFormat = DataFormat.Default)]
    public string Value { get; set; }
    
  }
  
  }
  
}

================================================
FILE: Assets/CSharpLua/Compiled/Protocol/AutoGen/CommonPrototype.cs.meta
================================================
fileFormatVersion: 2
guid: 78debcec0b8758e4b9dbde7b10c1128a
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/Protocol/AutoGen.meta
================================================
fileFormatVersion: 2
guid: b7e6a6d4681331a47b4a8f5228a03018
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/Protocol/CommonPrototype.proto
================================================
package CSharpLua.Project.Protocol;

message SettingProto {
  message ValuePairProto {
    required string Key = 1;
    required string Value = 2;
  }

  repeated ValuePairProto Values = 1;         
  required int32 SettingsMark = 2;
}




================================================
FILE: Assets/CSharpLua/Compiled/Protocol/CommonPrototype.proto.meta
================================================
fileFormatVersion: 2
guid: 07f5e97e19969f74dbd315423dbc49fb
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/Protocol/IProtocol.cs
================================================
namespace ProtoBuf {
  public interface IProtocol {
  }
}

================================================
FILE: Assets/CSharpLua/Compiled/Protocol/IProtocol.cs.meta
================================================
fileFormatVersion: 2
guid: 3e84cedf7f75dd1488cd80392079610f
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/Protocol.meta
================================================
fileFormatVersion: 2
guid: e27d3b48940561d4b86687784d596098
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/Sample/TestCoroutine.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using UnityEngine;

namespace Sample {
  public class TestCoroutine : MonoBehaviour {
    private List<int> list = new List<int>();

    public void Awake() {
      Debug.Log("TestCoroutine");
      StartCoroutine(OnTick());
      print(gameObject.name);
      print(list.Count);
      StartCoroutine(T1());
    }

    private IEnumerator OnTick() {
      while (true) {
        yield return new WaitForSeconds(1);
        print("TestCoroutine.OnTick");
      }
    }

    public void Test() {
      print("TestCoroutine.Test");
    }


    private IEnumerator T1() {
      print("a0");
      yield return null;
      print("a1");
      yield return T2();
      print("a2");
    }

    private IEnumerator T2() {
      print("b0");
      yield return null;
      print("b1");
      yield return null;
      print("b2");
    }
  }
}


================================================
FILE: Assets/CSharpLua/Compiled/Sample/TestCoroutine.cs.meta
================================================
fileFormatVersion: 2
guid: 729f6a41b84190a4ea3b9a09e6fa57a7
timeCreated: 1528274108
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/Sample/TestHangingScript.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;

namespace Sample {
  public class TestHangingScript : MonoBehaviour {
    public string DataOfString;
    public int DataOfInt;
    public string DataOfString2 = "ddddd";
    public int a = 10;
    public GameObject DataOfGameObject;
    public UnityEngine.Object DateOfObject;
    public TestCoroutine HangingMonoBehaviour;
    public List<int> l = new List<int>();
    public Vector2 vector2;
    public Vector3 vector3;

    public void Awake() {
      print("Awake");
      print(DataOfString);
      print(DataOfInt);
      print(DataOfString2);
      print(a);
      print(HangingMonoBehaviour.name);
      print(string.Join(",", l));
      print($"{vector2}, {vector3}");
    }

    public void Start() {
      print("Start");
    }
  }
}


================================================
FILE: Assets/CSharpLua/Compiled/Sample/TestHangingScript.cs.meta
================================================
fileFormatVersion: 2
guid: aa1fc193057764b49b4ef3ad042007cd
timeCreated: 1528274108
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/Sample/TestHelloWord.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

namespace Sample {
  public sealed class TestHelloWord : MonoBehaviour {
    public void Awake() {
      Debug.Log("TestHelloWord");
      gameObject.AddComponent<TestCoroutine>();
      var c = GetComponent<MonoBehaviour>();
      print(c.name);

      var obj1 = FindObjectOfType<MonoBehaviour>();
      Destroy(obj1);

      GameObject i = TestUtils.Load("Assets/CSharpLua/Examples/01_HelloWorld/TestLoader.prefab");
      var obj = Instantiate(i);
      obj.transform.parent = transform;

      TestProtobuf.Run();
    }

    private void Start() {
      print("TestHelloWord.Start");
    }

    private void Update() {
      print("TestHelloWord.Update");
    }
  }
}




================================================
FILE: Assets/CSharpLua/Compiled/Sample/TestHelloWord.cs.meta
================================================
fileFormatVersion: 2
guid: d01266a3cb9c65446aff41f37bc14f67
timeCreated: 1528274108
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/Sample/TestProtobuf.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using ProtoBuf;
using CSharpLua.Project.Protocol;
using System.IO;
using ProtoBuf.Meta;

namespace Sample {
  public static class TestProtobuf {
    public static void Run() {
#if __CSharpLua__
      /*
      [[
      protobuf.register_file("Assets/Lua/3rd/pbc/Protocol/CommonPrototype.pb")
      ]]
      */
#endif
      SettingProto proto = new SettingProto() { SettingsMark = 101 };
      proto.Values.Add(new SettingProto.ValuePairProto() { Key = "a", Value = "b" });
      var bytes = Encode(proto);
      var t = Decode<SettingProto>(bytes);
      UnityEngine.Debug.LogFormat("ProtobufDecode {0}", t.SettingsMark);
    }

    private static byte[] Encode(IProtocol proto) {
#if !__CSharpLua__
      using (MemoryStream s = new MemoryStream()) {
        RuntimeTypeModel.Default.Serialize(s, proto);
        return s.ToArray();
      }
#else
      byte[] bytes = null;
      /*
      [[
       bytes = encodeProtobuf(proto)
      ]]
      */
      return bytes;
#endif
    }

    private static T Decode<T>(byte[] bytes) where T : class {
#if !__CSharpLua__
      using (MemoryStream s = new MemoryStream(bytes)) {
        var t = (T)RuntimeTypeModel.Default.Deserialize(s, null, typeof(T));
        return t;
      }
#else
      T t = null;
      /*
      [[
       t = decodeProtobuf(bytes, T)
      ]]
      */
      return t;
#endif
    }

  }
}


================================================
FILE: Assets/CSharpLua/Compiled/Sample/TestProtobuf.cs.meta
================================================
fileFormatVersion: 2
guid: 702d00be8d6fcda448f17c8a3eecd43f
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled/Sample.meta
================================================
fileFormatVersion: 2
guid: c756251f944f45b4f91b0d682a8e5811
folderAsset: yes
timeCreated: 1528272569
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Compiled.meta
================================================
fileFormatVersion: 2
guid: 30775760c22aaf9428e8d40b0574a998
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Editor/Compiler.cs
================================================
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Linq;
using System.Text;

using UnityEditor;
using UnityEngine;

namespace CSharpLua {
  public static class Compiler {
    private sealed class CompiledFail : Exception {
      public CompiledFail(string message) : base(message) {
      }
    }

#if UNITY_EDITOR_WIN
    private const string kDotnet = "dotnet";
#else
    private const string kDotnet = "/usr/local/share/dotnet/dotnet";
#endif

    private static readonly string compiledScriptDir_ = Settings.Paths.CompiledScriptDir;
    private static readonly string outDir_ = Settings.Paths.CompiledOutDir;
    private static readonly string csharpToolsDir_ = $"{Settings.Paths.ToolsDir}/CSharpLua";
    private static readonly string csharpLua_ = $"{csharpToolsDir_}/CSharp.lua/CSharp.lua.Launcher.dll";
    private static readonly string genProtobuf = $"{Settings.Paths.ToolsDir}/ProtobufGen/protogen.bat";
    private static readonly string settingFilePath_ = Settings.Paths.SettingFilePath;

    [MenuItem(Settings.Menus.kCompile)]
    public static void Compile() {
      if (!CheckDotnetInstall()) {
        return;
      }

      if (!File.Exists(csharpLua_)) {
        throw new InvalidProgramException($"{csharpLua_} not found");
      }

      var outDirectoryInfo = new DirectoryInfo(outDir_);
      if (outDirectoryInfo.Exists) {
        foreach (var luaFile in outDirectoryInfo.EnumerateFiles("*.lua", SearchOption.AllDirectories)) {
          luaFile.Delete();
        }
      }

      HashSet<string> libs = new HashSet<string>();
      FillUnityLibraries(libs);
      AssemblyName assemblyName = new AssemblyName(Settings.Paths.kCompiledScripts);
      Assembly assembly = Assembly.Load(assemblyName);
      foreach (var referenced in assembly.GetReferencedAssemblies()) {
        if (referenced.Name != "mscorlib" && !referenced.Name.StartsWith("System")) {
          string libPath = Assembly.Load(referenced).Location;
          libs.Add(libPath);
        }
      }

      string[] metas = new string[] { $"{csharpToolsDir_}/UnityEngine.xml" };
      string lib = string.Join(";", libs.ToArray());
      string meta = string.Join(";", metas);
      string args = $"{csharpLua_}  -s \"{compiledScriptDir_}\" -d \"{outDir_}\" -l \"{lib}\" -m {meta} -c";
      string definesString = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
      if (!string.IsNullOrEmpty(definesString)) {
        args += $" -csc -define:{definesString}";
      }

      var info = new ProcessStartInfo() {
        FileName = kDotnet,
        Arguments = args,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        StandardOutputEncoding = Encoding.UTF8,
        StandardErrorEncoding = Encoding.UTF8,
      };
      using (var p = Process.Start(info)) {
        var output = new StringBuilder();
        var error = new StringBuilder();
        p.OutputDataReceived += (sender, eventArgs) => output.AppendLine(eventArgs.Data);
        p.ErrorDataReceived += (sender, eventArgs) => error.AppendLine(eventArgs.Data);
        p.BeginOutputReadLine();
        p.BeginErrorReadLine();
        p.WaitForExit();
        if (p.ExitCode == 0) {
          UnityEngine.Debug.Log(output);
        } else {
          throw new CompiledFail($"Compile fail, {error}\n{output}\n{kDotnet} {args}");
        }
      }
    }

    private static void FillUnityLibraries(HashSet<string> libs) {
      string unityObjectPath = typeof(UnityEngine.Object).Assembly.Location;
      string baseDir = Path.GetDirectoryName(unityObjectPath);
      foreach (string path in Directory.EnumerateFiles(baseDir, "*.dll")) {
        libs.Add(path);
      }
    }

    private static bool CheckDotnetInstall() {
      bool has = InternalCheckDotnetInstall();
      if (!has) {
        UnityEngine.Debug.LogWarning("not found dotnet");
        if (EditorUtility.DisplayDialog(".NET未安装", "未安装.NET 5.0运行环境,点击确定前往安装", "确定", "取消")) {
          Application.OpenURL("https://dotnet.microsoft.com/download/dotnet/5.0");
        }
      }
      return has;
    }

    private static bool InternalCheckDotnetInstall() {
      var info = new ProcessStartInfo() {
        FileName = kDotnet,
        Arguments = "--version",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        CreateNoWindow = true,
        StandardOutputEncoding = Encoding.UTF8,
        StandardErrorEncoding = Encoding.UTF8,
      };
      try {
        using (var p = Process.Start(info)) {
          p.WaitForExit();
          if (p.ExitCode == 0) {
            string version = p.StandardOutput.ReadToEnd();
            UnityEngine.Debug.LogFormat("found dotnet {0}", version);
            int major = version[0] - '0';
            if (major >= 5) {
              return true;
            } else {
              UnityEngine.Debug.LogErrorFormat("dotnet verson {0} must >= 5.0", version);
            }
          }
          return false;
        }
      } catch (Exception e) {
        UnityEngine.Debug.LogException(e);
        return false;
      }
    }

    [MenuItem(Settings.kIsRunFromLua ? Settings.Menus.kRunFromCSharp : Settings.Menus.kRunFromLua)]
    public static void Switch() {
#if UNITY_2018_1_OR_NEWER
      const string kFieldName = nameof(Settings.kIsRunFromLua);
#else
      const string kFieldName = "kIsRunFromLua";
#endif

      string text = File.ReadAllText(settingFilePath_);
      int begin = text.IndexOf(kFieldName);
      if (begin != -1) {
        int end = text.IndexOf(';', begin + kFieldName.Length);
        if (end != -1) {
          string s = text.Substring(begin, end - begin);
          string[] array = s.Split('=');
          bool v = bool.Parse(array[1]);
          string replace = kFieldName + " = " + (v ? "false" : "true");
          text = text.Replace(s, replace);
          File.WriteAllText(settingFilePath_, text);
          AssetDatabase.Refresh();
        } else {
          throw new InvalidProgramException($"field {kFieldName} not found end symbol in {settingFilePath_}");
        }
      } else {
        throw new InvalidProgramException($"not found field {kFieldName} in {settingFilePath_}");
      }
    }

    [MenuItem(Settings.Menus.kGenProtobuf)]
    public static void GenProtobuf() {
      var info = new ProcessStartInfo() {
        FileName = genProtobuf,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        CreateNoWindow = true,
        StandardOutputEncoding = Encoding.UTF8,
        StandardErrorEncoding = Encoding.UTF8,
        WorkingDirectory = $"{Settings.Paths.ToolsDir}/ProtobufGen/",
      };
      var p = Process.Start(info);
      p.OutputDataReceived += (sender, eventArgs) => {
        if (!string.IsNullOrEmpty(eventArgs.Data)) {
          UnityEngine.Debug.Log(eventArgs.Data);
        }
      };
      p.ErrorDataReceived += (sender, eventArgs) => { 
        if (!string.IsNullOrEmpty(eventArgs.Data)) {
          UnityEngine.Debug.LogError(eventArgs.Data);
        }
      };
      p.BeginOutputReadLine();
      p.BeginErrorReadLine();
    }
  }

#if UNITY_2018_1_OR_NEWER
  [InitializeOnLoad]
  public class EditorQuitHandler {
    static void Quit() {
      string tempDir = Settings.Paths.kTempDir;
      if (Directory.Exists(tempDir)) {
        Directory.Delete(tempDir, true);
      }
    }

    static EditorQuitHandler() {
      EditorApplication.quitting += Quit;
    }
  }
#endif
}



================================================
FILE: Assets/CSharpLua/Editor/Compiler.cs.meta
================================================
fileFormatVersion: 2
guid: 59c6d8baca17a7146b763b1e4fa394d6
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Editor.meta
================================================
fileFormatVersion: 2
guid: 4fe6f8ae96df5fd45bf9bbab5cb9a8e7
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Examples/01_HelloWorld/HelloWorld.unity.meta
================================================
fileFormatVersion: 2
guid: 44e8c9b1935171746b04903a251c413d
timeCreated: 1526899852
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Examples/01_HelloWorld/TestLoader.prefab.meta
================================================
fileFormatVersion: 2
guid: 20c93afce42002a41a008ca942ccb69d
NativeFormatImporter:
  externalObjects: {}
  mainObjectFileID: 100100000
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Examples/01_HelloWorld/testText.txt
================================================
hello,word

================================================
FILE: Assets/CSharpLua/Examples/01_HelloWorld/testText.txt.meta
================================================
fileFormatVersion: 2
guid: a0ac40db8f690ec43aeb9ee683d170f6
TextScriptImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Examples/01_HelloWorld.meta
================================================
fileFormatVersion: 2
guid: e64303adce0f8d8438e46552eb0f8b84
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/Examples.meta
================================================
fileFormatVersion: 2
guid: 19a7a8aa535d0de4ba63cd62704e83f6
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua/UserMonoBehaviourConverter.cs
================================================
#if UNITY_EDITOR  
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
using System.IO;
using System.Reflection;

using UnityEngine;
using UnityEditor;
using LuaInterface;

namespace CSharpLua {
  public sealed class UserMonoBehaviourConverter {
    private sealed class StructField {
      private string s_;
      public bool HasField { get; set; }

      public StructField(object v) {
        StringBuilder sb = new StringBuilder();
        sb.Append('{');
        Type t = v.GetType();
        bool isFirst = true;
        foreach (var field in t.GetFields(BindingFlags.Instance | BindingFlags.Public)) {
          object x = field.GetValue(v);
          if (x != null) {
            var y = Activator.CreateInstance(x.GetType());
            if (!x.EQ(y)) {
              if (isFirst) {
                isFirst = false;
              } else {
                sb.Append(',');
              }
              sb.Append(field.Name);
              sb.Append('=');
              sb.Append(SerializeFieldsInfo.NormalValueToString(x));
              HasField = true;
            }
          }
        }
        sb.Append(',');
        sb.Append(t.FullName);
        sb.Append('}');
        s_ = sb.ToString();
      }

      public override string ToString() {
        return s_;
      }
    }

    private sealed class SerializeFieldsInfo {
      internal abstract class ObjectField {
        public string Name;
        public abstract void FillTo(StringBuilder sb);
      }

      internal sealed class PoolIndexObjectField : ObjectField {
        public int PoolIndex;

        public override void FillTo(StringBuilder sb) {
          sb.Append(PoolIndex);
        }
      }

      internal sealed class ArrayObjectField : ObjectField {
        public bool IsArray;
        public Type ElementType;
        public List<int> PoolIndexs = new List<int>();

        public override void FillTo(StringBuilder sb) {
          string array = ToList(IsArray, ElementType, PoolIndexs, i => i.ToString());
          sb.Append(array);
        }
      }

      internal sealed class MonoBehaviourField {
        public int PoolIndex;
        public string ClassName;
      }

      public Dictionary<string, object> Normals = new Dictionary<string, object>();
      public List<UnityEngine.Object> ObjectsPool = new List<UnityEngine.Object>();
      public List<ObjectField> Objects = new List<ObjectField>();
      public List<MonoBehaviourField> MonoBehaviourFields = new List<MonoBehaviourField>();

      private void AppendNormals(StringBuilder sb) {
        sb.Append('{');
        bool isFirst = true;
        foreach (var normal in Normals) {
          if (isFirst) {
            isFirst = false;
          } else {
            sb.Append(',');
          }
          sb.Append(normal.Key);
          sb.Append('=');
          sb.Append(ValueToString(normal.Value));
        }
        sb.Append("}");
      }

      private void AppendObjects(StringBuilder sb) {
        if (Objects.Count > 0) {
          sb.Append('{');
          bool isFirst = true;
          foreach (var field in Objects) {
            if (isFirst) {
              isFirst = false;
            } else {
              sb.Append(',');
            }
            sb.Append(field.Name);
            sb.Append('=');
            field.FillTo(sb);
          }
          sb.Append('}');
        }
      }

      public string GetSerializeData() {
        bool isEmpty = Normals.Count == 0 && Objects.Count == 0;
        StringBuilder sb = new StringBuilder();
        if (!isEmpty) {
          sb.Append("return{");
          AppendNormals(sb);
          sb.Append(',');
          AppendObjects(sb);
          sb.Append('}');
        }
        return sb.ToString();
      }

      public UnityEngine.Object[] GetSerializeObjects() {
        return ObjectsPool.Count > 0 ? ObjectsPool.ToArray() : null;
      }

      private static string ToList(bool isArray, Type elementType, IList list, Func<object, string> transfore) {
        StringBuilder sb = new StringBuilder();
        sb.Append('{');
        if (list.Count > 0) {
          bool isFirst = true;
          foreach (var i in list) {
            if (isFirst) {
              isFirst = false;
            } else {
              sb.Append(',');
            }
            sb.Append(transfore(i));
          }
          sb.Append(',');
        }
        if (isArray) {
          sb.AppendFormat("System.Array({0})", elementType.FullName);
        } else {
          sb.AppendFormat("System.List({0})", elementType.FullName);
        }
        sb.Append('}');
        return sb.ToString();
      }

      internal static string NormalValueToString(object v) {
        if (v is string) {
          return "\"" + v + "\"";
        }

        return v.ToString();
      }

      private static string ValueToString(object v) {
        if (v is IList) {
          var list = (IList)v;
          bool isArray = list is Array;
          var elementType = isArray ? v.GetType().GetElementType() : v.GetType().GetIListElementType();
          return ToList(isArray, elementType, list, NormalValueToString);
        }

        return NormalValueToString(v);
      }
    }

    private sealed class MonoBehaviourFieldLazy {
      public string ClassName;
      public SerializeFieldsInfo SerializeInfo;
      public BridgeMonoBehaviour BridgeMonoBehaviour;

      public void Bind() {
        foreach (var field in SerializeInfo.MonoBehaviourFields) {
          var gameObject = (GameObject)SerializeInfo.ObjectsPool[field.PoolIndex];
          var bridges = gameObject.GetComponents<BridgeMonoBehaviour>();
          var item = bridges.Single(i => i.LuaClass == field.ClassName);
          SerializeInfo.ObjectsPool[field.PoolIndex] = item;
        }
        BridgeMonoBehaviour.Bind(ClassName, SerializeInfo.GetSerializeData(), SerializeInfo.GetSerializeObjects());
      }
    }

    private static readonly string tempPrefabDir_ = Settings.Paths.kTempDir + "/prefabs";
    private static readonly string compiledScriptsManifestPath_ = Settings.Paths.CompiledOutDir + "/manifest.lua";
    private static UserMonoBehaviourConverter default_;

    private HashSet<string> userDefinedNames_;
    private LuaState luaState_;

    public UserMonoBehaviourConverter() {
      Load();
    }

    private void Load() {
      LoadClassNames();
      luaState_ = LuaClient.GetMainState();
      if (luaState_ == null) {
        throw new InvalidProgramException("not found MainState");
      }
    }

    public static UserMonoBehaviourConverter Default {
      get {
        if (default_ == null) {
          default_ = new UserMonoBehaviourConverter();
        }
        return default_;
      }
    }

    private void PauseEdit() {
      if (Application.isPlaying) {
        UnityEngine.Debug.Break();
      }
    }

    private void LoadClassNames() {
      const string kBeginToken = "types = {";
      const string kEndToken = "}";

      if (!File.Exists(compiledScriptsManifestPath_)) {
        PauseEdit();
        throw new InvalidOperationException("please compiled scripts first");
      }

      string content = File.ReadAllText(compiledScriptsManifestPath_);
      int begin = content.IndexOf(kBeginToken);
      if (begin == -1) {
        throw new InvalidProgramException();
      }
      begin += kBeginToken.Length;
      int end = content.IndexOf(kEndToken, begin);
      if (end == -1) {
        throw new InvalidProgramException();
      }

      var userDefines = content.Substring(begin, end - begin).Split(',').Select(i => i.Trim().Trim('"')).ToArray();
      userDefinedNames_ = new HashSet<string>(userDefines);
    }

    private static void CopyTempPrefab(ref GameObject prefab) {
      string oldPath = AssetDatabase.GetAssetPath(prefab);
      string path = Path.Combine(tempPrefabDir_, oldPath);
      Directory.CreateDirectory(Path.GetDirectoryName(path));
#if UNITY_2018_3 || UNITY_2018_4
      prefab = PrefabUtility.SaveAsPrefabAsset(UnityEngine.Object.Instantiate(prefab), path);
#else
      prefab = PrefabUtility.CreatePrefab(path, prefab);
#endif

      /*
      try {
        prefab = PrefabUtility.CreatePrefab(path, prefab);
      } catch (ArgumentException e) when (e.Message == "Can't save persistent object as a Prefab asset") {
        throw new InvalidDataException("目前2018.3拷贝预设存在BUG,暂时未发现规避的方法,请使用较低或较高版本");
      }*/
    }

    private bool IsUserMonoBehaviourExists(GameObject prefab) {
      var childrens = GetChildrenTransform(prefab.transform);
      foreach (var gameObject in childrens) {
        var monoBehaviours = gameObject.GetComponents<MonoBehaviour>();
        foreach (MonoBehaviour monoBehaviour in monoBehaviours) {
          if (IsUserDefine(monoBehaviour.GetType())) {
            return true;
          }
        }
      }
      return false;
    }

    public bool Do(ref GameObject prefab) {
      if (IsUserMonoBehaviourExists(prefab)) {
        CopyTempPrefab(ref prefab);

        List<MonoBehaviourFieldLazy> monoBehaviourFieldLazys = new List<MonoBehaviourFieldLazy>();
        var childrens = GetChildrenTransform(prefab.transform);
        foreach (var t in childrens) {
          Convert(t.gameObject, monoBehaviourFieldLazys);
        }

        foreach (var i in monoBehaviourFieldLazys) {
          i.Bind();
        }

        return true;
      }
      return false;
    }

    private List<Transform> GetChildrenTransform(Transform parent) {
      List<Transform> list = new List<Transform> { parent };
      GetChildrenTransform(list, parent);
      return list;
    }

    private void GetChildrenTransform(List<Transform> list, Transform parent) {
      int count = parent.childCount;
      for (int i = 0; i < count; i++) {
        Transform child = parent.GetChild(i);
        list.Add(child);
        GetChildrenTransform(list, child);
      }
    }

    private bool IsUserDefine(Type type) {
      return userDefinedNames_.Contains(type.FullName);
    }

    private void Convert(GameObject gameObject, List<MonoBehaviourFieldLazy> lazys) {
      var monoBehaviours = gameObject.GetComponents<MonoBehaviour>();
      foreach (MonoBehaviour monoBehaviour in monoBehaviours) {
        if (IsUserDefine(monoBehaviour.GetType())) {
          Convert(monoBehaviour, lazys);
        }
      }
    }

    private bool IsSerializedField(FieldInfo field) {
      if (field.IsPublic) {
        return !field.IsDefined(typeof(HideInInspector), false);
      } else {
        return field.IsDefined(typeof(SerializeField), false);
      }
    }

    private void Convert(MonoBehaviour monoBehaviour, List<MonoBehaviourFieldLazy> lazys) {
      Type type = monoBehaviour.GetType();
      string className = type.FullName;
      using (var luaClass = luaState_.GetTable(className)) {
        if (luaClass == null) {
          PauseEdit();
          throw new InvalidOperationException($"{className} is not found in lua env");
        }

        SerializeFieldsInfo info = new SerializeFieldsInfo();
        FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
        foreach (FieldInfo field in fields) {
          if (IsSerializedField(field)) {
            Convert(monoBehaviour, luaClass, field, info);
          }
        }

        GameObject gameObject = monoBehaviour.gameObject;
        UnityEngine.Object.DestroyImmediate(monoBehaviour, true);
        var bridgeMonoBehaviour = gameObject.AddComponent<BridgeMonoBehaviour>();
        if (info.MonoBehaviourFields.Count == 0) {
          bridgeMonoBehaviour.Bind(className, info.GetSerializeData(), info.GetSerializeObjects());
        } else {
          lazys.Add(new MonoBehaviourFieldLazy() {
            ClassName = className,
            SerializeInfo = info,
            BridgeMonoBehaviour = bridgeMonoBehaviour,
          });
        }
      }
    }

    private static bool IsSameRootGameObject(GameObject x, GameObject y) {
      string pathX = AssetDatabase.GetAssetPath(x);
      string pathY = AssetDatabase.GetAssetPath(y);
      return pathX == pathY;
    }

    private static bool IsNormalType(Type type, out TypeCode typeCode) {
      typeCode = Type.GetTypeCode(type);
      return typeCode == TypeCode.String || (typeCode >= TypeCode.Boolean && typeCode <= TypeCode.Double);
    }

    private static bool IsNormalType(Type type) {
      TypeCode typeCode;
      return IsNormalType(type, out typeCode);
    }

    private int ConvertUnityEngineGameObject(MonoBehaviour monoBehaviour, object fieldValue, SerializeFieldsInfo info) {
      int poolIndex = info.ObjectsPool.Count;
      var obj = (UnityEngine.Object)fieldValue;
      if (obj is GameObject) {
        var gameObject = (GameObject)obj;
        if (!IsSameRootGameObject(monoBehaviour.gameObject, gameObject)) {
          bool hasChanged = Do(ref gameObject);
          if (hasChanged) {
            obj = gameObject;
          }
        }
      } else if (obj is MonoBehaviour) {
        var mb = (MonoBehaviour)obj;
        var gameObject = mb.gameObject;
        bool isSameRoot = IsSameRootGameObject(monoBehaviour.gameObject, gameObject);
        if (!isSameRoot) {
          bool hasChanged = Do(ref gameObject);
          if (hasChanged) {
            obj = gameObject;
          }
        } else {
          obj = gameObject;
        }
        if (IsUserDefine(mb.GetType())) {
          if (isSameRoot) {
            info.MonoBehaviourFields.Add(new SerializeFieldsInfo.MonoBehaviourField() {
              PoolIndex = poolIndex,
              ClassName = mb.GetType().FullName,
            });
          } else {
            var bridges = gameObject.GetComponents<BridgeMonoBehaviour>();
            var mbNew = bridges.Single(i => i.LuaClass == mb.GetType().FullName);
            Contract.Assert(mbNew != null);
            obj = mbNew;
          }
        } else {
          var mbNew = gameObject.GetComponent(mb.GetType());
          obj = mbNew;
        }
      }

      info.ObjectsPool.Add(obj);
      return poolIndex;
    }

    private void Convert(MonoBehaviour monoBehaviour, LuaTable luaClass, FieldInfo field, SerializeFieldsInfo info) {
      Type fieldType = field.FieldType;
      object fieldValue = field.GetValue(monoBehaviour);
      TypeCode fieldTypeCode;

      if (IsNormalType(fieldType, out fieldTypeCode)) {
        object x = fieldValue;
        object y = luaClass.RawGet<string, object>(field.Name);
        if (y is double) {
          if (fieldTypeCode == TypeCode.Char) {
            x = (double)(char)x;
          } else {
            x = System.Convert.ToDouble(x);
          }
        }
        if (!x.EQ(y)) {
          info.Normals.Add(field.Name, x);
        }
        return;
      }

      if (fieldType.IsEnum) {
        int x = (int)(ValueType)fieldValue;
        int y = luaClass.RawGet<string, int>(field.Name);
        if (x != y) {
          info.Normals.Add(field.Name, x);
        }
        return;
      }

      if (fieldType.IsUnityEngineStruct()) {
        var structField = new StructField(fieldValue);
        if (structField.HasField) {
          info.Normals.Add(field.Name, structField);
        }
        return;
      }

      if (fieldValue == null) {
        return;
      }

      if (fieldType.IsUnityEngineObject()) {
        int poolIndex = ConvertUnityEngineGameObject(monoBehaviour, fieldValue, info);
        info.Objects.Add(new SerializeFieldsInfo.PoolIndexObjectField() {
          Name = field.Name,
          PoolIndex = poolIndex,
        });
        return;
      }

      var elementTypeOfIList = fieldType.GetIListElementType();
      if (elementTypeOfIList != null) {
        if (IsNormalType(elementTypeOfIList)) {
          info.Normals.Add(field.Name, fieldValue);
          return;
        } else if (elementTypeOfIList.IsUnityEngineObject()) {
          SerializeFieldsInfo.ArrayObjectField array = new SerializeFieldsInfo.ArrayObjectField() {
            Name = field.Name,
            IsArray = fieldType.IsArray,
            ElementType = elementTypeOfIList
          };
          IList list = (IList)fieldValue;
          foreach (object v in list) {
            int poolIndex = ConvertUnityEngineGameObject(monoBehaviour, v, info);
            array.PoolIndexs.Add(poolIndex);
          }
          info.Objects.Add(array);
          return;
        }
      }

      PauseEdit();
      throw new NotSupportedException($"{monoBehaviour.GetType()}'s field[{field.Name}] type[{fieldType}] not support serialized");
    }
  }

  public static partial class Extensions {
    public static Type GetIListElementType(this Type type) {
      var listType = type.GetInterfaces().FirstOrDefault(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IList<>));
      return listType != null ? listType.GetGenericArguments().First() : null;
    }

    public static bool IsUnityEngineObject(this Type type) {
      return typeof(UnityEngine.Object).IsAssignableFrom(type);
    }

    public static bool EQ(this object x, object y) {
      return EqualityComparer<object>.Default.Equals(x, y);
    }
    
    public static bool IsUnityEngineStruct(this Type type) {
      return type == typeof(Vector2)
        || type == typeof(Vector3)
        || type == typeof(Vector4);
    }
  }
}

#endif

================================================
FILE: Assets/CSharpLua/UserMonoBehaviourConverter.cs.meta
================================================
fileFormatVersion: 2
guid: b7f3e9e39306b8540a8a2420099dec1d
timeCreated: 1528353588
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/CSharpLua.meta
================================================
fileFormatVersion: 2
guid: 25458f95ee0f5374894471ba2a523a15
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Editor/Custom/CustomSettings.cs
================================================
using UnityEngine;
using System;
using System.Collections.Generic;
using System.Linq;
using LuaInterface;
using UnityEditor;

using BindType = ToLuaMenu.BindType;
using System.Reflection;

public static class CustomSettings
{
    public static string saveDir = Application.dataPath + "/Source/Generate/";    
    public static string toluaBaseType = Application.dataPath + "/ToLua/BaseType/";
    public static string baseLuaDir = Application.dataPath + "/Tolua/Lua/";
    public static string injectionFilesPath = Application.dataPath + "/ToLua/Injection/";

    //导出时强制做为静态类的类型(注意customTypeList 还要添加这个类型才能导出)
    //unity 有些类作为sealed class, 其实完全等价于静态类
    public static List<Type> staticClassTypes = new List<Type>
    {        
        typeof(UnityEngine.Application),
        typeof(UnityEngine.Time),
        typeof(UnityEngine.Screen),
        typeof(UnityEngine.SleepTimeout),
        typeof(UnityEngine.Input),
        typeof(UnityEngine.Resources),
        typeof(UnityEngine.Physics),
        typeof(UnityEngine.RenderSettings),
        typeof(UnityEngine.QualitySettings),
        typeof(UnityEngine.GL),
        typeof(UnityEngine.Graphics),
    };

    //附加导出委托类型(在导出委托时, customTypeList 中牵扯的委托类型都会导出, 无需写在这里)
    public static DelegateType[] customDelegateList = 
    {        
        _DT(typeof(Action)),                
        _DT(typeof(UnityEngine.Events.UnityAction)),
        _DT(typeof(System.Predicate<int>)),
        _DT(typeof(System.Action<int>)),
        _DT(typeof(System.Comparison<int>)),
        _DT(typeof(System.Func<int, int>)),
    };

  //在这里添加你要导出注册到lua的类型列表
  public static BindType[] customTypeList_ =
  {                
        //------------------------为例子导出--------------------------------
        //_GT(typeof(TestEventListener)),
        //_GT(typeof(TestProtol)),
        //_GT(typeof(TestAccount)),
        //_GT(typeof(Dictionary<int, TestAccount>)).SetLibName("AccountMap"),
        //_GT(typeof(KeyValuePair<int, TestAccount>)),
        //_GT(typeof(Dictionary<int, TestAccount>.KeyCollection)),
        //_GT(typeof(Dictionary<int, TestAccount>.ValueCollection)),
        //_GT(typeof(TestExport)),
        //_GT(typeof(TestExport.Space)),
        //-------------------------------------------------------------------        
                        
        _GT(typeof(LuaInjectionStation)),
        _GT(typeof(InjectType)),
        _GT(typeof(Debugger)).SetNameSpace(null),          

#if USING_DOTWEENING
        _GT(typeof(DG.Tweening.DOTween)),
        _GT(typeof(DG.Tweening.Tween)).SetBaseType(typeof(System.Object)).AddExtendType(typeof(DG.Tweening.TweenExtensions)),
        _GT(typeof(DG.Tweening.Sequence)).AddExtendType(typeof(DG.Tweening.TweenSettingsExtensions)),
        _GT(typeof(DG.Tweening.Tweener)).AddExtendType(typeof(DG.Tweening.TweenSettingsExtensions)),
        _GT(typeof(DG.Tweening.LoopType)),
        _GT(typeof(DG.Tweening.PathMode)),
        _GT(typeof(DG.Tweening.PathType)),
        _GT(typeof(DG.Tweening.RotateMode)),
        _GT(typeof(Component)).AddExtendType(typeof(DG.Tweening.ShortcutExtensions)),
        _GT(typeof(Transform)).AddExtendType(typeof(DG.Tweening.ShortcutExtensions)),
        _GT(typeof(Light)).AddExtendType(typeof(DG.Tweening.ShortcutExtensions)),
        _GT(typeof(Material)).AddExtendType(typeof(DG.Tweening.ShortcutExtensions)),
        _GT(typeof(Rigidbody)).AddExtendType(typeof(DG.Tweening.ShortcutExtensions)),
        _GT(typeof(Camera)).AddExtendType(typeof(DG.Tweening.ShortcutExtensions)),
        _GT(typeof(AudioSource)).AddExtendType(typeof(DG.Tweening.ShortcutExtensions)),
        //_GT(typeof(LineRenderer)).AddExtendType(typeof(DG.Tweening.ShortcutExtensions)),
        //_GT(typeof(TrailRenderer)).AddExtendType(typeof(DG.Tweening.ShortcutExtensions)),    
#else
                                         
        _GT(typeof(Component)),
        _GT(typeof(Transform)),
        _GT(typeof(Material)),
        _GT(typeof(Light)),
        _GT(typeof(Rigidbody)),
        _GT(typeof(Camera)),
        _GT(typeof(AudioSource)),
        //_GT(typeof(LineRenderer))
        //_GT(typeof(TrailRenderer))
#endif

		    _GT(typeof(YieldInstruction)),
		    _GT(typeof(WaitForEndOfFrame)),
		    _GT(typeof(WaitForFixedUpdate)),
		    _GT(typeof(WaitForSeconds)),

		    _GT(typeof(Behaviour)),
        _GT(typeof(MonoBehaviour)),        
        _GT(typeof(GameObject)),
        _GT(typeof(TrackedReference)),
        _GT(typeof(Application)),
        _GT(typeof(Physics)),
        _GT(typeof(Collider)),
        _GT(typeof(Time)),        
        _GT(typeof(Texture)),
        _GT(typeof(Texture2D)),
        _GT(typeof(Shader)),        
        _GT(typeof(Renderer)),
        _GT(typeof(WWW)),
        _GT(typeof(Screen)),        
        _GT(typeof(CameraClearFlags)),
        _GT(typeof(AudioClip)),        
        _GT(typeof(AssetBundle)),
        _GT(typeof(ParticleSystem)),
        _GT(typeof(AsyncOperation)).SetBaseType(typeof(System.Object)),        
        _GT(typeof(LightType)),
        _GT(typeof(SleepTimeout)),
#if UNITY_5_3_OR_NEWER && !UNITY_5_6_OR_NEWER
        _GT(typeof(UnityEngine.Experimental.Director.DirectorPlayer)),
#endif
        _GT(typeof(Animator)),
        _GT(typeof(Input)),
        _GT(typeof(KeyCode)),
        _GT(typeof(SkinnedMeshRenderer)),
        _GT(typeof(Space)),      
       

        _GT(typeof(MeshRenderer)),
#if !UNITY_5_4_OR_NEWER
        _GT(typeof(ParticleEmitter)),
        _GT(typeof(ParticleRenderer)),
        _GT(typeof(ParticleAnimator)), 
#endif

        _GT(typeof(BoxCollider)),
        _GT(typeof(MeshCollider)),
        _GT(typeof(SphereCollider)),        
        _GT(typeof(CharacterController)),
        _GT(typeof(CapsuleCollider)),
        
        _GT(typeof(Animation)),        
        _GT(typeof(AnimationClip)).SetBaseType(typeof(UnityEngine.Object)),        
        _GT(typeof(AnimationState)),
        _GT(typeof(AnimationBlendMode)),
        _GT(typeof(QueueMode)),  
        _GT(typeof(PlayMode)),
        _GT(typeof(WrapMode)),

        _GT(typeof(QualitySettings)),
        _GT(typeof(RenderSettings)),                                                   
        _GT(typeof(BlendWeights)),           
        _GT(typeof(RenderTexture)),
        _GT(typeof(Resources)),     
        _GT(typeof(LuaProfiler)),
    };

    public static List<Type> dynamicList = new List<Type>()
    {
        typeof(MeshRenderer),
#if !UNITY_5_4_OR_NEWER
        typeof(ParticleEmitter),
        typeof(ParticleRenderer),
        typeof(ParticleAnimator),
#endif

        typeof(BoxCollider),
        typeof(MeshCollider),
        typeof(SphereCollider),
        typeof(CharacterController),
        typeof(CapsuleCollider),

        typeof(Animation),
        typeof(AnimationClip),
        typeof(AnimationState),

        typeof(BlendWeights),
        typeof(RenderTexture),
        typeof(Rigidbody),
    };

    //重载函数,相同参数个数,相同位置out参数匹配出问题时, 需要强制匹配解决
    //使用方法参见例子14
    public static List<Type> outList = new List<Type>()
    {
        
    };
        
    //ngui优化,下面的类没有派生类,可以作为sealed class
    public static List<Type> sealedList = new List<Type>()
    {
        /*typeof(Transform),
        typeof(UIRoot),
        typeof(UICamera),
        typeof(UIViewport),
        typeof(UIPanel),
        typeof(UILabel),
        typeof(UIAnchor),
        typeof(UIAtlas),
        typeof(UIFont),
        typeof(UITexture),
        typeof(UISprite),
        typeof(UIGrid),
        typeof(UITable),
        typeof(UIWrapGrid),
        typeof(UIInput),
        typeof(UIScrollView),
        typeof(UIEventListener),
        typeof(UIScrollBar),
        typeof(UICenterOnChild),
        typeof(UIScrollView),        
        typeof(UIButton),
        typeof(UITextList),
        typeof(UIPlayTween),
        typeof(UIDragScrollView),
        typeof(UISpriteAnimation),
        typeof(UIWrapContent),
        typeof(TweenWidth),
        typeof(TweenAlpha),
        typeof(TweenColor),
        typeof(TweenRotation),
        typeof(TweenPosition),
        typeof(TweenScale),
        typeof(TweenHeight),
        typeof(TypewriterEffect),
        typeof(UIToggle),
        typeof(Localization),*/
    };

    public static BindType _GT(Type t)
    {
        return new BindType(t);
    }

    public static DelegateType _DT(Type t)
    {
        return new DelegateType(t);
    }    


    [MenuItem("Lua/Attach Profiler", false, 151)]
    static void AttachProfiler()
    {
        if (!Application.isPlaying)
        {
            EditorUtility.DisplayDialog("警告", "请在运行时执行此功能", "确定");
            return;
        }

        LuaClient.Instance.AttachProfiler();
    }

    [MenuItem("Lua/Detach Profiler", false, 152)]
    static void DetachProfiler()
    {
        if (!Application.isPlaying)
        {            
            return;
        }

        LuaClient.Instance.DetachProfiler();
    }

  private static bool IsCustomAssembly(string name) {
      if (name == "mscorlib" || name.StartsWith("System") || name.StartsWith("UnityEngine") || name.StartsWith("UnityEditor")) {
        return false;
      }
      return true;
    }

    public static BindType[] customTypeList {
      get {
        const string kBridgeAssemblyName = "Bridge";
        List<BindType> result = new List<BindType>(customTypeList_);
        var names = Assembly.GetExecutingAssembly().GetReferencedAssemblies().Select(i => i.Name).Where(IsCustomAssembly).ToList();
        if (!names.Contains(kBridgeAssemblyName)) {
          names.Add(kBridgeAssemblyName);
        }
        foreach (string name in names) {
          Assembly a = Assembly.Load(name);
          Type[] types = a.GetExportedTypes();
          foreach (Type type in types) {
            if (type.IsDefined(typeof(LuaAutoWrapAttribute), false)) {
              result.Add(_GT(type));
            }
          }
        }
        return result.ToArray();
      }
    }
}


================================================
FILE: Assets/Editor/Custom/CustomSettings.cs.meta
================================================
fileFormatVersion: 2
guid: d68e81cfa02de7e44a2ff558bdc3ac89
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 


================================================
FILE: Assets/Editor/Custom.meta
================================================
fileFormatVersion: 2
guid: 327fa85d300c38c48836bfee53f47cb0
folderAsset: yes
DefaultImporter:
  userData: 


================================================
FILE: Assets/Editor.meta
================================================
fileFormatVersion: 2
guid: 772338ec68e701847a565d981a690787
folderAsset: yes
DefaultImporter:
  userData: 


================================================
FILE: Assets/Lua/3rd/pbc/Protocol/CommonPrototype.pb
================================================


CommonPrototype.protoCSharpLua.Project.Protocol"
SettingProtoG
Values (27.CSharpLua.Project.Protocol.SettingProto.ValuePairProto
SettingsMark (,
ValuePairProto
Key (	
Value (	

================================================
FILE: Assets/Lua/3rd/pbc/Protocol/CommonPrototype.pb.meta
================================================
fileFormatVersion: 2
guid: 799e7c66ac22f364e9547543461301c4
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/3rd/pbc/Protocol.meta
================================================
fileFormatVersion: 2
guid: a7200e606f253ed44ad5a8801bf7eae2
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/3rd/pbc/protobuf.lua
================================================
local c = require "protobuf.c"

local setmetatable = setmetatable
local type = type
local table = table
local assert = assert
local pairs = pairs
local ipairs = ipairs
local string = string
local print = print
local io = io
local tinsert = table.insert
local rawget = rawget

module "protobuf"

local _pattern_cache = {}

-- skynet clear
local P = c._env_new()
local GC = c._gc(P)

function lasterror()
	return c._last_error(P)
end

local decode_type_cache = {}
local _R_meta = {}

function _R_meta:__index(key)
	local v = decode_type_cache[self._CType][key](self, key)
	self[key] = v
	return v
end

local _reader = {}

function _reader:int(key)
	return c._rmessage_integer(self._CObj , key , 0)
end

function _reader:real(key)
	return c._rmessage_real(self._CObj , key , 0)
end

function _reader:string(key)
	return c._rmessage_string(self._CObj , key , 0)
end

function _reader:bool(key)
	return c._rmessage_integer(self._CObj , key , 0) ~= 0
end

function _reader:message(key, message_type)
    --  will return default table, we want nil, so comment this function
    --[[ 
	local rmessage = c._rmessage_message(self._CObj , key , 0)
	if rmessage then
		local v = {
			_CObj = rmessage,
			_CType = message_type,
			_Parent = self,
		}
		return setmetatable( v , _R_meta )
	end--]]
end

function _reader:int32(key)
	return c._rmessage_int32(self._CObj , key , 0)
end

function _reader:int64(key)
	return c._rmessage_int64(self._CObj , key , 0)
end

function _reader:int52(key)
	return c._rmessage_int52(self._CObj , key , 0)
end

function _reader:uint52(key)
	return c._rmessage_uint52(self._CObj , key , 0)
end

function _reader:int_repeated(key)
	local cobj = self._CObj
	local n = c._rmessage_size(cobj , key)
	local ret = {}
	for i=0,n-1 do
		tinsert(ret,  c._rmessage_integer(cobj , key , i))
	end
	return ret
end

function _reader:real_repeated(key)
	local cobj = self._CObj
	local n = c._rmessage_size(cobj , key)
	local ret = {}
	for i=0,n-1 do
		tinsert(ret,  c._rmessage_real(cobj , key , i))
	end
	return ret
end

function _reader:string_repeated(key)
	local cobj = self._CObj
	local n = c._rmessage_size(cobj , key)
	local ret = {}
	for i=0,n-1 do
		tinsert(ret,  c._rmessage_string(cobj , key , i))
	end
	return ret
end

function _reader:bool_repeated(key)
	local cobj = self._CObj
	local n = c._rmessage_size(cobj , key)
	local ret = {}
	for i=0,n-1 do
		tinsert(ret,  c._rmessage_integer(cobj , key , i) ~= 0)
	end
	return ret
end

function _reader:message_repeated(key, message_type)
	local cobj = self._CObj
	local n = c._rmessage_size(cobj , key)
	local ret = {}
	for i=0,n-1 do
		local m = {
			_CObj = c._rmessage_message(cobj , key , i),
			_CType = message_type,
			_Parent = self,
		}
		tinsert(ret, setmetatable( m , _R_meta ))
	end
	return ret
end

function _reader:int32_repeated(key)
	local cobj = self._CObj
	local n = c._rmessage_size(cobj , key)
	local ret = {}
	for i=0,n-1 do
		tinsert(ret,  c._rmessage_int32(cobj , key , i))
	end
	return ret
end

function _reader:int64_repeated(key)
	local cobj = self._CObj
	local n = c._rmessage_size(cobj , key)
	local ret = {}
	for i=0,n-1 do
		tinsert(ret,  c._rmessage_int64(cobj , key , i))
	end
	return ret
end

function _reader:int52_repeated(key)
	local cobj = self._CObj
	local n = c._rmessage_size(cobj , key)
	local ret = {}
	for i=0,n-1 do
		tinsert(ret,  c._rmessage_int52(cobj , key , i))
	end
	return ret
end

function _reader:uint52_repeated(key)
	local cobj = self._CObj
	local n = c._rmessage_size(cobj , key)
	local ret = {}
	for i=0,n-1 do
		tinsert(ret,  c._rmessage_uint52(cobj , key , i))
	end
	return ret
end

_reader[1] = function(msg) return _reader.int end
_reader[2] = function(msg) return _reader.real end
_reader[3] = function(msg) return _reader.bool end
_reader[4] = function(msg) return _reader.string end
_reader[5] = function(msg) return _reader.string end
_reader[6] = function(msg)
	local message = _reader.message
	return	function(self,key)
			return message(self, key, msg)
		end
end
_reader[7] = function(msg) return _reader.int64 end
_reader[8] = function(msg) return _reader.int32 end
_reader[9] = _reader[5]
_reader[10] = function(msg) return _reader.int52 end
_reader[11] = function(msg) return _reader.uint52 end

_reader[128+1] = function(msg) return _reader.int_repeated end
_reader[128+2] = function(msg) return _reader.real_repeated end
_reader[128+3] = function(msg) return _reader.bool_repeated end
_reader[128+4] = function(msg) return _reader.string_repeated end
_reader[128+5] = function(msg) return _reader.string_repeated end
_reader[128+6] = function(msg)
	local message = _reader.message_repeated
	return	function(self,key)
			return message(self, key, msg)
		end
end
_reader[128+7] = function(msg) return _reader.int64_repeated end
_reader[128+8] = function(msg) return _reader.int32_repeated end
_reader[128+9] = _reader[128+5]
_reader[128+10] = function(msg) return _reader.int52_repeated end
_reader[128+11] = function(msg) return _reader.uint52_repeated end

local _decode_type_meta = {}

function _decode_type_meta:__index(key)
	local t, msg = c._env_type(P, self._CType, key)
	local func = assert(_reader[t],key)(msg)
	self[key] = func
	return func
end

setmetatable(decode_type_cache , {
	__index = function(self, key)
		local v = setmetatable({ _CType = key } , _decode_type_meta)
		self[key] = v
		return v
	end
})

local function decode_message( message , buffer, length)
	local rmessage = c._rmessage_new(P, message, buffer, length)
	if rmessage then
		local self = {
			_CObj = rmessage,
			_CType = message,
		}
		c._add_rmessage(GC,rmessage)
		return setmetatable( self , _R_meta )
	end
end

----------- encode ----------------

local encode_type_cache = {}

local function encode_message(CObj, message_type, t)
	local type = encode_type_cache[message_type]
	for k,v in pairs(t) do
		local func = type[k]
		func(CObj, k , v)
	end
end

local _writer = {
	int = c._wmessage_integer,
	real = c._wmessage_real,
	enum = c._wmessage_string,
	string = c._wmessage_string,
	int64 = c._wmessage_int64,
	int32 = c._wmessage_int32,
	int52 = c._wmessage_int52,
	uint52 = c._wmessage_uint52,
}

function _writer:bool(k,v)
	c._wmessage_integer(self, k, v and 1 or 0)
end

function _writer:message(k, v , message_type)
	local submessage = c._wmessage_message(self, k)
	encode_message(submessage, message_type, v)
end

function _writer:int_repeated(k,v)
	for _,v in ipairs(v) do
		c._wmessage_integer(self,k,v)
	end
end

function _writer:real_repeated(k,v)
	for _,v in ipairs(v) do
		c._wmessage_real(self,k,v)
	end
end

function _writer:bool_repeated(k,v)
	for _,v in ipairs(v) do
		c._wmessage_integer(self, k, v and 1 or 0)
	end
end

function _writer:string_repeated(k,v)
	for _,v in ipairs(v) do
		c._wmessage_string(self,k,v)
	end
end

function _writer:message_repeated(k,v, message_type)
	for _,v in ipairs(v) do
		local submessage = c._wmessage_message(self, k)
		encode_message(submessage, message_type, v)
	end
end

function _writer:int32_repeated(k,v)
	for _,v in ipairs(v) do
		c._wmessage_int32(self,k,v)
	end
end

function _writer:int64_repeated(k,v)
	for _,v in ipairs(v) do
		c._wmessage_int64(self,k,v)
	end
end

function _writer:int52_repeated(k,v)
	for _,v in ipairs(v) do
		c._wmessage_int52(self,k,v)
	end
end

function _writer:uint52_repeated(k,v)
	for _,v in ipairs(v) do
		c._wmessage_uint52(self,k,v)
	end
end

function _writer:enum(k, v) 
    if type(v) == "number" then
        return c._wmessage_integer(self, k, v)
    end
    return c._wmessage_string(self, k, v)
end

_writer[1] = function(msg) return _writer.int end
_writer[2] = function(msg) return _writer.real end
_writer[3] = function(msg) return _writer.bool end
_writer[4] = function(msg) return _writer.enum end
_writer[5] = function(msg) return _writer.string end
_writer[6] = function(msg)
	local message = _writer.message
	return	function(self,key , v)
			return message(self, key, v, msg)
		end
end
_writer[7] = function(msg) return _writer.int64 end
_writer[8] = function(msg) return _writer.int32 end
_writer[9] = _writer[5]
_writer[10] = function(msg) return _writer.int52 end
_writer[11] = function(msg) return _writer.uint52 end

_writer[128+1] = function(msg) return _writer.int_repeated end
_writer[128+2] = function(msg) return _writer.real_repeated end
_writer[128+3] = function(msg) return _writer.bool_repeated end
_writer[128+4] = function(msg) return _writer.string_repeated end
_writer[128+5] = function(msg) return _writer.string_repeated end
_writer[128+6] = function(msg)
	local message = _writer.message_repeated
	return	function(self,key, v)
			return message(self, key, v, msg)
		end
end
_writer[128+7] = function(msg) return _writer.int64_repeated end
_writer[128+8] = function(msg) return _writer.int32_repeated end
_writer[128+9] = _writer[128+5]
_writer[128+10] = function(msg) return _writer.int52_repeated end
_writer[128+11] = function(msg) return _writer.uint52_repeated end

local _encode_type_meta = {}

function _encode_type_meta:__index(key)
	local t, msg = c._env_type(P, self._CType, key)
	local func = assert(_writer[t],key)(msg)
	self[key] = func
	return func
end

setmetatable(encode_type_cache , {
	__index = function(self, key)
		local v = setmetatable({ _CType = key } , _encode_type_meta)
		self[key] = v
		return v
	end
})

function encode( message, t , func , ...)
	local encoder = c._wmessage_new(P, message)
	assert(encoder ,  message)
	encode_message(encoder, message, t)
	if func then
		local buffer, len = c._wmessage_buffer(encoder)
		local ret = func(buffer, len, ...)
		c._wmessage_delete(encoder)
		return ret
	else
		local s = c._wmessage_buffer_string(encoder)
		c._wmessage_delete(encoder)
		return s
	end
end

--------- unpack ----------

local _pattern_type = {
	[1] = {"%d","i"},
	[2] = {"%F","r"},
	[3] = {"%d","b"},
	[4] = {"%d","i"},
	[5] = {"%s","s"},
	[6] = {"%s","m"},
	[7] = {"%D","x"},
	[8] = {"%d","p"},
	[10] =  {"%D","d"},
	[11] =  {"%D","u"},
	[128+1] = {"%a","I"},
	[128+2] = {"%a","R"},
	[128+3] = {"%a","B"},
	[128+4] = {"%a","I"},
	[128+5] = {"%a","S"},
	[128+6] = {"%a","M"},
	[128+7] = {"%a","X"},
	[128+8] = {"%a","P"},
	[128+10] = {"%a", "D" },
	[128+11] = {"%a", "U" },
}

_pattern_type[9] = _pattern_type[5]
_pattern_type[128+9] = _pattern_type[128+5]


local function _pattern_create(pattern)
	local iter = string.gmatch(pattern,"[^ ]+")
	local message = iter()
	local cpat = {}
	local lua = {}
	for v in iter do
		local tidx = c._env_type(P, message, v)
		local t = _pattern_type[tidx]
		assert(t,tidx)
		tinsert(cpat,v .. " " .. t[1])
		tinsert(lua,t[2])
	end
	local cobj = c._pattern_new(P, message , "@" .. table.concat(cpat," "))
	if cobj == nil then
		return
	end
	c._add_pattern(GC, cobj)
	local pat = {
		CObj = cobj,
		format = table.concat(lua),
		size = 0
	}
	pat.size = c._pattern_size(pat.format)

	return pat
end

setmetatable(_pattern_cache, {
	__index = function(t, key)
		local v = _pattern_create(key)
		t[key] = v
		return v
	end
})

function unpack(pattern, buffer, length)
	local pat = _pattern_cache[pattern]
	return c._pattern_unpack(pat.CObj , pat.format, pat.size, buffer, length)
end

function pack(pattern, ...)
	local pat = _pattern_cache[pattern]
	return c._pattern_pack(pat.CObj, pat.format, pat.size , ...)
end

function check(typename , field)
	if field == nil then
		return c._env_type(P,typename)
	else
		return c._env_type(P,typename,field) ~=0
	end
end

--------------

local default_cache = {}

-- todo : clear default_cache, v._CObj

local function default_table(typename)
	local v = default_cache[typename]
	if v then
		return v
	end

	v = { __index = assert(decode_message(typename , "")) }

	default_cache[typename]  = v
	return v
end

local decode_message_mt = {}

local function decode_message_cb(typename, buffer)
	return setmetatable ( { typename, buffer } , decode_message_mt)
end

function decode(typename, buffer, length)
	local ret = {}
	local ok = c._decode(P, decode_message_cb , ret , typename, buffer, length)
	if ok then
		return setmetatable(ret , default_table(typename))
	else
		return false , c._last_error(P)
	end
end

local function expand(tbl)
	local typename = rawget(tbl , 1)
	local buffer = rawget(tbl , 2)
	tbl[1] , tbl[2] = nil , nil
	assert(c._decode(P, decode_message_cb , tbl , typename, buffer), typename)
	setmetatable(tbl , default_table(typename))
end

function decode_message_mt.__index(tbl, key)
	expand(tbl)
	return tbl[key]
end

function decode_message_mt.__pairs(tbl)
	expand(tbl)
	return pairs(tbl)
end

local function set_default(typename, tbl)
	for k,v in pairs(tbl) do
		if type(v) == "table" then
			local t, msg = c._env_type(P, typename, k)
			if t == 6 then
				set_default(msg, v)
			elseif t == 128+6 then
				for _,v in ipairs(v) do
					set_default(msg, v)
				end
			end
		end
	end
	return setmetatable(tbl , default_table(typename))
end

function register( buffer)
	c._env_register(P, buffer)
end

function register_file(filename)
	local f = assert(io.open(filename , "rb"))
	local buffer = f:read "*a"
	c._env_register(P, buffer)
	f:close()
end

default=set_default


================================================
FILE: Assets/Lua/3rd/pbc/protobuf.lua.meta
================================================
fileFormatVersion: 2
guid: 1ba29465c7f40ae4aa388cefab41f5e0
DefaultImporter:
  userData: 


================================================
FILE: Assets/Lua/3rd/pbc.meta
================================================
fileFormatVersion: 2
guid: 4bf5196cb12726f4a9958b8bbffdaffe
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/3rd.meta
================================================
fileFormatVersion: 2
guid: 0921f818f1bc02e499634048e5c59679
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Classloader.lua
================================================
local typeof = typeof
toluaSystem = System
local isInstanceOfType = typeof(toluaSystem.Object).IsInstanceOfType
local Timer = Timer.New  -- tolua.Timer

local function isFromCSharp(T)
  return T[".name"] ~= nil
end

local function isUserdataType(obj, T)
  if isFromCSharp(T) then
    return isInstanceOfType(typeof(T), obj)
  end
  return true
end

local config = {
  time = tolua.gettime, 
  setTimeout = function (f, milliseconds)
    local t = Timer(f, milliseconds / 1000, 1, true)
    t:Start()
    return t
  end,
  clearTimeout = function (t)
    t:Stop()
  end,
  customTypeCheck = function (T)
    if isFromCSharp(T) then
      return isUserdataType
    end
  end
}

UnityEngine.isFromCSharp = isFromCSharp

if jit then
  -- luajit table.move may causes a crash in a version, do not confirm whether the current version is fixed
  table.move = function(a1, f, e, t, a2)
    if a2 == nil then a2 = a1 end
    if t > f then
      t = e - f + t
      while e >= f do
        a2[t] = a1[e]
        t = t - 1
        e = e - 1
      end
    else
      while f <= e do
        a2[t] = a1[f]
        t = t + 1
        f = f + 1
      end
    end
  end
end

require("CoreSystemLua.All")("CoreSystemLua", config)
require("UnityAdapter")
require("ProtobufAdapter")
require("Compiled.manifest")("Compiled")

================================================
FILE: Assets/Lua/Classloader.lua.meta
================================================
fileFormatVersion: 2
guid: 896a17f3a9cc84246858465cab87a45a
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled/Protocol/AutoGen/CommonPrototype.lua
================================================
-- Generated by CSharp.lua Compiler
--------------------------------------------------------------------------------
-- <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>
--------------------------------------------------------------------------------
-- Generated from: CommonPrototype.proto
local System = System
local CSharpLuaSettingProto
local ListValuePairProto
System.import(function (out)
  CSharpLuaSettingProto = CSharpLua.Project.Protocol.SettingProto
  ListValuePairProto = System.List(CSharpLuaSettingProto.ValuePairProto)
end)
System.namespace("CSharpLua.Project.Protocol", function (namespace)
  namespace.class("SettingProto", function (namespace)
    local __ctor__
    namespace.class("ValuePairProto", function (namespace)
      return {
        base = function (out)
          return {
            out.ProtoBuf.IProtocol
          }
        end
      }
    end)
    __ctor__ = function (this)
      this.Values = ListValuePairProto()
    end
    return {
      base = function (out)
        return {
          out.ProtoBuf.IProtocol
        }
      end,
      SettingsMark = 0,
      __ctor__ = __ctor__
    }
  end)
end)


================================================
FILE: Assets/Lua/Compiled/Protocol/AutoGen/CommonPrototype.lua.meta
================================================
fileFormatVersion: 2
guid: 4c15c22eddb928345a01a9ff7de17cd5
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled/Protocol/AutoGen.meta
================================================
fileFormatVersion: 2
guid: 1b33b39ff0a98b243be124e052b89741
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled/Protocol/IProtocol.lua
================================================
-- Generated by CSharp.lua Compiler
local System = System
System.namespace("ProtoBuf", function (namespace)
  namespace.interface("IProtocol", function ()
    return {}
  end)
end)


================================================
FILE: Assets/Lua/Compiled/Protocol/IProtocol.lua.meta
================================================
fileFormatVersion: 2
guid: 8955781becf16fc48b8ec217d536653e
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled/Protocol.meta
================================================
fileFormatVersion: 2
guid: 839f71ef436eef449a8aa098ab4c8008
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled/Sample/TestCoroutine.lua
================================================
-- Generated by CSharp.lua Compiler
local System = System
local UnityEngine = UnityEngine
local ListInt32 = System.List(System.Int32)
System.namespace("Sample", function (namespace)
  namespace.class("TestCoroutine", function (namespace)
    local Awake, OnTick, Test, T1, T2, __ctor__
    __ctor__ = function (this)
      this.list = ListInt32()
      System.base(this).__ctor__(this)
    end
    Awake = function (this)
      UnityEngine.Debug.Log("TestCoroutine")
      this:StartCoroutine(OnTick(this))
      UnityEngine.MonoBehaviour.print(this:getgameObject():getname())
      UnityEngine.MonoBehaviour.print(#this.list)
      this:StartCoroutine(T1(this))
    end
    OnTick = function (this)
      return System.yieldIEnumerator(function (this)
        while true do
          System.yield(UnityEngine.WaitForSeconds(1))
          UnityEngine.MonoBehaviour.print("TestCoroutine.OnTick")
        end
      end, System.Object, this)
    end
    Test = function (this)
      UnityEngine.MonoBehaviour.print("TestCoroutine.Test")
    end
    T1 = function (this)
      return System.yieldIEnumerator(function (this)
        UnityEngine.MonoBehaviour.print("a0")
        System.yield(nil)
        UnityEngine.MonoBehaviour.print("a1")
        System.yield(T2(this))
        UnityEngine.MonoBehaviour.print("a2")
      end, System.Object, this)
    end
    T2 = function (this)
      return System.yieldIEnumerator(function (this)
        UnityEngine.MonoBehaviour.print("b0")
        System.yield(nil)
        UnityEngine.MonoBehaviour.print("b1")
        System.yield(nil)
        UnityEngine.MonoBehaviour.print("b2")
      end, System.Object, this)
    end
    return {
      base = function (out)
        return {
          out.UnityEngine.MonoBehaviour
        }
      end,
      Awake = Awake,
      OnTick = OnTick,
      Test = Test,
      __ctor__ = __ctor__
    }
  end)
end)


================================================
FILE: Assets/Lua/Compiled/Sample/TestCoroutine.lua.meta
================================================
fileFormatVersion: 2
guid: da6a71c38b8b9984c833b5b4ca0e5644
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled/Sample/TestHangingScript.lua
================================================
-- Generated by CSharp.lua Compiler
local System = System
local UnityEngine = UnityEngine
local ListInt32 = System.List(System.Int32)
System.namespace("Sample", function (namespace)
  namespace.class("TestHangingScript", function (namespace)
    local Awake, Start, __ctor__
    __ctor__ = function (this)
      this.l = ListInt32()
      this.vector2 = System.default(UnityEngine.Vector2)
      this.vector3 = System.default(UnityEngine.Vector3)
      System.base(this).__ctor__(this)
    end
    Awake = function (this)
      UnityEngine.MonoBehaviour.print("Awake")
      UnityEngine.MonoBehaviour.print(this.DataOfString)
      UnityEngine.MonoBehaviour.print(this.DataOfInt)
      UnityEngine.MonoBehaviour.print(this.DataOfString2)
      UnityEngine.MonoBehaviour.print(this.a)
      UnityEngine.MonoBehaviour.print(this.HangingMonoBehaviour:getname())
      UnityEngine.MonoBehaviour.print(System.String.JoinEnumerable(",", this.l))
      UnityEngine.MonoBehaviour.print(this.vector2:ToString() .. ", " .. this.vector3:ToString())
    end
    Start = function (this)
      UnityEngine.MonoBehaviour.print("Start")
    end
    return {
      base = function (out)
        return {
          out.UnityEngine.MonoBehaviour
        }
      end,
      DataOfInt = 0,
      DataOfString2 = "ddddd",
      a = 10,
      Awake = Awake,
      Start = Start,
      __ctor__ = __ctor__
    }
  end)
end)


================================================
FILE: Assets/Lua/Compiled/Sample/TestHangingScript.lua.meta
================================================
fileFormatVersion: 2
guid: 1a47e23a7d689fb4c8b535daac4e7506
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled/Sample/TestHelloWord.lua
================================================
-- Generated by CSharp.lua Compiler
local System = System
local UnityEngine = UnityEngine
local Sample
System.import(function (out)
  Sample = out.Sample
end)
System.namespace("Sample", function (namespace)
  namespace.class("TestHelloWord", function (namespace)
    local Awake, Start, Update
    Awake = function (this)
      UnityEngine.Debug.Log("TestHelloWord")
      this:getgameObject():AddComponent(Sample.TestCoroutine)
      local c = this:GetComponent(UnityEngine.MonoBehaviour)
      UnityEngine.MonoBehaviour.print(c:getname())

      local obj1 = UnityEngine.Object.FindObjectOfType(UnityEngine.MonoBehaviour)
      UnityEngine.Object.Destroy(obj1)

      local i = TestUtils.Load("Assets/CSharpLua/Examples/01_HelloWorld/TestLoader.prefab")
      local obj = UnityEngine.Object.Instantiate(i)
      obj:gettransform():setparent(this:gettransform())

      Sample.TestProtobuf.Run()
    end
    Start = function (this)
      UnityEngine.MonoBehaviour.print("TestHelloWord.Start")
    end
    Update = function (this)
      UnityEngine.MonoBehaviour.print("TestHelloWord.Update")
    end
    return {
      base = function (out)
        return {
          out.UnityEngine.MonoBehaviour
        }
      end,
      Awake = Awake,
      Start = Start,
      Update = Update
    }
  end)
end)


================================================
FILE: Assets/Lua/Compiled/Sample/TestHelloWord.lua.meta
================================================
fileFormatVersion: 2
guid: d650d1e86eb0ece4981a48b1b0e95878
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled/Sample/TestProtobuf.lua
================================================
-- Generated by CSharp.lua Compiler
local System = System
local UnityEngine = UnityEngine
local CSharpLuaProjectProtocol
local CSharpLuaSettingProto
System.import(function (out)
  CSharpLuaProjectProtocol = CSharpLua.Project.Protocol
  CSharpLuaSettingProto = CSharpLua.Project.Protocol.SettingProto
end)
System.namespace("Sample", function (namespace)
  namespace.class("TestProtobuf", function (namespace)
    local Run, Encode, Decode
    Run = function ()
      protobuf.register_file("Assets/Lua/3rd/pbc/Protocol/CommonPrototype.pb")

      local default = CSharpLuaProjectProtocol.SettingProto()
      default.SettingsMark = 101
      local proto = default
      local extern = CSharpLuaSettingProto.ValuePairProto()
      extern.Key = "a"
      extern.Value = "b"
      proto.Values:Add(extern)
      local bytes = Encode(proto)
      local t = Decode(bytes, CSharpLuaProjectProtocol.SettingProto)
      UnityEngine.Debug.LogFormat("ProtobufDecode {0}", t.SettingsMark)
    end
    Encode = function (proto)
      local bytes = nil
      bytes = encodeProtobuf(proto)
      return bytes
    end
    Decode = function (bytes, T)
      local t = nil
      t = decodeProtobuf(bytes, T)
      return t
    end
    return {
      Run = Run
    }
  end)
end)


================================================
FILE: Assets/Lua/Compiled/Sample/TestProtobuf.lua.meta
================================================
fileFormatVersion: 2
guid: 73822b2e531795d4d9cca42b4b834d38
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled/Sample.meta
================================================
fileFormatVersion: 2
guid: f5664ef679fb2bb4c85569a055f6debd
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled/manifest.lua
================================================
-- Generated by CSharp.lua Compiler
return function (path)
  return System.init({
    path = path,
    files = {
      "Protocol.AutoGen.CommonPrototype",
      "Protocol.IProtocol",
      "Sample.TestCoroutine",
      "Sample.TestHangingScript",
      "Sample.TestHelloWord",
      "Sample.TestProtobuf"
    },
    types = {
      "ProtoBuf.IProtocol",
      "CSharpLua.Project.Protocol.SettingProto",
      "CSharpLua.Project.Protocol.SettingProto.ValuePairProto",
      "Sample.TestCoroutine",
      "Sample.TestHangingScript",
      "Sample.TestHelloWord",
      "Sample.TestProtobuf"
    }
  })
end


================================================
FILE: Assets/Lua/Compiled/manifest.lua.meta
================================================
fileFormatVersion: 2
guid: d66a9fc55c5de2a459db4893f0db8279
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/Compiled.meta
================================================
fileFormatVersion: 2
guid: e7429fd7d84e7a94691ccffa8843d572
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/CoreSystemLua/All.lua
================================================
--[[
Copyright 2017 YANG Huan (sy.yanghuan@gmail.com).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--]]

return function(dir, conf)
  dir = (dir and #dir > 0) and (dir .. ".CoreSystem.") or "CoreSystem."
  local require = require
  local load = function(module) return require(dir .. module) end
    
  load("Core")(conf)
  load("Interfaces")
  load("Exception")
  load("Number")
  load("Char")
  load("String")
  load("Boolean")
  load("Delegate")
  load("Enum")
  load("TimeSpan")
  load("DateTime")
  load("Collections.EqualityComparer")
  load("Array")
  load("Type")
  load("Collections.List")
  load("Collections.Dictionary")
  load("Collections.Queue")
  load("Collections.Stack")
  load("Collections.HashSet")
  load("Collections.LinkedList")
  load("Collections.Linq")
  load("Convert")
  load("Math")
  load("Random")
  load("Text.StringBuilder")
  load("Console")
  load("IO.File")
  load("Reflection.Assembly")
  load("Threading.Timer")
  load("Threading.Thread")
  load("Threading.Task")
  load("Utilities")
end


================================================
FILE: Assets/Lua/CoreSystemLua/All.lua.meta
================================================
fileFormatVersion: 2
guid: f7703f768c9abc748b02b74d42ff099c
timeCreated: 1526899278
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Array.lua
================================================
--[[
Copyright 2017 YANG Huan (sy.yanghuan@gmail.com).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--]]

local System = System
local define = System.define
local throw = System.throw
local div = System.div
local trueFn = System.trueFn
local falseFn = System.falseFn
local lengthFn = System.lengthFn

local InvalidOperationException = System.InvalidOperationException
local NullReferenceException = System.NullReferenceException
local ArgumentException = System.ArgumentException
local ArgumentNullException = System.ArgumentNullException
local ArgumentOutOfRangeException = System.ArgumentOutOfRangeException
local IndexOutOfRangeException = System.IndexOutOfRangeException
local NotSupportedException = System.NotSupportedException
local EqualityComparer = System.EqualityComparer
local Comparer_1 = System.Comparer_1
local IEnumerator_1 = System.IEnumerator_1

local assert = assert
local select = select
local getmetatable = getmetatable
local setmetatable = setmetatable
local type = type
local table = table
local tinsert = table.insert
local tremove = table.remove
local tmove = table.move
local tsort = table.sort
local pack = table.pack
local unpack = table.unpack
local error = error
local coroutine = coroutine
local ccreate = coroutine.create
local cresume = coroutine.resume
local cyield = coroutine.yield

local null = {}
local arrayEnumerator
local arrayFromTable

local versions = setmetatable({}, { __mode = "k" })
System.versions = versions

local function throwFailedVersion()
  throw(InvalidOperationException("Collection was modified; enumeration operation may not execute."))
end

local function checkIndex(t, index) 
  if index < 0 or index >= #t then
    throw(ArgumentOutOfRangeException("index"))
  end
end

local function checkIndexAndCount(t, index, count)
  if t == nil then throw(ArgumentNullException("array")) end
  if index < 0 or count < 0 or index + count > #t then
    throw(ArgumentOutOfRangeException("index or count"))
  end
end

local function wrap(v)
  if v == nil then 
    return null 
  end
  return v
end

local function unWrap(v)
  if v == null then 
    return nil 
  end
  return v
end

local function ipairs(t)
  local version = versions[t]
  return function (t, i)
    if version ~= versions[t] then
      throwFailedVersion()
    end
    local v = t[i]
    if v ~= nil then
      if v == null then
        v = nil
      end
      return i + 1, v
    end
  end, t, 1
end

local function eachFn(en)
  if en:MoveNext() then
    return true, en:getCurrent()
  end
  return nil
end

local function each(t)
  if t == nil then throw(NullReferenceException(), 1) end
  local getEnumerator = t.GetEnumerator
  if getEnumerator == arrayEnumerator then
    return ipairs(t)
  end
  local en = getEnumerator(t)
  return eachFn, en
end

function System.isArrayLike(t)
  return type(t) == "table" and t.GetEnumerator == arrayEnumerator
end

function System.isEnumerableLike(t)
  return type(t) == "table" and t.GetEnumerator ~= nil
end

function System.toLuaTable(array)
  local t = {}
  for i = 1, #array do
    local item = array[i]
    if item ~= null then
      t[i] = item
    end
  end   
  return t
end

System.null = null
System.Void = null
System.each = each
System.ipairs = ipairs
System.throwFailedVersion = throwFailedVersion

System.wrap = wrap
System.unWrap = unWrap
System.checkIndex = checkIndex
System.checkIndexAndCount = checkIndexAndCount

local Array
local emptys = {}

local function get(t, index)
  local v = t[index + 1]
  if v == nil then
    throw(ArgumentOutOfRangeException("index"))
  end
  if v ~= null then 
    return v
  end
  return nil
end

local function set(t, index, v)
  index = index + 1
  if t[index] == nil then
    throw(ArgumentOutOfRangeException("index"))
  end
  t[index] = v == nil and null or v
  versions[t] = (versions[t] or 0) + 1
end

local function add(t, v)
  local n = #t
  t[n + 1] = v == nil and null or v
  versions[t] = (versions[t] or 0) + 1
  return n
end

local function addRange(t, collection)
  if collection == nil then throw(ArgumentNullException("collection")) end
  local count = #t + 1
  if collection.GetEnumerator == arrayEnumerator then
    tmove(collection, 1, #collection, count, t)
  else
    for _, v in each(collection) do
      t[count] = v == nil and null or v
      count = count + 1
    end
  end
  versions[t] = (versions[t] or 0) + 1
end

local function unset()
  throw(NotSupportedException("Collection is read-only."))
end

local function fill(t, f, e, v)
  while f <= e do
    t[f] = v
    f = f + 1
  end
end

local function buildArray(T, len, t)
  if t == nil then 
    t = {}
    if len > 0 then
      local genericT = T.__genericT__
      local default = genericT:default()
      if default == nil then
        fill(t, 1, len, null)
      elseif type(default) ~= "table" then
        fill(t, 1, len, default)
      else
        for i = 1, len do
          t[i] = genericT:default()
        end
      end
    end
  else
    if len > 0 then
      local default = T.__genericT__:default()
      if default == nil then
        for i = 1, len do
          if t[i] == nil then
            t[i] = null
          end
        end
      end
    end
  end
  return setmetatable(t, T)
end

local function indexOf(t, v, startIndex, count)
  if t == nil then throw(ArgumentNullException("array")) end
  local len = #t
  if not startIndex then
    startIndex, count = 0, len
  elseif not count then
    if startIndex < 0 or startIndex > len then
      throw(ArgumentOutOfRangeException("startIndex"))
    end
    count = len - startIndex
  else
    if startIndex < 0 or startIndex > len then
      throw(ArgumentOutOfRangeException("startIndex"))
    end
    if count < 0 or count > len - startIndex then
      throw(ArgumentOutOfRangeException("count"))
    end
  end
  local comparer = EqualityComparer(t.__genericT__).getDefault()
  local equals = comparer.EqualsOf
  for i = startIndex + 1, startIndex + count do
    local item = t[i]
    if item == null then item = nil end
    if equals(comparer, item, v) then
      return i - 1
    end
  end
  return -1
end

local function findIndex(t, startIndex, count, match)
  if t == nil then throw(ArgumentNullException("array")) end
  local len = #t
  if not count then
    startIndex, count, match = 0, len, startIndex
  elseif not match then
    if startIndex < 0 or startIndex > len then
      throw(ArgumentOutOfRangeException("startIndex"))
    end
    count, match = len - startIndex, count
  else
    if startIndex < 0 or startIndex > len then
      throw(ArgumentOutOfRangeException("startIndex"))
    end
    if count < 0 or count > len - startIndex then
      throw(ArgumentOutOfRangeException("count"))
    end
  end
  if match == nil then throw(ArgumentNullException("match")) end
  local endIndex = startIndex + count
  for i = startIndex + 1, endIndex  do
    local item = t[i]
    if item == null then item = nil end
    if match(item) then
      return i - 1
    end
  end
  return -1
end

local function copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length, reliable)
  if not reliable then
    checkIndexAndCount(sourceArray, sourceIndex, length)
    checkIndexAndCount(destinationArray, destinationIndex, length)
  end
  tmove(sourceArray, sourceIndex + 1, sourceIndex + length, destinationIndex + 1, destinationArray)
end

local function removeRange(t, index, count)
  local n = #t
  if count < 0 or index > n - count then
    throw(ArgumentOutOfRangeException("index or count"))
  end
  if count > 0 then
    if index + count < n then
      tmove(t, index + count + 1, n, index + 1)
    end
    fill(t, n - count + 1, n, nil)
    versions[t] = (versions[t] or 0) + 1
  end
end

local function findAll(t, match)
  if t == nil then throw(ArgumentNullException("array")) end
  if match == nil then throw(ArgumentNullException("match")) end
  local list = {}
  local count = 1
  for i = 1, #t do
    local item = t[i]
    if (item == null and match(nil)) or match(item) then
      list[count] = item
      count = count + 1
    end
  end
  return list
end

local function getComp(t, comparer)
  local compare
  if comparer then
    if type(comparer) == "function" then
      compare = comparer
    else
      local Compare = comparer.Compare
      if Compare then
        compare = function (x, y) return Compare(comparer, x, y) end
      else
        compare = comparer
      end
    end
  else
    comparer = Comparer_1(t.__genericT__).getDefault()
    local Compare = comparer.Compare
    compare = function (x, y) return Compare(comparer, x, y) end
  end
  return function(x, y) 
    if x == null then x = nil end
    if y == null then y = nil end
    return compare(x, y) < 0
  end
end

local function sort(t, comparer)
  if #t > 1 then
    tsort(t, getComp(t, comparer))
    versions[t] = (versions[t] or 0) + 1
  end
end

local ArrayEnumerator = define("System.ArrayEnumerator", function (T)
  return {
    base = { IEnumerator_1(T) }
  }
end, {
  getCurrent = System.getCurrent, 
  Dispose = System.emptyFn,
  Reset = function (this)
    this.index = 1
    this.current = nil
  end,
  MoveNext = function (this)
    local t = this.list
    if this.version ~= versions[t] then
      throwFailedVersion()
    end
    local index = this.index
    local v = t[index]
    if v ~= nil then
      if v == null then
        this.current = nil
      else
        this.current = v
      end
      this.index = index + 1
      return true
    end
    this.current = nil
    return false
  end
})

arrayEnumerator = function (t, T)
  if not T then T = t.__genericT__ end
  return setmetatable({ list = t, index = 1, version = versions[t], currnet = T:default() }, ArrayEnumerator(T))
end

local ArrayReverseEnumerator = define("System.ArrayReverseEnumerator", function (T)
  return {
    base = { IEnumerator_1(T) }
  }
end, {
  getCurrent = System.getCurrent, 
  Dispose = System.emptyFn,
  Reset = function (this)
    this.index = #this.list
    this.current = nil
  end,
  MoveNext = function (this)
    local t = this.list
    if this.version ~= versions[t] then
      throwFailedVersion()
    end
    local index = this.index
    local v = t[index]
    if v ~= nil then
      if v == null then
        this.current = nil
      else
        this.current = v
      end
      this.index = index - 1
      return true
    end
    this.current = nil
    return false
  end
})

local function reverseEnumerator(t)
  local T = t.__genericT__
  return setmetatable({ list = t, index = #t, version = versions[t], currnet = T:default() }, ArrayReverseEnumerator(T))
end

local function checkArrayIndex(index1, index2)
  if index2 then
    throw(ArgumentException("Indices length does not match the array rank."))
  elseif type(index1) == "table" then
    if #index1 ~= 1 then
      throw(ArgumentException("Indices length does not match the array rank."))
    else
      index1 = index1[1]
    end
  end
  return index1
end

Array = {
  version = 0,
  new = buildArray,
  set = set,
  get = get,
  ctorList = function (t, ...)
    local len = select("#", ...)
    if len == 0 then return end
    local collection = ...
    if type(collection) == "number" then return end
    addRange(t, collection)
  end,
  add = add,
  addObj = function (this, item)
    if not System.is(item, this.__genericT__) then
      throw(ArgumentException())
    end
    return add(this, item)
  end,
  addRange = addRange,
  AsReadOnly = function (t)
    return System.ReadOnlyCollection(t.__genericT__)(t)
  end,
  clear = function (t)
    local size = #t
    if size > 0 then
      for i = 1, size do
        t[i] = nil
      end
      versions[t] = (versions[t] or 0) + 1
    end
  end,
  findAll = function (t, match)
    return setmetatable(findAll(t, match), System.List(t.__genericT__))
  end,
  first = function (t)
    if #t == 0 then throw(InvalidOperationException()) end
    local v = t[1]
    if v ~= null then
      return v
    end
    return nil
  end,
  insert = function (t, index, v)
    if index < 0 or index > #t then
      throw(ArgumentOutOfRangeException("index"))
    end
    tinsert(t, index + 1, v == nil and null or v)
    versions[t] = (versions[t] or 0) + 1
  end,
  insertRange = function (t, index, collection) 
    if collection == nil then throw(ArgumentNullException("collection")) end
    local len = #t
    if index < 0 or index > len then
      throw(ArgumentOutOfRangeException("index"))
    end
    if t.GetEnumerator == arrayEnumerator then
      local count = #collection
      if count > 0 then
        if index < len then
          tmove(t, index + 1, len, index + 1 + count, t)
        end
        if t == collection then
          tmove(t, 1, index, index + 1, t)
          tmove(t, index + 1 + count, count * 2, index * 2 + 1, t)
        else
          tmove(collection, 1, count, index + 1, t)
        end
      end
    else
      for _, v in each(collection) do
        index = index + 1
        tinsert(t, index, v == nil and null or v)
      end
    end
    versions[t] = (versions[t] or 0) + 1
  end,
  last = function (t)
    local n = #t
    if n == 0 then throw(InvalidOperationException()) end
    local v = t[n]
    if v ~= null then
      return v
    end
    return nil
  end,
  popFirst = function (t)
    if #t == 0 then throw(InvalidOperationException()) end
    local v = t[1]
    tremove(t, 1)
    versions[t] = (versions[t] or 0) + 1
    if v ~= null then
      return v
    end
    return nil
  end,
  popLast = function (t)
    local n = #t
    if n == 0 then throw(InvalidOperationException()) end
    local v = t[n]
    t[n] = nil
    if v ~= null then
      return v
    end
    return nil
  end,
  removeRange = removeRange,
  remove = function (t, v)
    local index = indexOf(t, v)
    if index >= 0 then
      tremove(t, index + 1)
      versions[t] = (versions[t] or 0) + 1
      return true
    end
    return false
  end,
  removeAll = function (t, match)
    if match == nil then throw(ArgumentNullException("match")) end
    local size = #t
    local freeIndex = 1
    while freeIndex <= size do
      local item = t[freeIndex]
      if item == null then  item = nil end
      if match(item) then
        break
      end
      freeIndex = freeIndex + 1 
    end
    if freeIndex > size then return 0 end
  
    local current = freeIndex + 1
    while current <= size do 
      while current <= size do
        local item = t[current]
        if item == null then item = nil end
        if not match(item) then
          break
        end
        current = current + 1 
      end
      if current <= size then
        t[freeIndex] = t[current]
        freeIndex = freeIndex + 1
        current = current + 1
      end
    end
    freeIndex = freeIndex -1
    local count = size - freeIndex
    removeRange(t, freeIndex, count)
    return count
  end,
  removeAt = function (t, index)
    local v = tremove(t, index + 1)
    if v == nil then
      throw(ArgumentOutOfRangeException("index"))
    end
    versions[t] = (versions[t] or 0) + 1
  end,
  getRange = function (t, index, count)
    if count < 0 or index > #t - count then
      throw(ArgumentOutOfRangeException("index or count"))
    end
    local list = {}
    tmove(t, index + 1, index + count, 1, list)
    return setmetatable(list, System.List(t.__genericT__))
  end,
  reverseEnumerator = reverseEnumerator,
  getCount = lengthFn,
  getSyncRoot = System.identityFn,
  getLongLength = lengthFn,
  getLength = lengthFn,
  getIsSynchronized = falseFn,
  getIsReadOnly = falseFn,
  getIsFixedSize = trueFn,
  getRank = System.oneFn,
  Add = unset,
  Clear = unset,
  Insert = unset,
  Remove = unset,
  RemoveAt = unset,
  BinarySearch = function (t, ...)
    if t == nil then throw(ArgumentNullException("array")) end
    local len = #t
    local index, count, v, comparer
    local n = select("#", ...)
    if n == 1 or n == 2 then
      index, count, v, comparer = 0, len, ...
    else
      index, count, v, comparer = ...
    end
    checkIndexAndCount(t, index, count)
    local compare
    if comparer == nil then
      comparer = Comparer_1(t.__genericT__).getDefault()
      compare = comparer.Compare 
    else
      compare = comparer.Compare
    end
    local lo = index
    local hi = index + count - 1
    while lo <= hi do
      local i = lo + div(hi - lo, 2)
      local item = t[i + 1]
      if item == null then item = nil end
      local order = compare(comparer, item, v);
      if order == 0 then return i end
      if order < 0 then
        lo = i + 1
      else
        hi = i - 1
      end
    end
    return -1
  end,
  ClearArray = function (t, index, length)
    if t == nil then throw(ArgumentNullException("array")) end
    if index < 0 or length < 0 or index + length > #t then
      throw(IndexOutOfRangeException())
    end
    local default = t.__genericT__:default()
    if default == nil then default = null end
    fill(t, index + 1, index + length, default)
  end,
  Contains = function (t, v)
    return indexOf(t, v) ~= -1
  end,
  Copy = function (t, ...)
    local len = select("#", ...)     
    if len == 2 then
      local array, length = ...
      copy(t, 0, array, 0, length)
    else 
      copy(t, ...)
    end
  end,
  CreateInstance = function (elementType, length)
    return buildArray(Array(elementType[1]), length)
  end,
  Empty = function (T)
    local t = emptys[T]
    if t == nil then
      t = Array(T)()
      emptys[T] = t
    end
    return t
  end,
  Exists = function (t, match)
    return findIndex(t, match) ~= -1
  end,
  Fill = function (t, value, startIndex, count)
    if t == nil then throw(ArgumentNullException("array")) end
    local len = #t
    if not startIndex then
      startIndex, count = 0, len
    else
      if startIndex < 0 or startIndex > len then
        throw(ArgumentOutOfRangeException("startIndex"))
      end
      if count < 0 or count > len - startIndex then
        throw(ArgumentOutOfRangeException("count"))
      end
    end
    fill(t, startIndex + 1, startIndex + count, value)
  end,
  Find = function (t, match)
    if t == nil then throw(ArgumentNullException("array")) end
    if match == nil then throw(ArgumentNullException("match")) end
    for i = 1, #t do
      local item = t[i]
      if item == null then item = nil end
      if match(item) then
        return item
      end
    end
    return t.__genericT__:default()
  end,
  FindAll = function (t, match)
    return setmetatable(findAll(t, match), Array(t.__genericT__))
  end,
  FindIndex = findIndex,
  FindLast = function (t, match)
    if t == nil then throw(ArgumentNullException("array")) end
    if match == nil then throw(ArgumentNullException("match")) end
    for i = #t, 1, -1 do
      local item = t[i]
      if item == null then item = nil end
      if match(item) then
        return item
      end
    end
    return t.__genericT__:default()
  end,
  FindLastIndex = function (t, startIndex, count, match)
    if t == nil then throw(ArgumentNullException("array")) end
    local len = #t
    if not count then
      startIndex, count, match = len - 1, len, startIndex
    elseif not match then
      count, match = startIndex + 1, count
    end
    if match == nil then throw(ArgumentNullException("match")) end
    if count < 0 or startIndex - count + 1 < 0 then
      throw(ArgumentOutOfRangeException("count"))
    end
    local endIndex = startIndex - count + 1
    for i = startIndex + 1, endIndex + 1, -1 do
      local item = t[i]
      if item == null then
        item = nil
      end
      if match(item) then
        return i - 1
      end
    end
    return -1
  end,
  ForEach = function (t, action)
    if action == nil then throw(ArgumentNullException("action")) end
    for i = 1, #t do
      local item = t[i]
      if item == null then item = nil end
      action(item)
    end
  end,
  IndexOf = indexOf,
  LastIndexOf = function (t, value, startIndex, count)
    if t == nil then throw(ArgumentNullException("array")) end
    local len = #t
    if not startIndex then
      startIndex, count = len - 1, len
    elseif not count then
      count = len == 0 and 0 or (startIndex + 1)
    end
    if len == 0 then
      if startIndex ~= -1 and startIndex ~= 0 then
        throw(ArgumentOutOfRangeException("startIndex"))
      end
      if count ~= 0 then
        throw(ArgumentOutOfRangeException("count"))
      end
    end
    if startIndex < 0 or startIndex >= len then
      throw(ArgumentOutOfRangeException("startIndex"))
    end
    if count < 0 or startIndex - count + 1 < 0 then
      throw(ArgumentOutOfRangeException("count"))
    end
    local comparer = EqualityComparer(t.__genericT__).getDefault()
    local equals = comparer.EqualsOf
    local endIndex = startIndex - count + 1
    for i = startIndex + 1, endIndex + 1, -1 do
      local item = t[i]
      if item == null then item = nil end
      if equals(comparer, item, value) then
        return i - 1
      end
    end
    return -1
  end,
  Resize = function (t, newSize, T)
    if newSize < 0 then throw(ArgumentOutOfRangeException("newSize")) end
    if t == nil then
      return buildArray(Array(T), newSize)
    end
    local len = #t
    if len > newSize then
      fill(t, newSize + 1, len, nil)
    elseif len < newSize then
      local default = t.__genericT__:default()
      if default == nil then default = null end
      fill(t, len + 1, newSize, default)
    end
    return t
  end,
  Reverse = function (t, index, count)
    if not index then
      index = 0
      count = #t
    else
      if count < 0 or index > #t - count then
        throw(ArgumentOutOfRangeException("index or count"))
      end
    end
    local i, j = index + 1, index + count
    while i <= j do
      t[i], t[j] = t[j], t[i]
      i = i + 1
      j = j - 1
    end
    versions[t] = (versions[t] or 0) + 1
  end,
  Sort = function (t, ...)
    if t == nil then throw(ArgumentNullException("array")) end
    local len = select("#", ...)
    if len == 0 then
      sort(t)
    elseif len == 1 then
      local comparer = ...
      sort(t, comparer)
    else
      local index, count, comparer = ...
      if count > 1 then
        local comp = getComp(t, comparer)
        if index == 0 and count == #t then
          tsort(t, comp)
        else
          checkIndexAndCount(t, index, count)
          local arr = {}
          tmove(t, index + 1, index + count, 1, arr)
          tsort(arr, comp)
          tmove(arr, 1, count, index + 1, t)
        end
        versions[t] = (versions[t] or 0) + 1
      end
    end
  end,
  toArray = function (t)
    local array = {}    
    if t.GetEnumerator == arrayEnumerator then
      tmove(t, 1, #t, 1, array)
    else
      local count = 1
      for _, v in each(t) do
        array[count] = v == nil and null or v
        count = count + 1
      end
    end
    return arrayFromTable(array, t.__genericT__)
  end,
  TrueForAll = function (t, match)
    if t == nil then throw(ArgumentNullException("array")) end
    if match == nil then throw(ArgumentNullException("match")) end
    for i = 1, #t do
      local item = t[i]
      if item == null then item = nil end
      if not match(item) then
        return false
      end
    end
    return true
  end,
  Clone = function (this)
    local t = setmetatable({}, getmetatable(this))
    tmove(this, 1, #this, 1, t)
    return t
  end,
  CopyTo = function (this, array, index)
    local n = #this
    checkIndexAndCount(array, index, n)
    local T = this.__genericT__
    if T.class == "S" then
      local default = T:default()
      if type(default) == "table" then
        for i = 1, n do
          array[i + index] = this[i]:__clone__()
        end
        return
      end
    end
    tmove(this, 1, n, index + 1, array)
  end,
  GetEnumerator = arrayEnumerator,
  GetLength = function (this, dimension)
    if dimension ~= 0 then throw(IndexOutOfRangeException()) end
    return #this
  end,
  GetLowerBound = function (this, dimension)
    if dimension ~= 0 then throw(IndexOutOfRangeException()) end
    return 0
  end,
  GetUpperBound = function (this, dimension)
    if dimension ~= 0 then throw(IndexOutOfRangeException()) end
    return #this - 1
  end,
  GetValue = function (this, index1, index2)
    if index1 == nil then throw(ArgumentNullException("indices")) end
    return get(this, checkArrayIndex(index1, index2))
  end,
  SetValue = function (this, value, index1, index2)
    if index1 == nil then throw(ArgumentNullException("indices")) end
    set(this, checkArrayIndex(index1, index2), System.castWithNullable(this.__genericT__, value))
  end,
  Clone = function (this)
    local array = {}
    tmove(this, 1, #this, 1, array)
    return arrayFromTable(array, this.__genericT__)
  end
}

function Array.__call(T, ...)
  return buildArray(T, select("#", ...), { ... })
end

function System.arrayFromList(t)
  return setmetatable(t, Array(t.__genericT__))
end

arrayFromTable = function (t, T, readOnly)
  assert(T)
  local array = setmetatable(t, Array(T))
  if readOnly then
    array.set = unset
  end
  return array
end

System.arrayFromTable = arrayFromTable

local function getIndex(t, ...)
  local rank = t.__rank__
  local id = 0
  local len = #rank
  for i = 1, len do
    id = id * rank[i] + select(i, ...)
  end
  return id, len
end

local function checkMultiArrayIndex(t, index1, ...)
  if index1 == nil then throw(ArgumentNullException("indices")) end
  local rank = t.__rank__
  local len = #rank
  if type(index1) == "table" then
    if #index1 ~= len then
      throw(ArgumentException("Indices length does not match the array rank."))
    end
    local id = 0
    for i = 1, len do
      id = id * rank[i] + index1[i]
    end
    return id
  elseif len ~= select("#", ...) + 1 then
    throw(ArgumentException("Indices length does not match the array rank."))
  end
  return getIndex(t, index1, ...)
end

local MultiArray = { 
  set = function (this, ...)
    local index, len = getIndex(this, ...)
    set(this, index, select(len + 1, ...))
  end,
  get = function (this, ...)
    local index = getIndex(this, ...)
    return get(this, index)
  end,
  getRank = function (this)
    return #this.__rank__
  end,
  GetLength = function (this, dimension)
    local rank = this.__rank__
    if dimension < 0 or dimension >= #rank then throw(IndexOutOfRangeException()) end
    return rank[dimension + 1]
  end,
  GetLowerBound = function (this, dimension)
    local rank = this.__rank__
    if dimension < 0 or dimension >= #rank then throw(IndexOutOfRangeException()) end
    return 0
  end,
  GetUpperBound = function (this, dimension)
    local rank = this.__rank__
    if dimension < 0 or dimension >= #rank then throw(IndexOutOfRangeException()) end
    return rank[dimension + 1] - 1
  end,
  GetValue = function (this, ...)
    return get(this, checkMultiArrayIndex(this, ...))
  end,
  SetValue = function (this, value, ...)
    set(this, checkMultiArrayIndex(this, ...), System.castWithNullable(this.__genericT__, value))
  end,
  Clone = function (this)
    local array = { __rank__ = this.__rank__ }
    tmove(this, 1, #this, 1, array)
    return arrayFromTable(array, this.__genericT__)
  end
}

function MultiArray.__call(T, rank, t)
  local len = 1
  for i = 1, #rank do
    len = len * rank[i]
  end
  t = buildArray(T, len, t)
  t.__rank__ = rank
  return t
end

System.defArray("System.Array", function(T) 
  return { 
    base = { System.ICloneable, System.IList_1(T), System.IReadOnlyList_1(T), System.IList }, 
    __genericT__ = T
  }
end, Array, MultiArray)

local cpool = {}
local function createCoroutine(f)
  local c = tremove(cpool)
  if c == nil then
    c = ccreate(function (...)
      f(...)
      while true do
        f = nil
        cpool[#cpool + 1] = c
        f = cyield(cpool)
        f(cyield())
      end
    end)
  else
    cresume(c, f)
  end
  return c
end

System.ccreate = createCoroutine
System.cpool = cpool
System.cresume = cresume
System.yield = cyield

local YieldEnumerable
YieldEnumerable = define("System.YieldEnumerable", function (T)
  return {
    base = { System.IEnumerable_1(T), System.IEnumerator_1(T), System.IDisposable },
    __genericT__ = T
  }
end, {
  getCurrent = System.getCurrent, 
  Dispose = System.emptyFn,
  GetEnumerator = function (this)
    return setmetatable({ f = this.f, args = this.args }, YieldEnumerable(this.__genericT__))
  end,
  MoveNext = function (this)
    local c = this.c
    if c == false then
      return false
    end
  
    local ok, v
    if c == nil then
      c = createCoroutine(this.f)
      this.c = c
      local args = this.args
      ok, v = cresume(c, unpack(args, 1, args.n))
      this.args = nil
    else
      ok, v = cresume(c)
    end
  
    if ok then
      if v == cpool then
        this.c = false
        this.current = nil
        return false
      else
        this.current = v
        return true
      end
    else
      error(v)
    end
  end
})

local function yieldIEnumerable(f, T, ...)
  return setmetatable({ f = f, args = pack(...) }, YieldEnumerable(T))
end

System.yieldIEnumerable = yieldIEnumerable
System.yieldIEnumerator = yieldIEnumerable

local ReadOnlyCollection = {
  __ctor__ = function (this, list)
    if not list then throw(ArgumentNullException("list")) end
    this.list = list
  end,
  getCount = function (this)
    return #this.list
  end,
  get = function (this, index)
    return this.list:get(index)
  end,
  Contains = function (this, value)
    return this.list:Contains(value)
  end,
  GetEnumerator = function (this)
    return this.list:GetEnumerator()
  end,
  CopyTo = function (this, array, index)
    this.list:CopyTo(array, index)
  end,
  IndexOf = function (this, value)
    return this.list:IndexOf(value)
  end,
  getIsSynchronized = falseFn,
  getIsReadOnly = trueFn,
  getIsFixedSize = trueFn,
}

define("System.ReadOnlyCollection", function (T)
  return { 
    base = { System.IList_1(T), System.IList, System.IReadOnlyList_1(T) }, 
    __genericT__ = T
  }
end, ReadOnlyCollection)


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Array.lua.meta
================================================
fileFormatVersion: 2
guid: cfb931ea6b78c994aac377dd25e13e3f
timeCreated: 1526899278
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Boolean.lua
================================================
--[[
Copyright 2017 YANG Huan (sy.yanghuan@gmail.com).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--]]

local System = System
local throw = System.throw
local debugsetmetatable = System.debugsetmetatable
local ArgumentException = System.ArgumentException
local ArgumentNullException = System.ArgumentNullException
local FormatException = System.FormatException

local type = type
local setmetatable = setmetatable

local function compareTo(this, v)
  if this == v then
    return 0
  elseif this == false then
    return -1     
  end
  return 1
end

local falseString = "False"
local trueString = "True"

local function parse(s)
  if s == nil then
    return nil, 1
  end
  local i, j, value = s:find("^[%s%c%z]*(%a+)[%s%c%z]*$")
  if value then
    s = value:lower()
    if s == "true" then
      return true
    elseif s == "false" then
      return false
    end
  end
  return nil, 2
end

local function toString(this)
  return this and trueString or falseString
end

local Boolean = System.defStc("System.Boolean", {
  default = System.falseFn,
  GetHashCode = System.identityFn,
  Equals = System.equals,
  CompareTo = compareTo,
  ToString = toString,
  FalseString = falseString,
  TrueString = trueString,
  CompareToObj = function (this, v)
    if v == nil then return 1 end
    if type(v) ~= "boolean" then
      throw(ArgumentException("Arg_MustBeBoolean"))
    end
    return compareTo(this, v)
  end,
  EqualsObj = function (this, v)
    if type(v) ~= "boolean" then
      return false
    end
    return this == v
  end,
  __concat = function (a, b)
    if type(a) == "boolean" then
      return toString(a) .. b
    else 
      return a .. toString(b)
    end
  end,
  __tostring = toString,
  Parse = function (s)
    local v, err = parse(s)
    if v == nil then
      if err == 1 then
        throw(ArgumentNullException()) 
      else
        throw(FormatException())
      end
    end
    return v
  end,
  TryParse = function (s)
    local v = parse(s)
    if v ~= nil then
      return true, v
    end
    return false, false
  end,
  base = function (_, T)
    return { System.IComparable, System.IConvertible, System.IComparable_1(T), System.IEquatable_1(T) }
  end
})
if debugsetmetatable then
  debugsetmetatable(false, Boolean)
end

local ValueType = System.ValueType
local boolMetaTable = setmetatable({ __index = ValueType, __call = Boolean.default }, ValueType)
setmetatable(Boolean, boolMetaTable)

================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Boolean.lua.meta
================================================
fileFormatVersion: 2
guid: 1d6746daf7f157440a3bca4ef0d89b5e
timeCreated: 1526899278
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Char.lua
================================================
--[[
Copyright 2017 YANG Huan (sy.yanghuan@gmail.com).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--]]

local System = System
local throw = System.throw
local Int = System.Int
local ArgumentNullException = System.ArgumentNullException
local ArgumentOutOfRangeException = System.ArgumentOutOfRangeException

local setmetatable = setmetatable
local byte = string.byte

local isSeparatorTable = {
  [32] = true,
  [160] = true,
  [0x2028] = true,
  [0x2029] = true,
  [0x0020] = true,
  [0x00A0] = true,
  [0x1680] = true,
  [0x180E] = true,
  [0x202F] = true,
  [0x205F] = true,
  [0x3000] = true,
}

local isSymbolTable = {
  [36] = true,
  [43] = true,
  [60] = true, 
  [61] = true, 
  [62] = true, 
  [94] = true, 
  [96] = true,
  [124] = true,
  [126] = true,
  [172] = true, 
  [180] = true,
  [182] = true,
  [184] = true,
  [215] = true,
  [247] = true,
}

--https://msdn.microsoft.com/zh-cn/library/t809ektx(v=vs.110).aspx
local isWhiteSpace = {
  [0x0020] = true,
  [0x00A0] = true,
  [0x1680] = true,
  [0x202F] = true,
  [0x205F] = true,
  [0x3000] = true,
  [0x2028] = true,
  [0x2029] = true,
  [0x0085] = true,
}

local function get(s, index)
  if s == nil then throw(ArgumentNullException("s")) end
  local c = byte(s, index + 1)
  if not c then throw(ArgumentOutOfRangeException("index")) end
  return c
end

local function isDigit(c, index)
  if index then
    c = get(c, index)
  end
  return (c >= 48 and c <= 57)
end

-- https://msdn.microsoft.com/zh-cn/library/yyxz6h5w(v=vs.110).aspx
local function isLetter(c, index)    
  if index then
    c = get(c, index) 
  end
  if c < 128 then
    return (c >= 65 and c <= 90) or (c >= 97 and c <= 122)
  else  
    return (c >= 0x0400 and c <= 0x042F) 
      or (c >= 0x03AC and c <= 0x03CE) 
      or (c == 0x01C5 or c == 0x1FFC) 
      or (c >= 0x02B0 and c <= 0x02C1) 
      or (c >= 0x1D2C and c <= 0x1D61) 
      or (c >= 0x05D0 and c <= 0x05EA)
      or (c >= 0x0621 and c <= 0x063A)
      or (c >= 0x4E00 and c <= 0x9FC3) 
  end
end

local Char = System.defStc("System.Char", {
  ToString = string.char,
  CompareTo = Int.CompareTo,
  CompareToObj = Int.CompareToObj,
  Equals = Int.Equals,
  EqualsObj = Int.EqualsObj,
  GetHashCode = Int.GetHashCode,
  default = Int.default,
  IsControl = function (c, index)
    if index then
      c = get(c, index)
    end
    return (c >=0 and c <= 31) or (c >= 127 and c <= 159)
  end,
  IsDigit = isDigit,
  IsLetter = isLetter,
  IsLetterOrDigit = function (c, index)
    if index then
      c = get(c, index)
    end
    return isDigit(c) or isLetter(c)
  end,
  IsLower = function (c, index)
    if index then
      c = get(c, index)
    end
    return (c >= 97 and c <= 122) or (c >= 945 and c <= 969)
  end,
  IsNumber = function (c, index)
    if index then
      c = get(c, index)
    end
    return (c >= 48 and c <= 57) or c == 178 or c == 179 or c == 185 or c == 188 or c == 189 or c == 190
  end,
  IsPunctuation = function (c, index)
    if index then
      c = get(c, index)
    end
    if c < 256 then
      return (c >= 0x0021 and c <= 0x0023) 
        or (c >= 0x0025 and c <= 0x002A) 
        or (c >= 0x002C and c <= 0x002F) 
        or (c >= 0x003A and c <= 0x003B) 
        or (c >= 0x003F and c <= 0x0040)  
        or (c >= 0x005B and c <= 0x005D)
        or c == 0x5F or c == 0x7B or c == 0x007D or c == 0x00A1 or c == 0x00AB or c == 0x00AD or c == 0x00B7 or c == 0x00BB or c == 0x00BF
    end
    return false
  end,
  IsSeparator = function (c, index)
    if index then
      c = get(c, index)
    end
    return (c >= 0x2000 and c <= 0x200A) or isSeparatorTable[c] == true
  end,
  IsSymbol = function (c, index)
    if index then
      c = get(c, index)
    end
    if c < 256 then
      return (c >= 162 and c <= 169) or (c >= 174 and c <= 177) or isSymbolTable(c) == true
    end
    return false
  end,
  IsUpper = function (c, index)
    if index then
      c = get(c, index)
    end
    return (c >= 65 and c <= 90) or (c >= 913 and c <= 937)
  end,
  IsWhiteSpace = function (c, index)
    if index then
      c = get(c, index)
    end
    return (c >= 0x2000 and c <= 0x200A) or (c >= 0x0009 and c <= 0x000d) or isWhiteSpace[c] == true
  end,
  Parse = function (s)
    if s == nil then
      throw(System.ArgumentNullException())
    end
    if #s ~= 1 then
      throw(System.FormatException())
    end
    return s:byte()
  end,
  TryParse = function (s)
    if s == nil or #s ~= 1 then
      return false, 0
    end 
    return true, s:byte()
  end,
  ToLower = function (c)
    if (c >= 65 and c <= 90) or (c >= 913 and c <= 937) then
      return c + 32
    end
    return c
  end,
  ToUpper = function (c)
    if (c >= 97 and c <= 122) or (c >= 945 and c <= 969) then
      return c - 32
    end
    return c
  end,
  IsHighSurrogate = function (c, index) 
    if index then
      c = get(c, index)
    end
    return c >= 0xD800 and c <= 0xDBFF
  end,
  IsLowSurrogate = function (c, index) 
    if index then
      c = get(c, index)
    end
    return c >= 0xDC00 and c <= 0xDFFF
  end,
  IsSurrogate = function (c, index) 
    if index then
      c = get(c, index)
    end
    return c >= 0xD800 and c <= 0xDFFF
  end,
  base = function (_, T)
    return { System.IComparable, System.IComparable_1(T), System.IEquatable_1(T) }
  end
})

local ValueType = System.ValueType
local charMetaTable = setmetatable({ __index = ValueType, __call = Char.default }, ValueType)
setmetatable(Char, charMetaTable)


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Char.lua.meta
================================================
fileFormatVersion: 2
guid: 258f15fe832bc224ea63662b03a89289
timeCreated: 1526899278
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Collections/Dictionary.lua
================================================
--[[
Copyright 2017 YANG Huan (sy.yanghuan@gmail.com).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--]]

local System = System
local define = System.define
local throw = System.throw
local null = System.null
local falseFn = System.falseFn
local each = System.each
local lengthFn = System.lengthFn
local versions = System.versions
local Array = System.Array
local checkIndexAndCount = System.checkIndexAndCount
local throwFailedVersion = System.throwFailedVersion
local ArgumentNullException = System.ArgumentNullException
local ArgumentException = System.ArgumentException
local KeyNotFoundException = System.KeyNotFoundException
local EqualityComparer = System.EqualityComparer
local NotSupportedException = System.NotSupportedException

local assert = assert
local pairs = pairs
local next = next
local select = select
local getmetatable = getmetatable
local setmetatable = setmetatable
local tconcat = table.concat
local tremove = table.remove
local type = type

local counts = setmetatable({}, { __mode = "k" })
System.counts = counts

local function getCount(this)
  local t = counts[this]
  if t then
    return t[1]
  end
  return 0
end

local function pairsFn(t, i)
  local count =  counts[t]
  if count then
    if count[2] ~= count[3] then
      throwFailedVersion()
    end
  end
  local k, v = next(t, i)
  if v == null then
    return k
  end
  return k, v
end

function System.pairs(t)
  local count = counts[t]
  if count then
    count[3] = count[2]
  end
  return pairsFn, t
end

local KeyValuePairFn
local KeyValuePair = {
  __ctor__ = function (this, ...)
    if select("#", ...) == 0 then
      this.Key, this.Value = this.__genericTKey__:default(), this.__genericTValue__:default()
    else
      this.Key, this.Value = ...
    end
  end,
  Create = function (key, value, TKey, TValue)
    return setmetatable({ Key = key, Value = value }, KeyValuePairFn(TKey, TValue))
  end,
  Deconstruct = function (this)
    return this.Key, this.Value
  end,
  ToString = function (this)
    local t = { "[" }
    local count = 2
    local k, v = this.Key, this.Value
    if k ~= nil then
      t[count] = k:ToString()
      count = count + 1
    end
    t[count] = ", "
    count = count + 1
    if v ~= nil then
      t[count] = v:ToString()
      count = count + 1
    end
    t[count] = "]"
    return tconcat(t)
  end
}

KeyValuePairFn = System.defStc("System.Collections.Generic.KeyValuePair", function(TKey, TValue)
  local cls = {
    __genericTKey__ = TKey,
    __genericTValue__ = TValue,
  }
  return cls
end, KeyValuePair)
System.KeyValuePair = KeyValuePairFn

local function isKeyValuePair(t)
  return getmetatable(getmetatable(t)) == KeyValuePair
end

local DictionaryEnumerator = define("System.Collections.Generic.DictionaryEnumerator", {
  getCurrent = System.getCurrent, 
  Dispose = System.emptyFn,
  MoveNext = function (this)
    local t, kind = this.dict, this.kind
    local count = counts[t]
    if this.version ~= (count and count[2] or 0) then
      throwFailedVersion()
    end
    local k, v = next(t, this.index)
    if k ~= nil then
      if kind then
        kind.Key = k
        if v == null then v = nil end
        kind.Value = v
      elseif kind == false then
        if v == null then v = nil end
        this.current = v
      else
        this.current = k
      end
      this.index = k
      return true
    else
      if kind then
        kind.Key, kind.Value = kind.__genericTKey__:default(), kind.__genericTValue__:default()
      elseif kind == false then
        this.current = t.__genericTValue__:default()
      else
        this.current = t.__genericTKey__:default()
      end
      return false
    end
  end
})

local function dictionaryEnumerator(t, kind)
  local current
  if not kind then
    local TKey, TValue = t.__genericTKey__, t.__genericTValue__
    kind = setmetatable({ Key = TKey:default(), Value = TValue:default() }, t.__genericT__)
    current = kind
  elseif kind == 1 then
    local TKey = t.__genericTKey__
    current = TKey:default()
    kind = nil
  else
    local TValue = t.__genericTValue__
    current = TValue:default()
    kind = false
  end
  local count = counts[t]
  local en = {
    dict = t,
    version = count and count[2] or 0,
    kind = kind,
    current = current
  }
  return setmetatable(en, DictionaryEnumerator)
end

local DictionaryCollection = define("System.Collections.Generic.DictionaryCollection", function (T)
    return {
      base = { System.ICollection_1(T), System.IReadOnlyCollection_1(T), System.ICollection },
      __genericT__ = T
    }
  end, {
  __ctor__ = function (this, dict, kind)
    this.dict = dict
    this.kind = kind
  end,
  getCount = function (this)
    return getCount(this.dict)
  end,
  GetEnumerator = function (this)
    return dictionaryEnumerator(this.dict, this.kind)
  end
})

local function add(this, key, value)
  if key == nil then throw(ArgumentNullException("key")) end
  if this[key] ~= nil then throw(ArgumentException("key already exists")) end
  this[key] = value == nil and null or value
  local t = counts[this]
  if t then
    t[1] = t[1] + 1
    t[2] = t[2] + 1
  else
    counts[this] = { 1, 1 }
  end
end

local function remove(this, key)
  if key == nil then throw(ArgumentNullException("key")) end
  if this[key] ~= nil then
    this[key] = nil
    local t = counts[this]
    t[1] = t[1] - 1
    t[2] = t[2] + 1
    return true
  end
  return false
end

local function buildFromDictionary(this, dictionary)
  if dictionary == nil then throw(ArgumentNullException("dictionary")) end
  local count = 0
  for k, v in pairs(dictionary) do
    this[k] = v
    count = count + 1
  end
  counts[this] = { count, 0 }
end

local ArrayDictionaryFn
local function buildHasComparer(this, ...)
   local Dictionary = ArrayDictionaryFn(this.__genericTKey__, this.__genericTValue__)
   Dictionary.__ctor__(this, ...)
   return setmetatable(this, Dictionary)
end

local Dictionary = {
  getIsFixedSize = falseFn,
  getIsReadOnly = falseFn,
  __ctor__ = function (this, ...) 
    local n = select("#", ...)
    if n == 0 then
    elseif n == 1 then
      local comparer = ...
      if comparer == nil or type(comparer) == "number" then  
      else
        local equals = comparer.EqualsOf
        if equals == nil then
          buildFromDictionary(this, comparer)
        else
          buildHasComparer(this, ...)
        end
      end
    else
      local dictionary, comparer = ...
      if comparer ~= nil then 
        buildHasComparer(this, ...)
      end
      if type(dictionary) ~= "number" then 
        buildFromDictionary(this, dictionary)
      end
    end
  end,
  AddKeyValue = add,
  Add = function (this, ...)
    local k, v
    if select("#", ...) == 1 then
      local pair = ... 
      k, v = pair.Key, pair.Value
    else
      k, v = ...
    end
    add(this, k ,v)
  end,
  Clear = function (this)
    for k, v in pairs(this) do
      this[k] = nil
    end
    counts[this] = nil
  end,
  ContainsKey = function (this, key)
    if key == nil then throw(ArgumentNullException("key")) end
    return this[key] ~= nil 
  end,
  ContainsValue = function (this, value)
    if value == nil then
      for _, v in pairs(this) do
        if v == null then
          return true
        end
      end
    else
      local comparer = EqualityComparer(this.__genericTValue__).getDefault()
      local equals = comparer.EqualsOf
        for _, v in pairs(this) do
          if v ~= null then
            if equals(comparer, value, v ) then
              return true
            end
          end
      end
    end
    return false
  end,
  Contains = function (this, pair)
    local key = pair.Key
    if key == nil then throw(ArgumentNullException("key")) end
    local value = this[key]
    if value ~= nil then
      if value == null then value = nil end
      local comparer = EqualityComparer(this.__genericTValue__).getDefault()
      if comparer:EqualsOf(value, pair.Value) then
        return true
      end
    end
    return false
  end,
  CopyTo = function (this, array, index)
    local count = getCount(this)
    checkIndexAndCount(array, index, count)
    if count > 0 then
      local KeyValuePair = this.__genericT__
      index = index + 1
      for k, v in pairs(this) do
        if v == null then v = nil end
        array[index] = setmetatable({ Key = k, Value = v }, KeyValuePair)
        index = index + 1
      end
    end
  end,
  RemoveKey = remove,
  Remove = function (this, key)
    if isKeyValuePair(key) then
      local k, v = key.Key, key.Value
      if k == nil then throw(ArgumentNullException("key")) end
      local value = this[k]
      if value ~= nil then
        if value == null then value = nil end
        local comparer = EqualityComparer(this.__genericTValue__).getDefault()
        if comparer:EqualsOf(value, v) then
          remove(this, k)
          return true
        end
      end
      return false
    end
    return remove(this, key)
  end,
  TryGetValue = function (this, key)
    if key == nil then throw(ArgumentNullException("key")) end
    local value = this[key]
    if value == nil then
      return false, this.__genericTValue__:default()
    end
    if value == null then return true end
    return true, value
  end,
  getComparer = function (this)
    return EqualityComparer(this.__genericTKey__).getDefault()
  end,
  getCount = getCount,
  get = function (this, key)
    if key == nil then throw(ArgumentNullException("key")) end
    local value = this[key]
    if value == nil then throw(KeyNotFoundException()) end
    if value ~= null then
      return value
    end
    return nil
  end,
  set = function (this, key, value)
    if key == nil then throw(ArgumentNullException("key")) end
    local t = counts[this]
    if t then
      if this[key] == nil then
        t[1] = t[1] + 1
      end
      t[2] = t[2] + 1
    else
      counts[this] = { 1, 1 }
    end
    this[key] = value == nil and null or value
  end,
  GetEnumerator = dictionaryEnumerator,
  getKeys = function (this)
    return DictionaryCollection(this.__genericTKey__)(this, 1)
  end,
  getValues = function (this)
    return DictionaryCollection(this.__genericTValue__)(this, 2)
  end
}

local ArrayDictionaryEnumerator = define("System.Collections.Generic.ArrayDictionaryEnumerator", function (T)
  return {
    base = { System.IEnumerator_1(T) }
  }
end, {
  getCurrent = System.getCurrent, 
  Dispose = System.emptyFn,
  MoveNext = function (this)
    local t = this.list
    if this.version ~= versions[t] then
      throwFailedVersion()
    end
    local index = this.index
    local pair = t[index]
    if pair ~= nil then
      if t.kind then
        this.current = pair.Value
      else
        this.current = pair.Key
      end
      this.index = index + 1
      return true
    end
    this.current = nil
    return false
  end
})

local arrayDictionaryEnumerator = function (t, kind, T)
  return setmetatable({ list = t, kind = kind, index = 1, version = versions[t], currnet = T:default() }, ArrayDictionaryEnumerator(T))
end

local ArrayDictionaryCollection = define("System.Collections.Generic.ArrayDictionaryCollection", function (T)
  return {
    base = { System.ICollection_1(T), System.IReadOnlyCollection_1(T), System.ICollection },
    __genericT__ = T
  }
  end, {
  __ctor__ = function (this, dict, kind)
    this.dict = dict
    this.kind = kind
  end,
  getCount = function (this)
    return getCount(this.dict)
  end,
  GetEnumerator = function (this)
    return arrayDictionaryEnumerator(this.dict, this.kind, this.__genericT__)
  end
})

local ArrayDictionary = (function ()
  local function buildFromDictionary(this, dictionary)
    if dictionary == nil then throw(ArgumentNullException("dictionary")) end
    local count = 1
    local KeyValuePair = this.__genericT__
    for _, pair in each(dictionary) do
      local k, v = pair.Key, pair.Value
      if type(k) == "table" and k.class == 'S' then
        k = k:__clone__()
      end
      this[count] = setmetatable({ Key = k, Value = v }, KeyValuePair)
      count = count + 1
    end
  end 
  
  local function add(this, key, value, set)
    if key == nil then throw(ArgumentNullException("key")) end
    local len = #this
    if len > 0 then
      local comparer = this.comparer
      local equals = comparer.EqualsOf
      for i = 1, len do
        if equals(comparer, this[i].Key, key) then
          if set then
            this[i].Value = value
            return
          else
            throw(ArgumentException("key already exists"))
          end
        end
      end
    end
    this[len + 1] = setmetatable({ Key = key, Value = value }, this.__genericT__)
    versions[this] = (versions[this] or 0) + 1
  end
  
  local function remove(this, key)
    if key == nil then throw(ArgumentNullException("key")) end
    local len = #this
    if len > 0 then
      local comparer = this.comparer
      local equals = comparer.EqualsOf
      for i = 1, len do
        if equals(comparer, this[i].Key, key) then
          tremove(this, i)
          versions[this] = (versions[this] or 0) + 1
          return true
        end
      end
    end
    return false
  end
 
  return {
    getIsFixedSize = falseFn,
    getIsReadOnly = falseFn,
    __ctor__ = function (this, ...)
      local Comparer
      local n = select("#", ...)
      if n == 0 then
      elseif n == 1 then
        local comparer = ...
        if comparer == nil or type(comparer) == "number" then  
        else
          local equals = comparer.EqualsOf
          if equals == nil then
            buildFromDictionary(this, comparer)
          else
            Comparer = comparer
          end
        end
      else
        local dictionary, comparer = ...
        if type(dictionary) ~= "number" then 
           buildFromDictionary(this, dictionary)
        end
        Comparer = comparer
      end
      this.comparer = Comparer or EqualityComparer(this.__genericTKey__).getDefault()
    end,
    AddKeyValue = add,
    Add = function (this, ...)
      local k, v
      if select("#", ...) == 1 then
        local pair = ... 
        k, v = pair.Key, pair.Value
      else
        k, v = ...
      end
      add(this, k ,v)
    end,
    Clear = Array.clear,
    ContainsKey = function (this, key)
      if key == nil then throw(ArgumentNullException("key")) end
      local len = #this
      if len > 0 then
        local comparer = this.comparer
        local equals = comparer.EqualsOf
        for i = 1, len do
          if equals(comparer, this[i].Key, key) then
            return true
          end
        end
      end
      return false
    end,
    ContainsValue = function (this, value)
      local len = #this
      if len > 0 then
        local comparer = EqualityComparer(this.__genericTValue__).getDefault()
        local equals = comparer.EqualsOf
        for i = 1, #this do
          if equals(comparer, value, this[i].Value) then
            return true
          end
        end
      end
      return false
    end,
    Contains = function (this, pair)
      local key = pair.Key
      if key == nil then throw(ArgumentNullException("key")) end
      local len = #this
      if len > 0 then
        local comparer = this.comparer
        local equals = comparer.EqualsOf
        for i = 1, len do
          local t = this[i]
          if equals(comparer, t.Key, key) then
            local comparer = EqualityComparer(this.__genericTValue__).getDefault()
            if comparer:EqualsOf(t.Value, pair.Value) then
              return true
            end 
          end
        end
      end
      return false
    end,
    CopyTo = function (this, array, index)
      local count = #this
      checkIndexAndCount(array, index, count)
      if count > 0 then
        local KeyValuePair = this.__genericT__
        index = index + 1
        for i = 1, count do
          local t = this[i]
          array[index] = setmetatable({ Key = t.Key:__clone__(), Value = t.Value }, KeyValuePair)
          index = index + 1
        end
      end
    end,
    RemoveKey = remove,
    Remove = function (this, key)
      if isKeyValuePair(key) then
        local len = #this
        local k, v = key.Key, key.Value
        for i = 1, #this do
          local pair = this[i]
          if pair.Key:EqualsObj(k) then
            local comparer = EqualityComparer(this.__genericTValue__).getDefault()
            if comparer:EqualsOf(pair.Value, v) then
              tremove(this, i)
              return true
            end
          end
        end
      end
      return false
    end,
    TryGetValue = function (this, key)
      if key == nil then throw(ArgumentNullException("key")) end
      local len = #this
      if len > 0 then
        local comparer = this.comparer
        local equals = comparer.EqualsOf
        for i = 1, len do
          local pair = this[i]
          if equals(comparer, pair.Key, key) then
            return true, pair.Value
          end
        end
      end
      return false, this.__genericTValue__:default()
    end,
    getComparer = function (this)
      return this.comparer
    end,
    getCount = lengthFn,
    get = function (this, key)
      if key == nil then throw(ArgumentNullException("key")) end
      local len = #this
      if len > 0 then
        local comparer = this.comparer
        local equals = comparer.EqualsOf
        for i = 1, len do
          local pair = this[i]
          if equals(comparer, pair.Key, key) then
            return pair.Value
          end
        end
      end
      throw(KeyNotFoundException())
    end,
    set = function (this, key, value)
      add(this, key, value, true)
    end,
    GetEnumerator = Array.GetEnumerator,
    getKeys = function (this)
      return ArrayDictionaryCollection(this.__genericTKey__)(this)
    end,
    getValues = function (this)
      return ArrayDictionaryCollection(this.__genericTValue__)(this, true)
    end
  }
end)()

ArrayDictionaryFn = define("System.Collections.Generic.ArrayDictionary", function(TKey, TValue) 
  return { 
    base = { System.IDictionary_2(TKey, TValue), System.IDictionary, System.IReadOnlyDictionary_2(TKey, TValue) },
    __genericT__ = KeyValuePairFn(TKey, TValue),
    __genericTKey__ = TKey,
    __genericTValue__ = TValue,
  }
end, ArrayDictionary)

function System.dictionaryFromTable(t, TKey, TValue)
  return setmetatable(t, Dictionary(TKey, TValue))
end

function System.isDictLike(t)
  return type(t) == "table" and t.GetEnumerator == dictionaryEnumerator
end

local DictionaryFn = define("System.Collections.Generic.Dictionary", function(TKey, TValue)
  local array, len
  if TKey.class == 'S' and type(TKey:default()) == "table" then
    array = ArrayDictionary
  else
    len = getCount
  end
  return { 
    base = { System.IDictionary_2(TKey, TValue), System.IDictionary, System.IReadOnlyDictionary_2(TKey, TValue) },
    __genericT__ = KeyValuePairFn(TKey, TValue),
    __genericTKey__ = TKey,
    __genericTValue__ = TValue,
    __len = len
  }, array
end, Dictionary)

System.Dictionary = DictionaryFn

local Object = System.Object
System.Hashtable = DictionaryFn(Object, Object)


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Collections/Dictionary.lua.meta
================================================
fileFormatVersion: 2
guid: 625aaca11aa54a741a84ecf3084a47ad
timeCreated: 1526899278
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Collections/EqualityComparer.lua
================================================
--[[
Copyright 2017 YANG Huan (sy.yanghuan@gmail.com).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--]]

local System = System
local define = System.define
local throw = System.throw
local equalsObj = System.equalsObj
local compareObj = System.compareObj
local ArgumentException = System.ArgumentException
local ArgumentNullException = System.ArgumentNullException

local type = type

local EqualityComparer
EqualityComparer = define("System.EqualityComparer", function (T)
  local equals
  local Equals = T.Equals
  if Equals then
    if T.class == 'S' then
      equals = Equals 
    else
      equals = function (x, y) 
        return x:Equals(y) 
      end 
    end
  else
    equals = equalsObj
  end
  local function getHashCode(x)
    if type(x) == "table" then
      return x:GetHashCode()
    end
    return x
  end
  local defaultComparer
  return {
    __genericT__ = T,
    base = { System.IEqualityComparer_1(T), System.IEqualityComparer }, 
    getDefault = function ()
      local comparer = defaultComparer 
      if comparer == nil then
        comparer = EqualityComparer(T)()
        defaultComparer = comparer
      end
      return comparer
    end,
    EqualsOf = function (this, x, y)
      if x ~= nil then
        if y ~= nil then return equals(x, y) end
        return false
      end                 
      if y ~= nil then return false end
      return true
    end,
    GetHashCodeOf = function (this, obj)
      if obj == nil then return 0 end
      return getHashCode(obj)
    end,
    GetHashCodeObjOf = function (this, obj)
      if obj == nil then return 0 end
      if System.is(obj, T) then return getHashCode(obj) end
      throw(ArgumentException("Type of argument is not compatible with the generic comparer."))
      return false
    end,
    EqualsObjOf = function (this, x, y)
      if x == y then return true end
      if x == nil or y == nil then return false end
      local is = System.is
      if is(x, T) and is(y, T) then return equals(x, y) end
      throw(ArgumentException("Type of argument is not compatible with the generic comparer."))
      return false
    end
  }
end)

local function compare(this, a, b)
  return compareObj(a, b)
end

define("System.Comparer", (function ()
  local Comparer
  Comparer = {
    base = { System.IComparer },
    static = function (this)
      local default = Comparer()
      this.Default = default
      this.DefaultInvariant = default
    end,
    Compare = compare
  }
  return Comparer
end)())

local Comparer, ComparisonComparer

ComparisonComparer = define("System.ComparisonComparer", function (T)
  return {
    base = { Comparer(T) },
    __ctor__ = function (this, comparison)
      this.comparison = comparison
    end,
    Compare = function (this, x, y)
      return this.comparison(x, y)
    end
  }
end)

Comparer = define("System.Comparer_1", function (T)
  local Compare
  local compareTo = T.CompareTo
  if compareTo then
    if T.class ~= 'S' then
      compareTo = function (x, y)
        return x:CompareTo(y)
      end
    end
    Compare = function (this, x, y)
      if x ~= nil then
        if y ~= nil then 
          return compareTo(x, y) 
        end
        return 1
      end                 
      if y ~= nil then return -1 end
      return 0
    end
  else
    Compare = compare
  end

  local defaultComparer
  local function getDefault()
    local comparer = defaultComparer 
    if comparer == nil then
      comparer = Comparer(T)()
      defaultComparer = comparer
    end
    return comparer
  end

  local function Create(comparison)
    if comparison == nil then throw(ArgumentNullException("comparison")) end
    return ComparisonComparer(T)(comparison)
  end

  return {
    __genericT__ = T,
    base = { System.IComparer_1(T), System.IComparer }, 
    getDefault = getDefault,
    getDefaultInvariant = getDefault,
    Compare = Compare,
    Create = Create
  }
end)


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Collections/EqualityComparer.lua.meta
================================================
fileFormatVersion: 2
guid: 19a630f833902d243b0634c66042bfb3
timeCreated: 1526899278
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Collections/HashSet.lua
================================================
--[[
Copyright 2017 YANG Huan (sy.yanghuan@gmail.com).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--]]

local System = System
local throw = System.throw
local each = System.each
local Dictionary = System.Dictionary
local wrap = System.wrap
local unWrap = System.unWrap
local getEnumerator = Dictionary.GetEnumerator 
local ArgumentNullException = System.ArgumentNullException

local assert = assert
local pairs = pairs
local select = select

local counts = System.counts

local function build(this, collection, comparer)
  if comparer ~= nil then
    assert(false)
  end
  if collection == nil then
    throw(ArgumentNullException("collection"))
  end
  this:UnionWith(collection)
end

local function checkUniqueAndUnfoundElements(this, other, returnIfUnfound)
  if #this == 0 then
    local numElementsInOther = 0
    for _, item in each(other) do
      numElementsInOther = numElementsInOther + 1
      break
    end
    return 0, numElementsInOther
  end
  local set, uniqueCount, unfoundCount = {}, 0, 0
  for _, item in each(other) do
    item = wrap(item)
      if this[item] ~= nil then
        if set[item] == nil then
          set[item] = true
          uniqueCount = uniqueCount + 1
        end
      else
      unfoundCount = unfoundCount + 1
      if returnIfUnfound then
        break
      end
    end
  end
  return uniqueCount, unfoundCount
end

local HashSet = {
  __ctor__ = function (this, ...)
    local len = select("#", ...)
    if len == 0 then
    elseif len == 1 then
      local collection = ...
      if collection == nil then return end
      if collection.getEnumerator ~= nil then
        build(this, collection, nil)
      else
        assert(true)
      end
    else 
      build(this, ...)
    end
  end,
  Clear = Dictionary.Clear,
  getCount = Dictionary.getCount,
  getIsReadOnly = System.falseFn,
  Contains = function (this, item)
    item = wrap(item)
    return this[item] ~= nil
  end,
  Remove = function (this, item)
    item = wrap(item)
    if this[item] then
      this[item] = nil
      local t = counts[this]
      t[1] = t[1] - 1
      t[2] = t[2] + 1
      return true
    end
    return false
  end,
  GetEnumerator = function (this)
    return getEnumerator(this, 1)
  end,
  Add = function (this, v)
    v = wrap(v)
    if this[v] == nil then
      this[v] = true
      local t = counts[this]
      if t then
        t[1] = t[1] + 1
        t[2] = t[2] + 1
      else
        counts[this] = { 1, 1 }
      end
      return true
    end
    return false
  end,
  UnionWith = function (this, other)
    if other == nil then
      throw(ArgumentNullException("other"))
    end
    local count = 0
    for _, v in each(collection) do
      v = wrap(v)
      if this[v] == nil then
        this[v] = true
        count = count + 1
      end
    end
    if count > 0 then
      local t = counts[this]
      if t then
        t[1] = t[1] + count
        t[2] = t[2] + 1
      else
        counts[this] = { count, 1 }  
      end
    end
  end,
  IntersectWith = function (this, other)
    if other == nil then
      throw(ArgumentNullException("other"))
    end
    local set = {}
    for _, v in each(other) do
      v = wrap(v)
      if this[v] ~= nil then
        set[v] = true
      end
    end
    local count = 0
    for v, _ in pairs(this) do
      if set[v] == nil then
        this[v] = nil
        count = count + 1
      end
    end
    if count > 0 then
      local t = counts[this]
      t[1] = t[1] - count
      t[2] = t[2] + 1
    end
  end,
  ExceptWith = function (this, other)
    if other == nil then
      throw(ArgumentNullException("other"))
    end
    if other == this then
      this:Clear()
      return
    end
    local count = 0
    for _, v in each(other) do
      v = wrap(v)
      if this[v] ~= nil then
        this[v] = nil
        count = count + 1
      end
    end
    if count > 0 then
      local t = counts[this]
      t[1] = t[1] - count
      t[2] = t[2] + 1
    end
  end,
  SymmetricExceptWith = function (this, other)
    if other == nil then throw(ArgumentNullException("other")) end
    if other == this then
      this:Clear()
      return
    end
    local set = {}
    local count = 0
    local changed = false
    for _, v in each(other) do
      v = wrap(v)
      if this[v] == nil then
        this[v] = true
        count = count + 1
        changed = true
        set[v] = true
      elseif set[v] == nil then 
        this[v] = nil
        count = count - 1
        changed = true
      end
    end
    if changed then
      local t = counts[this]
      if t then
        t[1] = t[1] + count
        t[2] = t[2] + 1
      else
        counts[this] = { count, 1 }
      end
    end
  end,
  IsSubsetOf = function (this, other)
    if other == nil then
      throw(ArgumentNullException("other"))
    end
    local count = #this
    if count == 0 then
      return true
    end
    local uniqueCount, unfoundCount = checkUniqueAndUnfoundElements(this, other, false)
    return uniqueCount == count and unfoundCount >= 0
  end,
  IsProperSubsetOf = function (this, other)
    if other == nil then
      throw(ArgumentNullException("other"))
    end
    local uniqueCount, unfoundCount = checkUniqueAndUnfoundElements(this, other, false)
    return uniqueCount == #this and unfoundCount > 0
  end,
  IsSupersetOf = function (this, other)
    if other == nil then
      throw(ArgumentNullException("other"))
    end
    for _, element in each(other) do
      element = wrap(element)
      if this[element] == nil then
        return false
      end
    end
    return true
  end,
  IsProperSupersetOf = function (this, other)
    if other == nil then
      throw(ArgumentNullException("other"))
    end
    local count = #this
    if count == 0 then
      return false
    end
    local uniqueCount, unfoundCount = checkUniqueAndUnfoundElements(this, other, true)
    return uniqueCount < count and unfoundCount == 0
  end,
  Overlaps = function (this, other)
    if other == nil then
      throw(ArgumentNullException("other"))
    end
    if #this == 0 then
      return false
    end
    for _, element in each(other) do
      element = wrap(element)
      if this[element] ~= nil then
        return true
      end
    end
    return false
  end,
  SetEquals = function (this, other)
    if other == nil then
      throw(ArgumentNullException("other"))
    end
    local uniqueCount, unfoundCount = checkUniqueAndUnfoundElements(this, other, true)
    return uniqueCount == #this and unfoundCount == 0
  end,
  RemoveWhere = function (this, match)
    if match == nil then
      throw(ArgumentNullException("match"))
    end
    local numRemoved = 0
    for v, _ in pairs(this) do
      if match(unWrap(v)) then
        this[v] = nil
        numRemoved = numRemoved + 1
      end
    end
    if numRemoved > 0 then
      local t = counts[this]
      t[1] = t[1] - numRemoved
      t[2] = t[2] + 1
    end
    return numRemoved
  end,
  TrimExcess = System.emptyFn
}

function System.hashSetFromTable(t, T)
  return setmetatable(t, HashSet(T))
end

System.HashSet = System.define("System.Collections.Generic.HashSet", function(T) 
  return { 
    base = { System.ICollection_1(T), System.ISet_1(T) }, 
    __genericT__ = T,
    __genericTKey__ = T,
    __len = HashSet.getCount
  }
end, HashSet)


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Collections/HashSet.lua.meta
================================================
fileFormatVersion: 2
guid: f3fa2f69bd6bf7e498359d7ab15251af
timeCreated: 1526899278
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Collections/LinkedList.lua
================================================
--[[
Copyright 2017 YANG Huan (sy.yanghuan@gmail.com).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--]]

local System = System
local define = System.define
local throw = System.throw
local each = System.each
local checkIndexAndCount = System.checkIndexAndCount
local ArgumentNullException = System.ArgumentNullException
local InvalidOperationException = System.InvalidOperationException
local EqualityComparer = System.EqualityComparer

local setmetatable = setmetatable
local select = select

local LinkedListNode = define("System.Collections.Generic.LinkedListNode", {
  __ctor__ = function (this, value)
    this.Value = value
  end,
  getNext = function (this)
    local next = this.next
    if next == nil or next == this.List.head then
      return nil
    end
    return next
  end,
  getPrevious = function (this)
    local prev = this.prev
    if prev == nil or this == this.List.head then
      return nil
    end
    return prev
  end
})
System.LinkedListNode = LinkedListNode

local function newLinkedListNode(list, value)
  return setmetatable({ List = assert(list), Value = value }, LinkedListNode)
end

local function vaildateNewNode(this, node)
  if node == nil then
    throw(ArgumentNullException("node"))
  end
  if node.List ~= nil then
    throw(InvalidOperationException("ExternalLinkedListNode"))
  end
end

local function vaildateNode(this, node)
  if node == nil then
    throw(ArgumentNullException("node"))
  end
  if node.List ~= this then
    throw(InvalidOperationException("ExternalLinkedListNode"))
  end
end

local function insertNodeBefore(this, node, newNode)
  newNode.next = node
  newNode.prev = node.prev
  node.prev.next = newNode
  node.prev = newNode
  this.Count = this.Count + 1
  this.version = this.version + 1
end

local function insertNodeToEmptyList(this, newNode)
  newNode.next = newNode
  newNode.prev = newNode
  this.head = newNode
  this.Count = this.Count + 1
  this.version = this.version + 1
end

local function invalidate(this)
  this.List = nil
  this.next = nil
  this.prev = nil
end

local function remvoeNode(this, node)
  if node.next == node then
    this.head = nil
  else
    node.next.prev = node.prev
    node.prev.next = node.next
    if this.head == node then
      this.head = node.next
    end
  end
  invalidate(node)
  this.Count = this.Count - 1
  this.version = this.version + 1
end

local LinkedListEnumerator = { 
  __index = false,
  getCurrent = System.getCurrent, 
  Dispose = System.emptyFn,
  MoveNext = function (this)
    local list = this.list
    local node = this.node
    if this.version ~= list.version then
      System.throwFailedVersion()
    end
    if node == nil then
      return false
    end
    this.current = node.Value
    node = node.next
    if node == list.head then
      node = nil
    end
    this.node = node
    return true
  end
}
LinkedListEnumerator.__index = LinkedListEnumerator

local LinkedList = { 
  Count = 0, 
  version = 0,
  __ctor__ = function (this, ...)
    local len = select("#", ...)
    if len == 1 then
      local collection = ...
      if collection == nil then
        throw(ArgumentNullException("collection"))
      end
      for _, item in each(collection) do
        this:AddLast(item)
      end
    end
  end,
  getCount = function (this)
    return this.Count
  end,
  getFirst = function(this)    
    return this.head
  end,
  getLast = function (this)
    local head = this.head
    return head ~= nil and head.prev or nil
  end,
  AddAfterNode = function (this, node, newNode)
    vaildateNode(this, node)
    vaildateNewNode(this, newNode)
    insertNodeBefore(this, node.next, newNode)
    newNode.List = this
  end,
  AddAfter = function (this, node, value)    
    vaildateNode(this, node)
    local result = newLinkedListNode(node.List, value)
    insertNodeBefore(this, node.next, result)
    return result
  end,
  AddBeforeNode = function (this, node, newNode)
    vaildateNode(this, node)
    vaildateNewNode(this, newNode)
    insertNodeBefore(this, node, newNode)
    newNode.List = this
    if node == this.head then
      this.head = newNode
    end
  end,
  AddBefore = function (this, node, value)
    vaildateNode(this, node)
    local result = newLinkedListNode(node.List, value)
    insertNodeBefore(this, node, result)
    if node == this.head then
      this.head = result
    end
    return result
  end,
  AddFirstNode = function (this, node)
	  vaildateNewNode(this, node)
    if this.head == nil then
      insertNodeToEmptyList(this, node)
    else
      insertNodeBefore(this, this.head, node)
      this.head = node
    end
    node.List = this
  end,
  AddFirst = function (this, value)
    local result = newLinkedListNode(this, value)
    if this.head == nil then
      insertNodeToEmptyList(this, result)
    else
      insertNodeBefore(this, this.head, result)
      this.head = result
    end
    return result
  end,
  AddLastNode = function (this, node)
    vaildateNewNode(this, node)
    if this.head == nil then
      insertNodeToEmptyList(this, node)
    else
      insertNodeBefore(this, this.head, node)
    end
    node.List = this
  end,
  AddLast = function (this, value)
    local result = newLinkedListNode(this, value)
    if this.head == nil then
      insertNodeToEmptyList(this, result)
    else
      insertNodeBefore(this, this.head, result)
    end
    return result
  end,
  Clear = function (this)
    local current = this.head
    while current ~= nil do
      local temp = current
      current = current.next
      invalidate(temp)
    end
    this.head = nil
    this.Count = 0
    this.version = this.version + 1
  end,
  Contains = function (this, value)
    return this:Find(value) ~= nil
  end,
  CopyTo = function (this, array, index)
    checkIndexAndCount(array, index, this.Count)
    local head = this.head
    local node = head
    if node then
      index = index + 1
      repeat
        local value = node.Value
        if value == nil then value = System.null end
        array[index] = value
        index = index + 1
        node = node.next
      until node == head
    end
  end,
  Find = function (this, value)     
    local head = this.head
    local node = head
    local comparer = EqualityComparer(this.__genericT__).getDefault()
    local equals = comparer.EqualsOf
    if node ~= nil then
      if value ~= nil then
        repeat
          if equals(comparer, node.Value, value) then
            return node
          end
          node = node.next
        until node == head
      else
        repeat 
          if node.Value == nil then
            return node
          end
          node = node.next
        until node == head
      end
    end
    return nil
  end,
  FindLast = function (this, value)
    local head = this.head
    if head == nil then return nil end
    local last = head.prev
    local node = last
    local comparer = EqualityComparer(this.__genericT__).getDefault()
    local equals = comparer.EqualsOf
    if node ~= nil then
      if value ~= nil then
        repeat
          if equals(comparer, node.Value, value) then
            return node
          end
          node = node.prev
        until node == last
      else
        repeat 
          if node.Value == nil then
            return node
          end
          node = node.prev
         until node == last
      end
    end
    return nil
  end,
  RemoveNode = function (this, node)
    vaildateNode(this, node)
    remvoeNode(this, node)
  end,
  Remove = function (this, node)
    node = this:Find(node)
    if node ~= nil then
      remvoeNode(this, node)
    end
    return false
  end,
  RemoveFirst = function (this)
    local head = this.head
    if head == nil then
      throw(InvalidOperationException("LinkedListEmpty"))
    end
    remvoeNode(this, head)
  end,
  RemoveLast = function (this)
    local head = this.head
    if head == nil then
      throw(InvalidOperationException("LinkedListEmpty"))
    end
    remvoeNode(this, head.prev)
  end,
  GetEnumerator = function (this)
    return setmetatable({ list = this, version = this.version, node = this.head }, LinkedListEnumerator)
  end
}

function System.linkedListFromTable(t, T)
  return setmetatable(t, LinkedList(T))
end

System.LinkedList = define("System.Collections.Generic.LinkedList", function(T) 
  return { 
  base = { System.ICollection_1(T), System.ICollection }, 
  __genericT__ = T,
  __len = LinkedList.getCount
  }
end, LinkedList)


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Collections/LinkedList.lua.meta
================================================
fileFormatVersion: 2
guid: 75ca5de6d7b98f747a64607ed526171e
timeCreated: 1526899278
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/Lua/CoreSystemLua/CoreSystem/Collections/Linq.lua
================================================
--[[
Copyright 2017 YANG Huan (sy.yanghuan@gmail.com).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--]]

local System = System
local define = System.define
local throw = System.throw
local each = System.each
local identityFn = System.identityFn
local wrap = System.wrap
local unWrap = System.unWrap
local is = System.is
local cast = System.cast
local Int32 = System.Int32
local isArrayLike = System.isArrayLike
local isDictLike = System.isDictLike
local Array = System.Array
local arrayEnumerator = Array.GetEnumerator

local NullReferenceException = System.NullReferenceException
local ArgumentNullException = System.ArgumentNullException
local ArgumentOutOfRangeException = System.ArgumentOutOfRangeException
local InvalidOperationException = System.InvalidOperationException
local EqualityComparer = System.EqualityComparer
local Comparer_1 = System.Comparer_1
local Empty = System.Array.Empty

local IEnumerable_1 = System.IEnumerable_1
local IEnumerable = System.IEnumerable
local IEnumerator_1 = System.IEnumerator_1
local IEnumerator = System.IEnumerator

local assert = assert
local getmetatable = getmetatable
local setmetatable = setmetatable
local select = select
local pairs = pairs
local tsort = table.sort

local InternalEnumerable = define("System.Linq.InternalEnumerable", function(T) 
  return {
    base = { IEnumerable_1(T) }
  }
end)

local function createEnumerable(T, GetEnumerator)
  assert(T)
  return setmetatable({ __genericT__ = T, GetEnumerator = GetEnumerator }, InternalEnumerable(T))
end

local InternalEnumerator = define("System.Linq.InternalEnumerator", function(T) 
  return {
    base = { IEnumerator_1(T) }
  }
end)

local function createEnumerator(T, source, tryGetNext, init)
  assert(T)
  local state = 1
  local current
  local en
  return setmetatable({
    MoveNext = function()
      if state == 1 then
        state = 2
        if source then
          en = source:GetEnumerator() 
        end
        if init then
          init(en) 
        end
      end
      if state == 2 then
        local ok, v = tryGetNext(en)
        if ok then
          current = v
          return true
        elseif en then
          local dispose = en.Dispose
          if dispose then
            dispose(en)
          end    
        end
       end
       return false
    end,
    getCurrent = function()
      return current
    end
  }, InternalEnumerator(T))
end

local Enumerable = {}
define("System.Linq.Enumerable", Enumerable)

function Enumerable.Where(source, predicate)
  if source == nil then throw(ArgumentNullException("source")) end
  if predicate == nil then throw(ArgumentNullException("predicate")) end
  local T = source.__genericT__
  return createEnumerable(T, function() 
    local index = -1
    return createEnumerator(T, source, function(en)
      while en:MoveNext() do
        local current = en:getCurrent()
        index = index + 1
        if predicate(current, index) then
          return true, current
        end
      end 
      return false
    end)
  end)
end

function Enumerable.Select(source, selector, T)
  if source == nil then throw(ArgumentNullException("source")) end
  if selector == nil then throw(ArgumentNullException("selector")) end
  return createEnumerable(T, function()
    local index = -1
    return createEnumerator(T, source, function(en) 
      if en:MoveNext() then
        index = index + 1
        return true, selector(en:getCurrent(), index)
      end
      return false
    end)
  end)
end

local function selectMany(source, collectionSelector, resultSelector, T)
  if source == nil then throw(ArgumentNullException("source")) end
  if collectionSelector == nil then throw(ArgumentNullException("collectionSelector")) end
  if resultSelector == nil then throw(ArgumentNullException("resultSelector")) end
  return createEnumerable(T, function() 
    local element, midEn
    local index = -1
    return createEnumerator(T, source, function(en) 
      while true do
        if midEn and midEn:MoveNext() then
          return true, resultSelector(element, midEn:getCurrent())
        else
          if not en:MoveNext() then return false end
          index = index + 1
          local current = en:getCurrent()
          midEn = collectionSelector(current, index):GetEnumerator()
          if midEn == nil then
            throw(NullReferenceException())
          end
          element = current
        end  
      end
    end)
  end)
end

local function identityFnOfSelectMany(s, x)
  return x
end

function Enumerable.SelectMany(source, ...)
  local len = select("#", ...)
  if len == 2 then
    local collectionSelector, T = ...
    return selectMany(source, collectionSelector, identityFnOfSelectMany, T)
  else
    return selectMany(source, ...)
  end
end

function Enumerable.Take(source, count)
  if source == nil then throw(ArgumentNullException("source")) end
  local T = source.__genericT__
  return createEnumerable(T, function()
    return createEnumerator(T, source, function(en)
      if count > 0 then
        if en:MoveNext() then
          count = count - 1
          return true, en:getCurrent()
        end
      end
      return false
    end)
  end)
end

function Enumerable.TakeWhile(source, predicate)
  if source == nil then throw(ArgumentNullException("source")) end
  if predicate == nil then throw(ArgumentNullException("predicate")) end
  local T = source.__genericT__
  return createEnumerable(T, function()
    local index = -1
    return createEnumerator(T, source, function(en)
      if en:MoveNext() then
        local current = en:getCurrent()
        index = index + 1
        if not predicate(current, index) then
          return false
        end
        return true, current
      end
      return false
    end)
  end)
end

function Enumerable.Skip(source, count)
  if source == nil then throw(ArgumentNullException("source")) end
  local T = source.__genericT__
  return createEnumerable(T, function()
    return createEnumerator(T, source, function(en)
      while count > 0 and en:MoveNext() do count = count - 1 end
      if count <= 0 then
        if en:MoveNext() then
          return true, en:getCurrent() 
        end
      end
      return false
    end)
  end)
end

function Enumerable.SkipWhile(source, predicate)
  if source == nil then throw(ArgumentNullException("source")) end
  if predicate == nil then throw(ArgumentNullException("predicate")) end
  local T = source.__genericT__
  return createEnumerable(T, function()
    local index = -1
    local isSkipEnd = false
    return createEnumerator(T, source, function(en)
      while not isSkipEnd do
        if en:MoveNext() then
          local current = en:getCurrent()
          index = index + 1
          if not predicate(current, index) then
            isSkipEnd = true
            return true, current
          end     
        else 
          return false
        end
      end
      if en:MoveNext() then
        return true, en:getCurrent()
      end
      return false
    end)
  end)
end

local IGrouping = System.defInf("System.Linq.IGrouping_2", function (TKey, TElement)
  return {
    base = { IEnumerable_1(TElement) } 
  }
end)

local Grouping = define("System.Linq.Grouping", function (TKey, TElement)
  return {
    __genericT__ = TElement,
    base = { IGrouping(TKey, TElement) },
    GetEnumerator = arrayEnumerator,
    getKey = function (this)
      return this.key
    end,
    getCount = function (this)
      return #this
    end
  }
end)

local function getGrouping(this, key)
  local hashCode = this.comparer:GetHashCodeOf(key)
  local groupIndex = this.indexs[hashCode]
  return this.groups[groupIndex]
end

local Lookup = {
  __ctor__ = function (this, comparer)
    this.comparer = comparer or EqualityComparer(this.__genericTKey__).getDefault()
    this.groups = {}
    this.indexs = {}
  end,
  get = function (this, key)
    local grouping = getGrouping(this, key)
    if grouping ~= nil then return grouping end 
    return Empty(this.__genericTElement__)
  end,
  GetCount = function (this)
    return #this.groups
  end,
  Contains = function (this, key)
    return getGrouping(this, key) ~= nil
  end,
  GetEnumerator = function (this)
    return arrayEnumerator(this.groups, IGrouping)
  end
}

local LookupFn = define("System.Linq.Lookup", function(TKey, TElement)
  local cls = {
    __genericTKey__ = TKey,
    __genericTElement__ = TElement,
  }
  return cls
end, Lookup)

local function addToLookup(this, key, value)
  local hashCode = this.comparer:GetHashCodeOf(key)
  local groupIndex = this.indexs[hashCode]
  local group
  if groupIndex == nil then
	  groupIndex = #this.groups + 1
	  this.indexs[hashCode] = groupIndex
	  group = setmetatable({ key = key }, Grouping(this.__genericTKey__, this.__genericTElement__))
	  this.groups[groupIndex] = group
  else
	  group = this.groups[groupIndex]
	  assert(group)
  end
  group[#group + 1] = wrap(value)
end

local function createLookup(source, keySelector, elementSelector, comparer, TKey, TElement)
  local lookup = LookupFn(TKey, TElement)(comparer)
  for _, item in each(source) do
    addToLookup(lookup, keySelector(item), elementSelector(item))
  end
  return lookup
end

local function createLookupForJoin(source, keySelector, comparer, TKey, TElement)
  local lookup = LookupFn(TKey, TElement)(comparer)
  for _, item in each(source) do
    local key = keySelector(item)
    if key ~= nil then
      addToLookup(lookup, key, item)
    end
  end
  return lookup
end

function Enumerable.Join(outer, inner, outerKeySelector, innerKeySelector, resultSelector, comparer, TKey, TResult)
  if outer == nil then throw(ArgumentNullException("outer")) end
  if inner == nil then throw(ArgumentNullException("inner")) end
  if outerKeySelector == nil then throw(ArgumentNullException("outerKeySelector")) end
  if innerKeySelector == nil then throw(ArgumentNullException("innerKeySelector")) end
  if resultSelector == nil then throw(ArgumentNullException("resultSelector")) end
  local lookup = createLookupForJoin(inner, innerKeySelector, comparer, TKey, inner.__genericT__)
  return createEnumerable(TResult, function ()
    local item, grouping, index
    return createEnumerator(TResult, outer, function (en)
      while true do
        if grouping ~= nil then
          index = index + 1
          if index < #grouping then
            return true, resultSelector(item, unWrap(grouping[index + 1]))
          end
        end
        if not en:MoveNext() then return false end
        local current = en:getCurrent()
        item = current
        grouping = getGrouping(lookup, outerKeySelector(current))
        index = -1
      end
    end)
  end)
end

function Enumerable.GroupJoin(outer, inner, outerKeySelector, innerKeySelector, resultSelector, comparer, TKey, TResult)
  if outer == nil then throw(ArgumentNullException("outer")) end
  if inner == nil then throw(ArgumentNullException("inner")) end
  if outerKeySelector == nil then throw(ArgumentNullException("outerKeySelector")) end
  if innerKeySelector == nil then throw(ArgumentNullException("innerKeySelector")) end
  if resultSelector == nil then throw(ArgumentNullException("resultSelector")) end
  local lookup = createLookupForJoin(inner, innerKeySelector, comparer, TKey, inner.__genericT__)
  return createEnumerable(TResult, function ()
    return createEnumerator(TResult, outer, function (en)
      if en:MoveNext() then
        local item = en:getCurrent()
        return true, resultSelector(item, lookup:get(outerKeySelector(item)))
      end
      return false
    end)
  end)
end

local function ordered(source, compare)
  local T = source.__genericT__
  local orderedEnumerable = createEnumerable(T, function()
    local t = {}
    local index = 0
    return createEnumerator(T, source, function() 
      index = index + 1
      local v = t[index]
      if v ~= nil then
        return true, unWrap(v)
      end
      return false
    end, 
    function() 
      local count = 1
      if isDictLike(source) then
        for k, v in pairs(source) do
          t[count] = setmetatable({ Key = k, Value = v }, T)
          count = count + 1
        end
      else
        for _, v in each(source) do
          t[count] = wrap(v)
          count = count + 1
        end
      end
      if count > 1 then
        tsort(t, function(x, y)
          return compare(unWrap(x), unWrap(y)) < 0 
        end)
      end
    end)
  end)
  orderedEnumerable.source = source
  orderedEnumerable.compare = compare
  return orderedEnumerable
end

local function orderBy(source, keySelector, comparer, TKey, descending)
  if source == nil then throw(ArgumentNullException("source")) end
  if keySelector == nil then throw(ArgumentNullException("keySelector")) end
  if comparer == nil then comparer = Comparer_1(TKey).getDefault() end 
  local keys = {}
  local function getKey(t) 
    local k = keys[t]
    if k == nil then
      k = keySelector(t)
      keys[t] = k
    end
    return k
  end
  local c = comparer.Compare
  local compare
  if descending then
    compare = function(x, y)
      return -c(comparer, getKey(x), getKey(y))
    end
  else
    compare = function(x, y)
      return c(comparer, getKey(x), getKey(y))
    end
  end
  return ordered(source, compare)
end

function Enumerable.OrderBy(source, keySelector, comparer, TKey)
  return orderBy(source, keySelector, comparer, TKey, false)
end

function Enumerable.OrderByDescending(source, keySelector, comparer, TKey)
  return orderBy(source, keySelector, comparer, TKey, true)
end

local function thenBy(source, keySelector, comparer, TKey, descending)
  if source == nil then throw(ArgumentNullException("source")) end
  if keySelector == nil then throw(ArgumentNullException("keySelector")) end
  if comparer == nil then comparer = Comparer_1(TKey).getDefault() end
  local keys = {}
  local function getKey(t) 
    local k = keys[t]
    if k == nil then
      k = keySelector(t)
      keys[t] = k
    end
    return k
  end
  local c = comparer.Compare
  local compare
  local parentSource, parentCompare = source.source, source.compare
  if descending then
    compare = function(x, y)
      local v = parentCompare(x, y)
      if v ~= 0 then
        return v
      else
        return -c(comparer, getKey(x), getKey(y))
      end
    end
  else
    compare = function(x, y)
      local v = parentCompare(x, y)
      if v ~= 0 then
        return v
      else
        return c(comparer, getKey(x), getKey(y))
      end
    end
  end
  return ordered(parentSource, compare)
end

function Enumerable.ThenBy(source, keySelector, comparer, TKey)
  return thenBy(source, keySelector, comparer, TKey, false)
end

function Enumerable.ThenByDescending(source, keySelector, comparer, TKey)
  return thenBy(source, keySelector, comparer, TKey, true)
end

local function groupBy(source, keySelector, elementSelector, comparer, TKey, TElement)
  if source == nil then throw(ArgumentNullException("source")) end
  if keySelector == nil then throw(ArgumentNullException("keySelector")) end
  if elementSelector == nil then throw(ArgumentNullException("elementSelector")) end
  return createEnumerable(IGrouping, function()
    return createLookup(source, keySelector, elementSelector, comparer, TKey, TElement):GetEnumerator()
  end)
end

function Enumerable.GroupBy(source, ...)
  if source == nil then throw(ArgumentNullException("source")) end
  local len = select("#", ...)
  if len == 2 then
    local keySelector, TKey = ...
    return groupBy(source, keySelector, identityFn, nil, TKey, source.__genericT__)
  elseif len == 3 then
    local keySelector, comparer, TKey = ...
    return groupBy(source, keySelector, identityFn, comparer, TKey, source.__genericT__)
  elseif len == 4 then
    local keySelector, elementSelector, TKey, TElement = ...
    return groupBy(source, keySelector, elementSelector, nil, TKey, TElement)
  else
    return groupBy(source, ...)
  end
end

local function groupBySelect(source, keySelector, elementSelector, resultSelector, comparer, TKey, TElement, TResult)
  if source == nil then throw(ArgumentNullException("source")) end
  if keySelector == nil then throw(ArgumentNullException("keySelector")) end
  if elementSelector == nil then throw(ArgumentNullException("elementSelector")) end
  if resultSelector == nil then throw(ArgumentNullException("resultSelector")) end
  return createEnumerable(TResult, function()
    local lookup = createLookup(source, keySelector, elementSelector, comparer, TKey, TElement)
    return createEnumerator(TResult, lookup, function(en)
      if en:MoveNext() then
        local current = en:getCurrent()
        return resultSelector(current.key, current)
      end
      return false
    end)
  end)
end

function Enumerable.GroupBySelect(source, ...)
  local len = select("#", ...)
  if len == 4 then
    local keySelector, resultSelector, TKey, TResult = ...
    return groupBySelect(source, keySelector, identityFn, resultSelector, nil, TKey, source.__genericT__, TResult)
  elseif len == 5 then
    local keySelector, resultSelector, comparer, TKey, TResult = ...
    return groupBySelect(source, keySelector, identityFn, resultSelector, comparer, TKey, source.__genericT__, TResult)
  elseif len == 6 then
    local keySelector, elementSelector, resultSelector, TKey, TElement, TResult = ...
    return groupBySelect(source, keySelector, elementSelector, resultSelector, nil, TKey, TElement, TResult)
  else
    return groupBySelect(source, ...)
  end
end

function Enumerable.Concat(first, second)
  if first == nil then throw(ArgumentNullException("first")) end
  if second == nil then throw(ArgumentNullException("second")) end
  local T = first.__genericT__
  return createEnumerable(T, function()
    local secondEn
    return createEnumerator(T, first, function(en)
      if secondEn == nil then
        if en:MoveNext() then
          return true, en:getCurrent()
        end
        secondEn = second:GetEnumerator()
      end
      if secondEn:MoveNext() then
        return true, secondEn:getCurrent()
      end
      return false
    end)
  end)
end

function Enumerable.Zip(first, second, resultSelector, TResult) 
  if first == nil then throw(ArgumentNullException("first")) end
  if second == nil then throw(ArgumentNullException("second")) end
  if resultSelector == nil then throw(ArgumentNullException("resultSelector")) end
  return createEnumerable(TResult, function()
    local e2
    return createEnumerator(TResult, first, function(e1)
      if e1:MoveNext() and e2:MoveNext() then
          return true, resultSelector(e1:getCurrent(), e2:getCurrent())
      end
    end, 
    function()
      e2 = second:GetEnumerator()
    end)
  end)
end

local function addToSet(set, v, getHashCode, comparer)
  local hashCode = getHashCode(comparer, v)
  if set[hashCode] == nil then
    set[hashCode] = true
    return true
  end
  return false
end

local function removeFromSet(set, v, getHashCode, comparer)
  local hashCode = getHashCode(comparer, v)
  if set[hashCode] ~= nil then
    set[hashCode] = nil
    return true
  end
  return false
end

local function getComparer(source, comparer)
  return comparer or EqualityComparer(source.__genericT__).getDefault()
end

function Enumerable.Distinct(source, comparer)
  if source == nil then throw(ArgumentNullException("source")) end
  local T = source.__genericT__
  return createEnumerable(T, function()
    local set = {}
    comparer = getComparer(source, comparer)
    local getHashCode = comparer.GetHashCodeOf
    return createEnumerator(T, source, function(en)
      while en:MoveNext() do
        local current = en:getCurrent()
        if addToSet(set, current, getHashCode, comparer) then
          return true, current  
        end
      end
      return false
    end)
  end)
end

function Enumerable.Union(first, second, comparer)
  if first == nil then throw(ArgumentNullException("first")) end
  if second == nil then throw(ArgumentNullException("second")) end
  local T = first.__genericT__
  return createEnumerable(T, function()
    local set = {}
    comparer = getComparer(first, comparer)
    local getHashCode = comparer.
Download .txt
gitextract_wjxhfzse/

├── .gitignore
├── Assets/
│   ├── CSharpLua/
│   │   ├── Base/
│   │   │   ├── BaseScripts.asmdef
│   │   │   ├── BaseScripts.asmdef.meta
│   │   │   ├── CSharpLua/
│   │   │   │   ├── BaseUtility.cs
│   │   │   │   ├── BaseUtility.cs.meta
│   │   │   │   ├── LuaAutoWrapAttribute.cs
│   │   │   │   ├── LuaAutoWrapAttribute.cs.meta
│   │   │   │   ├── Settings.cs
│   │   │   │   └── Settings.cs.meta
│   │   │   └── CSharpLua.meta
│   │   ├── Base.meta
│   │   ├── Bridge/
│   │   │   ├── BridgeScripts.asmdef
│   │   │   ├── BridgeScripts.asmdef.meta
│   │   │   ├── TestUtils.cs
│   │   │   └── TestUtils.cs.meta
│   │   ├── Bridge.meta
│   │   ├── CSharpLuaClient.cs
│   │   ├── CSharpLuaClient.cs.meta
│   │   ├── Compiled/
│   │   │   ├── CompiledScripts.asmdef
│   │   │   ├── CompiledScripts.asmdef.meta
│   │   │   ├── Protocol/
│   │   │   │   ├── AutoGen/
│   │   │   │   │   ├── CommonPrototype.cs
│   │   │   │   │   └── CommonPrototype.cs.meta
│   │   │   │   ├── AutoGen.meta
│   │   │   │   ├── CommonPrototype.proto
│   │   │   │   ├── CommonPrototype.proto.meta
│   │   │   │   ├── IProtocol.cs
│   │   │   │   └── IProtocol.cs.meta
│   │   │   ├── Protocol.meta
│   │   │   ├── Sample/
│   │   │   │   ├── TestCoroutine.cs
│   │   │   │   ├── TestCoroutine.cs.meta
│   │   │   │   ├── TestHangingScript.cs
│   │   │   │   ├── TestHangingScript.cs.meta
│   │   │   │   ├── TestHelloWord.cs
│   │   │   │   ├── TestHelloWord.cs.meta
│   │   │   │   ├── TestProtobuf.cs
│   │   │   │   └── TestProtobuf.cs.meta
│   │   │   └── Sample.meta
│   │   ├── Compiled.meta
│   │   ├── Editor/
│   │   │   ├── Compiler.cs
│   │   │   └── Compiler.cs.meta
│   │   ├── Editor.meta
│   │   ├── Examples/
│   │   │   ├── 01_HelloWorld/
│   │   │   │   ├── HelloWorld.unity
│   │   │   │   ├── HelloWorld.unity.meta
│   │   │   │   ├── TestLoader.prefab
│   │   │   │   ├── TestLoader.prefab.meta
│   │   │   │   ├── testText.txt
│   │   │   │   └── testText.txt.meta
│   │   │   └── 01_HelloWorld.meta
│   │   ├── Examples.meta
│   │   ├── UserMonoBehaviourConverter.cs
│   │   └── UserMonoBehaviourConverter.cs.meta
│   ├── CSharpLua.meta
│   ├── Editor/
│   │   ├── Custom/
│   │   │   ├── CustomSettings.cs
│   │   │   └── CustomSettings.cs.meta
│   │   └── Custom.meta
│   ├── Editor.meta
│   ├── Lua/
│   │   ├── 3rd/
│   │   │   ├── pbc/
│   │   │   │   ├── Protocol/
│   │   │   │   │   ├── CommonPrototype.pb
│   │   │   │   │   └── CommonPrototype.pb.meta
│   │   │   │   ├── Protocol.meta
│   │   │   │   ├── protobuf.lua
│   │   │   │   └── protobuf.lua.meta
│   │   │   └── pbc.meta
│   │   ├── 3rd.meta
│   │   ├── Classloader.lua
│   │   ├── Classloader.lua.meta
│   │   ├── Compiled/
│   │   │   ├── Protocol/
│   │   │   │   ├── AutoGen/
│   │   │   │   │   ├── CommonPrototype.lua
│   │   │   │   │   └── CommonPrototype.lua.meta
│   │   │   │   ├── AutoGen.meta
│   │   │   │   ├── IProtocol.lua
│   │   │   │   └── IProtocol.lua.meta
│   │   │   ├── Protocol.meta
│   │   │   ├── Sample/
│   │   │   │   ├── TestCoroutine.lua
│   │   │   │   ├── TestCoroutine.lua.meta
│   │   │   │   ├── TestHangingScript.lua
│   │   │   │   ├── TestHangingScript.lua.meta
│   │   │   │   ├── TestHelloWord.lua
│   │   │   │   ├── TestHelloWord.lua.meta
│   │   │   │   ├── TestProtobuf.lua
│   │   │   │   └── TestProtobuf.lua.meta
│   │   │   ├── Sample.meta
│   │   │   ├── manifest.lua
│   │   │   └── manifest.lua.meta
│   │   ├── Compiled.meta
│   │   ├── CoreSystemLua/
│   │   │   ├── All.lua
│   │   │   ├── All.lua.meta
│   │   │   ├── CoreSystem/
│   │   │   │   ├── Array.lua
│   │   │   │   ├── Array.lua.meta
│   │   │   │   ├── Boolean.lua
│   │   │   │   ├── Boolean.lua.meta
│   │   │   │   ├── Char.lua
│   │   │   │   ├── Char.lua.meta
│   │   │   │   ├── Collections/
│   │   │   │   │   ├── Dictionary.lua
│   │   │   │   │   ├── Dictionary.lua.meta
│   │   │   │   │   ├── EqualityComparer.lua
│   │   │   │   │   ├── EqualityComparer.lua.meta
│   │   │   │   │   ├── HashSet.lua
│   │   │   │   │   ├── HashSet.lua.meta
│   │   │   │   │   ├── LinkedList.lua
│   │   │   │   │   ├── LinkedList.lua.meta
│   │   │   │   │   ├── Linq.lua
│   │   │   │   │   ├── Linq.lua.meta
│   │   │   │   │   ├── List.lua
│   │   │   │   │   ├── List.lua.meta
│   │   │   │   │   ├── Queue.lua
│   │   │   │   │   ├── Queue.lua.meta
│   │   │   │   │   ├── SortedSet.lua
│   │   │   │   │   ├── SortedSet.lua.meta
│   │   │   │   │   ├── Stack.lua
│   │   │   │   │   └── Stack.lua.meta
│   │   │   │   ├── Collections.meta
│   │   │   │   ├── Console.lua
│   │   │   │   ├── Console.lua.meta
│   │   │   │   ├── Convert.lua
│   │   │   │   ├── Convert.lua.meta
│   │   │   │   ├── Core.lua
│   │   │   │   ├── Core.lua.meta
│   │   │   │   ├── DateTime.lua
│   │   │   │   ├── DateTime.lua.meta
│   │   │   │   ├── Delegate.lua
│   │   │   │   ├── Delegate.lua.meta
│   │   │   │   ├── Enum.lua
│   │   │   │   ├── Enum.lua.meta
│   │   │   │   ├── Exception.lua
│   │   │   │   ├── Exception.lua.meta
│   │   │   │   ├── IO/
│   │   │   │   │   ├── File.lua
│   │   │   │   │   └── File.lua.meta
│   │   │   │   ├── IO.meta
│   │   │   │   ├── Interfaces.lua
│   │   │   │   ├── Interfaces.lua.meta
│   │   │   │   ├── Math.lua
│   │   │   │   ├── Math.lua.meta
│   │   │   │   ├── Number.lua
│   │   │   │   ├── Number.lua.meta
│   │   │   │   ├── Random.lua
│   │   │   │   ├── Random.lua.meta
│   │   │   │   ├── Reflection/
│   │   │   │   │   ├── Assembly.lua
│   │   │   │   │   └── Assembly.lua.meta
│   │   │   │   ├── Reflection.meta
│   │   │   │   ├── String.lua
│   │   │   │   ├── String.lua.meta
│   │   │   │   ├── Text/
│   │   │   │   │   ├── StringBuilder.lua
│   │   │   │   │   └── StringBuilder.lua.meta
│   │   │   │   ├── Text.meta
│   │   │   │   ├── Threading/
│   │   │   │   │   ├── Task.lua
│   │   │   │   │   ├── Task.lua.meta
│   │   │   │   │   ├── Thread.lua
│   │   │   │   │   ├── Thread.lua.meta
│   │   │   │   │   ├── Timer.lua
│   │   │   │   │   └── Timer.lua.meta
│   │   │   │   ├── Threading.meta
│   │   │   │   ├── Threads.meta
│   │   │   │   ├── TimeSpan.lua
│   │   │   │   ├── TimeSpan.lua.meta
│   │   │   │   ├── Type.lua
│   │   │   │   ├── Type.lua.meta
│   │   │   │   ├── Utilities.lua
│   │   │   │   └── Utilities.lua.meta
│   │   │   ├── CoreSystem.meta
│   │   │   ├── Sample/
│   │   │   │   ├── test.lua
│   │   │   │   └── test.lua.meta
│   │   │   └── Sample.meta
│   │   ├── CoreSystemLua.meta
│   │   ├── Main.lua
│   │   ├── Main.lua.meta
│   │   ├── ProtobufAdapter.lua
│   │   ├── ProtobufAdapter.lua.meta
│   │   ├── UnityAdapter.Lua
│   │   └── UnityAdapter.Lua.meta
│   ├── Lua.meta
│   ├── Plugins/
│   │   ├── 3rd/
│   │   │   └── protobuf-net.dll.meta
│   │   ├── 3rd.meta
│   │   ├── Android/
│   │   │   ├── libs/
│   │   │   │   ├── arm64-v8a/
│   │   │   │   │   └── libtolua.so.meta
│   │   │   │   ├── arm64-v8a.meta
│   │   │   │   ├── armeabi-v7a/
│   │   │   │   │   └── libtolua.so.meta
│   │   │   │   ├── armeabi-v7a.meta
│   │   │   │   ├── x86/
│   │   │   │   │   └── libtolua.so.meta
│   │   │   │   └── x86.meta
│   │   │   └── libs.meta
│   │   ├── Android.meta
│   │   ├── CString.dll.meta
│   │   ├── Debugger.dll.meta
│   │   ├── iOS/
│   │   │   ├── libtolua.a
│   │   │   └── libtolua.a.meta
│   │   ├── iOS.meta
│   │   ├── tolua.bundle/
│   │   │   ├── Contents/
│   │   │   │   ├── Info.plist
│   │   │   │   ├── Info.plist.meta
│   │   │   │   ├── MacOS/
│   │   │   │   │   ├── tolua
│   │   │   │   │   └── tolua.meta
│   │   │   │   ├── MacOS.meta
│   │   │   │   ├── Resources/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── LICENSE.meta
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── README.md.meta
│   │   │   │   │   ├── print_r.lua
│   │   │   │   │   ├── print_r.lua.meta
│   │   │   │   │   ├── sproto.lua
│   │   │   │   │   ├── sproto.lua.meta
│   │   │   │   │   ├── sproto.new/
│   │   │   │   │   │   ├── LICENSE
│   │   │   │   │   │   ├── LICENSE.meta
│   │   │   │   │   │   ├── Makefile
│   │   │   │   │   │   ├── Makefile.meta
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── README.md.meta
│   │   │   │   │   │   ├── lsproto.c
│   │   │   │   │   │   ├── lsproto.c.meta
│   │   │   │   │   │   ├── msvcint.h
│   │   │   │   │   │   ├── msvcint.h.meta
│   │   │   │   │   │   ├── print_r.lua
│   │   │   │   │   │   ├── print_r.lua.meta
│   │   │   │   │   │   ├── sproto.c
│   │   │   │   │   │   ├── sproto.c.meta
│   │   │   │   │   │   ├── sproto.h
│   │   │   │   │   │   ├── sproto.h.meta
│   │   │   │   │   │   ├── sproto.lua
│   │   │   │   │   │   ├── sproto.lua.meta
│   │   │   │   │   │   ├── sproto.new.xcodeproj/
│   │   │   │   │   │   │   ├── project.pbxproj
│   │   │   │   │   │   │   └── project.pbxproj.meta
│   │   │   │   │   │   ├── sproto.new.xcodeproj.meta
│   │   │   │   │   │   ├── sprotoparser.lua
│   │   │   │   │   │   ├── sprotoparser.lua.meta
│   │   │   │   │   │   ├── test.lua
│   │   │   │   │   │   ├── test.lua.meta
│   │   │   │   │   │   ├── testall.lua
│   │   │   │   │   │   ├── testall.lua.meta
│   │   │   │   │   │   ├── testrpc.lua
│   │   │   │   │   │   └── testrpc.lua.meta
│   │   │   │   │   ├── sproto.new.meta
│   │   │   │   │   ├── sprotoparser.lua
│   │   │   │   │   ├── sprotoparser.lua.meta
│   │   │   │   │   ├── test.lua
│   │   │   │   │   ├── test.lua.meta
│   │   │   │   │   ├── testall.lua
│   │   │   │   │   ├── testall.lua.meta
│   │   │   │   │   ├── testrpc.lua
│   │   │   │   │   └── testrpc.lua.meta
│   │   │   │   └── Resources.meta
│   │   │   └── Contents.meta
│   │   ├── tolua.bundle.meta
│   │   ├── x86/
│   │   │   └── tolua.dll.meta
│   │   ├── x86.meta
│   │   ├── x86_64/
│   │   │   └── tolua.dll.meta
│   │   └── x86_64.meta
│   ├── Plugins.meta
│   ├── Source/
│   │   ├── Generate.meta
│   │   ├── LuaConst.cs
│   │   └── LuaConst.cs.meta
│   ├── Source.meta
│   ├── ToLua/
│   │   ├── BaseType/
│   │   │   ├── LuaInterface_EventObjectWrap.cs
│   │   │   ├── LuaInterface_EventObjectWrap.cs.meta
│   │   │   ├── LuaInterface_LuaConstructorWrap.cs
│   │   │   ├── LuaInterface_LuaConstructorWrap.cs.meta
│   │   │   ├── LuaInterface_LuaFieldWrap.cs
│   │   │   ├── LuaInterface_LuaFieldWrap.cs.meta
│   │   │   ├── LuaInterface_LuaMethodWrap.cs
│   │   │   ├── LuaInterface_LuaMethodWrap.cs.meta
│   │   │   ├── LuaInterface_LuaOutWrap.cs
│   │   │   ├── LuaInterface_LuaOutWrap.cs.meta
│   │   │   ├── LuaInterface_LuaPropertyWrap.cs
│   │   │   ├── LuaInterface_LuaPropertyWrap.cs.meta
│   │   │   ├── System_ArrayWrap.cs
│   │   │   ├── System_ArrayWrap.cs.meta
│   │   │   ├── System_Collections_Generic_DictionaryWrap.cs
│   │   │   ├── System_Collections_Generic_DictionaryWrap.cs.meta
│   │   │   ├── System_Collections_Generic_Dictionary_KeyCollectionWrap.cs
│   │   │   ├── System_Collections_Generic_Dictionary_KeyCollectionWrap.cs.meta
│   │   │   ├── System_Collections_Generic_Dictionary_ValueCollectionWrap.cs
│   │   │   ├── System_Collections_Generic_Dictionary_ValueCollectionWrap.cs.meta
│   │   │   ├── System_Collections_Generic_KeyValuePairWrap.cs
│   │   │   ├── System_Collections_Generic_KeyValuePairWrap.cs.meta
│   │   │   ├── System_Collections_Generic_ListWrap.cs
│   │   │   ├── System_Collections_Generic_ListWrap.cs.meta
│   │   │   ├── System_Collections_IEnumeratorWrap.cs
│   │   │   ├── System_Collections_IEnumeratorWrap.cs.meta
│   │   │   ├── System_Collections_ObjectModel_ReadOnlyCollectionWrap.cs
│   │   │   ├── System_Collections_ObjectModel_ReadOnlyCollectionWrap.cs.meta
│   │   │   ├── System_DelegateWrap.cs
│   │   │   ├── System_DelegateWrap.cs.meta
│   │   │   ├── System_EnumWrap.cs
│   │   │   ├── System_EnumWrap.cs.meta
│   │   │   ├── System_NullObjectWrap.cs
│   │   │   ├── System_NullObjectWrap.cs.meta
│   │   │   ├── System_ObjectWrap.cs
│   │   │   ├── System_ObjectWrap.cs.meta
│   │   │   ├── System_StringWrap.cs
│   │   │   ├── System_StringWrap.cs.meta
│   │   │   ├── System_TypeWrap.cs
│   │   │   ├── System_TypeWrap.cs.meta
│   │   │   ├── UnityEngine_CoroutineWrap.cs
│   │   │   ├── UnityEngine_CoroutineWrap.cs.meta
│   │   │   ├── UnityEngine_ObjectWrap.cs
│   │   │   └── UnityEngine_ObjectWrap.cs.meta
│   │   ├── BaseType.meta
│   │   ├── Core/
│   │   │   ├── LuaAttributes.cs
│   │   │   ├── LuaAttributes.cs.meta
│   │   │   ├── LuaBaseRef.cs
│   │   │   ├── LuaBaseRef.cs.meta
│   │   │   ├── LuaBeatEvent.cs
│   │   │   ├── LuaBeatEvent.cs.meta
│   │   │   ├── LuaDLL.cs
│   │   │   ├── LuaDLL.cs.meta
│   │   │   ├── LuaEvent.cs
│   │   │   ├── LuaEvent.cs.meta
│   │   │   ├── LuaException.cs
│   │   │   ├── LuaException.cs.meta
│   │   │   ├── LuaFileUtils.cs
│   │   │   ├── LuaFileUtils.cs.meta
│   │   │   ├── LuaFunction.cs
│   │   │   ├── LuaFunction.cs.meta
│   │   │   ├── LuaMatchType.cs
│   │   │   ├── LuaMatchType.cs.meta
│   │   │   ├── LuaMethodCache.cs
│   │   │   ├── LuaMethodCache.cs.meta
│   │   │   ├── LuaMisc.cs
│   │   │   ├── LuaMisc.cs.meta
│   │   │   ├── LuaStackOp.cs
│   │   │   ├── LuaStackOp.cs.meta
│   │   │   ├── LuaState.cs
│   │   │   ├── LuaState.cs.meta
│   │   │   ├── LuaStatePtr.cs
│   │   │   ├── LuaStatePtr.cs.meta
│   │   │   ├── LuaStatic.cs
│   │   │   ├── LuaStatic.cs.meta
│   │   │   ├── LuaTable.cs
│   │   │   ├── LuaTable.cs.meta
│   │   │   ├── LuaThread.cs
│   │   │   ├── LuaThread.cs.meta
│   │   │   ├── LuaUnityLibs.cs
│   │   │   ├── LuaUnityLibs.cs.meta
│   │   │   ├── LuaValueType.cs
│   │   │   ├── LuaValueType.cs.meta
│   │   │   ├── ObjectPool.cs
│   │   │   ├── ObjectPool.cs.meta
│   │   │   ├── ObjectTranslator.cs
│   │   │   ├── ObjectTranslator.cs.meta
│   │   │   ├── ToLua.cs
│   │   │   ├── ToLua.cs.meta
│   │   │   ├── TypeChecker.cs
│   │   │   ├── TypeChecker.cs.meta
│   │   │   ├── TypeTraits.cs
│   │   │   └── TypeTraits.cs.meta
│   │   ├── Core.meta
│   │   ├── Editor/
│   │   │   ├── Extend/
│   │   │   │   ├── ToLua_LuaInterface_EventObject.cs
│   │   │   │   ├── ToLua_LuaInterface_EventObject.cs.meta
│   │   │   │   ├── ToLua_LuaInterface_LuaConstructor.cs
│   │   │   │   ├── ToLua_LuaInterface_LuaConstructor.cs.meta
│   │   │   │   ├── ToLua_LuaInterface_LuaField.cs
│   │   │   │   ├── ToLua_LuaInterface_LuaField.cs.meta
│   │   │   │   ├── ToLua_LuaInterface_LuaMethod.cs
│   │   │   │   ├── ToLua_LuaInterface_LuaMethod.cs.meta
│   │   │   │   ├── ToLua_LuaInterface_LuaProperty.cs
│   │   │   │   ├── ToLua_LuaInterface_LuaProperty.cs.meta
│   │   │   │   ├── ToLua_System_Delegate.cs
│   │   │   │   ├── ToLua_System_Delegate.cs.meta
│   │   │   │   ├── ToLua_System_Enum.cs
│   │   │   │   ├── ToLua_System_Enum.cs.meta
│   │   │   │   ├── ToLua_System_Object.cs
│   │   │   │   ├── ToLua_System_Object.cs.meta
│   │   │   │   ├── ToLua_System_String.cs
│   │   │   │   ├── ToLua_System_String.cs.meta
│   │   │   │   ├── ToLua_System_Type.cs
│   │   │   │   ├── ToLua_System_Type.cs.meta
│   │   │   │   ├── ToLua_UnityEngine_GameObject.cs
│   │   │   │   ├── ToLua_UnityEngine_GameObject.cs.meta
│   │   │   │   ├── ToLua_UnityEngine_Input.cs
│   │   │   │   ├── ToLua_UnityEngine_Input.cs.meta
│   │   │   │   ├── ToLua_UnityEngine_Object.cs
│   │   │   │   ├── ToLua_UnityEngine_Object.cs.meta
│   │   │   │   ├── ToLua_UnityEngine_RectTransform.cs
│   │   │   │   └── ToLua_UnityEngine_RectTransform.cs.meta
│   │   │   ├── Extend.meta
│   │   │   ├── ToLuaExport.cs
│   │   │   ├── ToLuaExport.cs.meta
│   │   │   ├── ToLuaMenu.cs
│   │   │   ├── ToLuaMenu.cs.meta
│   │   │   ├── ToLuaTree.cs
│   │   │   └── ToLuaTree.cs.meta
│   │   ├── Editor.meta
│   │   ├── Examples/
│   │   │   ├── 01_HelloWorld/
│   │   │   │   ├── HelloWorld.cs
│   │   │   │   ├── HelloWorld.cs.meta
│   │   │   │   ├── HelloWorld.unity
│   │   │   │   └── HelloWorld.unity.meta
│   │   │   ├── 01_HelloWorld.meta
│   │   │   ├── 02_ScriptsFromFile/
│   │   │   │   ├── ScriptsFromFile.cs
│   │   │   │   ├── ScriptsFromFile.cs.meta
│   │   │   │   ├── ScriptsFromFile.lua
│   │   │   │   ├── ScriptsFromFile.lua.meta
│   │   │   │   ├── ScriptsFromFile.unity
│   │   │   │   └── ScriptsFromFile.unity.meta
│   │   │   ├── 02_ScriptsFromFile.meta
│   │   │   ├── 03_CallLuaFunction/
│   │   │   │   ├── CallLuaFunction.cs
│   │   │   │   ├── CallLuaFunction.cs.meta
│   │   │   │   ├── CallLuaFunction.unity
│   │   │   │   └── CallLuaFunction.unity.meta
│   │   │   ├── 03_CallLuaFunction.meta
│   │   │   ├── 04_AccessingLuaVariables/
│   │   │   │   ├── AccessingLuaVariables.cs
│   │   │   │   ├── AccessingLuaVariables.cs.meta
│   │   │   │   ├── AccessingLuaVariables.unity
│   │   │   │   └── AccessingLuaVariables.unity.meta
│   │   │   ├── 04_AccessingLuaVariables.meta
│   │   │   ├── 05_LuaCoroutine/
│   │   │   │   ├── LuaCoroutine.unity
│   │   │   │   ├── LuaCoroutine.unity.meta
│   │   │   │   ├── TestCoroutine.cs
│   │   │   │   └── TestCoroutine.cs.meta
│   │   │   ├── 05_LuaCoroutine.meta
│   │   │   ├── 06_LuaCoroutine2/
│   │   │   │   ├── Coroutine.unity
│   │   │   │   ├── Coroutine.unity.meta
│   │   │   │   ├── TestCoroutine2.cs
│   │   │   │   └── TestCoroutine2.cs.meta
│   │   │   ├── 06_LuaCoroutine2.meta
│   │   │   ├── 07_LuaThread/
│   │   │   │   ├── TestLuaThread.cs
│   │   │   │   ├── TestLuaThread.cs.meta
│   │   │   │   ├── TestThread.unity
│   │   │   │   └── TestThread.unity.meta
│   │   │   ├── 07_LuaThread.meta
│   │   │   ├── 08_AccessingArray/
│   │   │   │   ├── AccessingArray.cs
│   │   │   │   ├── AccessingArray.cs.meta
│   │   │   │   ├── AccessingArray.unity
│   │   │   │   └── AccessingArray.unity.meta
│   │   │   ├── 08_AccessingArray.meta
│   │   │   ├── 09_Dictionary/
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccountWrap.cs
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccountWrap.cs.meta
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccount_KeyCollectionWrap.cs
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccount_KeyCollectionWrap.cs.meta
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccount_ValueCollectionWrap.cs
│   │   │   │   ├── System_Collections_Generic_Dictionary_int_TestAccount_ValueCollectionWrap.cs.meta
│   │   │   │   ├── System_Collections_Generic_KeyValuePair_int_TestAccountWrap.cs
│   │   │   │   ├── System_Collections_Generic_KeyValuePair_int_TestAccountWrap.cs.meta
│   │   │   │   ├── TestAccountWrap.cs
│   │   │   │   ├── TestAccountWrap.cs.meta
│   │   │   │   ├── UseDictionary.cs
│   │   │   │   ├── UseDictionary.cs.meta
│   │   │   │   ├── UseDictionary.unity
│   │   │   │   └── UseDictionary.unity.meta
│   │   │   ├── 09_Dictionary.meta
│   │   │   ├── 10_Enum/
│   │   │   │   ├── AccessingEnum.cs
│   │   │   │   ├── AccessingEnum.cs.meta
│   │   │   │   ├── AccessingEnum.unity
│   │   │   │   └── AccessingEnum.unity.meta
│   │   │   ├── 10_Enum.meta
│   │   │   ├── 11_Delegate/
│   │   │   │   ├── TestDelegate.cs
│   │   │   │   ├── TestDelegate.cs.meta
│   │   │   │   ├── TestEventListener.cs
│   │   │   │   ├── TestEventListener.cs.meta
│   │   │   │   ├── TestEventListenerWrap.cs
│   │   │   │   ├── TestEventListenerWrap.cs.meta
│   │   │   │   ├── UseDelegate.unity
│   │   │   │   └── UseDelegate.unity.meta
│   │   │   ├── 11_Delegate.meta
│   │   │   ├── 12_GameObject/
│   │   │   │   ├── TestGameObject.cs
│   │   │   │   ├── TestGameObject.cs.meta
│   │   │   │   ├── TestGameObject.unity
│   │   │   │   └── TestGameObject.unity.meta
│   │   │   ├── 12_GameObject.meta
│   │   │   ├── 13_CustomLoader/
│   │   │   │   ├── CustomLoader.unity
│   │   │   │   ├── CustomLoader.unity.meta
│   │   │   │   ├── TestCustomLoader.cs
│   │   │   │   └── TestCustomLoader.cs.meta
│   │   │   ├── 13_CustomLoader.meta
│   │   │   ├── 14_Out/
│   │   │   │   ├── TestOut.unity
│   │   │   │   ├── TestOut.unity.meta
│   │   │   │   ├── TestOutArg.cs
│   │   │   │   └── TestOutArg.cs.meta
│   │   │   ├── 14_Out.meta
│   │   │   ├── 15_ProtoBuffer/
│   │   │   │   ├── ProtoBuffer.unity
│   │   │   │   ├── ProtoBuffer.unity.meta
│   │   │   │   ├── TestProtoBuffer.cs
│   │   │   │   ├── TestProtoBuffer.cs.meta
│   │   │   │   ├── TestProtol.cs
│   │   │   │   ├── TestProtol.cs.meta
│   │   │   │   ├── TestProtolWrap.cs
│   │   │   │   ├── TestProtolWrap.cs.meta
│   │   │   │   ├── common.proto
│   │   │   │   ├── common.proto.meta
│   │   │   │   ├── person.proto
│   │   │   │   └── person.proto.meta
│   │   │   ├── 15_ProtoBuffer.meta
│   │   │   ├── 16_Int64/
│   │   │   │   ├── TestInt64.cs
│   │   │   │   ├── TestInt64.cs.meta
│   │   │   │   ├── TestInt64.unity
│   │   │   │   └── TestInt64.unity.meta
│   │   │   ├── 16_Int64.meta
│   │   │   ├── 17_Inherit/
│   │   │   │   ├── Inherit.unity
│   │   │   │   ├── Inherit.unity.meta
│   │   │   │   ├── TestInherit.cs
│   │   │   │   └── TestInherit.cs.meta
│   │   │   ├── 17_Inherit.meta
│   │   │   ├── 18_Bundle/
│   │   │   │   ├── TesetAssetBundle.unity
│   │   │   │   ├── TesetAssetBundle.unity.meta
│   │   │   │   ├── TestABLoader.cs
│   │   │   │   └── TestABLoader.cs.meta
│   │   │   ├── 18_Bundle.meta
│   │   │   ├── 19_cjson/
│   │   │   │   ├── TestCJson.cs
│   │   │   │   ├── TestCJson.cs.meta
│   │   │   │   ├── testcjson.unity
│   │   │   │   └── testcjson.unity.meta
│   │   │   ├── 19_cjson.meta
│   │   │   ├── 20_utf8/
│   │   │   │   ├── TestUTF8.cs
│   │   │   │   ├── TestUTF8.cs.meta
│   │   │   │   ├── utf8.unity
│   │   │   │   └── utf8.unity.meta
│   │   │   ├── 20_utf8.meta
│   │   │   ├── 21_String/
│   │   │   │   ├── TestString.cs
│   │   │   │   ├── TestString.cs.meta
│   │   │   │   ├── TestString.unity
│   │   │   │   └── TestString.unity.meta
│   │   │   ├── 21_String.meta
│   │   │   ├── 22_Reflection/
│   │   │   │   ├── TestReflection.cs
│   │   │   │   ├── TestReflection.cs.meta
│   │   │   │   ├── TestReflection.unity
│   │   │   │   └── TestReflection.unity.meta
│   │   │   ├── 22_Reflection.meta
│   │   │   ├── 23_List/
│   │   │   │   ├── UseList.cs
│   │   │   │   ├── UseList.cs.meta
│   │   │   │   ├── UseList.unity
│   │   │   │   └── UseList.unity.meta
│   │   │   ├── 23_List.meta
│   │   │   ├── 24_Struct/
│   │   │   │   ├── PassStruct.cs
│   │   │   │   ├── PassStruct.cs.meta
│   │   │   │   ├── Struct.unity
│   │   │   │   └── Struct.unity.meta
│   │   │   ├── 24_Struct.meta
│   │   │   ├── Performance/
│   │   │   │   ├── Performance.unity
│   │   │   │   ├── Performance.unity.meta
│   │   │   │   ├── TestPerformance.cs
│   │   │   │   └── TestPerformance.cs.meta
│   │   │   ├── Performance.meta
│   │   │   ├── README.md
│   │   │   ├── README.md.meta
│   │   │   ├── Resources/
│   │   │   │   ├── Lua/
│   │   │   │   │   ├── Protol/
│   │   │   │   │   │   ├── common_pb.lua.bytes
│   │   │   │   │   │   ├── common_pb.lua.bytes.meta
│   │   │   │   │   │   ├── person_pb.lua.bytes
│   │   │   │   │   │   └── person_pb.lua.bytes.meta
│   │   │   │   │   ├── Protol.meta
│   │   │   │   │   ├── TestErrorStack.lua.bytes
│   │   │   │   │   ├── TestErrorStack.lua.bytes.meta
│   │   │   │   │   ├── TestLoader.lua.bytes
│   │   │   │   │   ├── TestLoader.lua.bytes.meta
│   │   │   │   │   ├── TestLuaCoroutine.lua.bytes
│   │   │   │   │   ├── TestLuaCoroutine.lua.bytes.meta
│   │   │   │   │   ├── TestPerf.lua.bytes
│   │   │   │   │   ├── TestPerf.lua.bytes.meta
│   │   │   │   │   ├── ToLuaInjectionTestInjector.lua.bytes
│   │   │   │   │   └── ToLuaInjectionTestInjector.lua.bytes.meta
│   │   │   │   ├── Lua.meta
│   │   │   │   ├── jsonexample.json
│   │   │   │   └── jsonexample.json.meta
│   │   │   ├── Resources.meta
│   │   │   ├── TestErrorStack/
│   │   │   │   ├── TestInstantiate.cs
│   │   │   │   ├── TestInstantiate.cs.meta
│   │   │   │   ├── TestInstantiate.prefab
│   │   │   │   ├── TestInstantiate.prefab.meta
│   │   │   │   ├── TestInstantiate2.cs
│   │   │   │   ├── TestInstantiate2.cs.meta
│   │   │   │   ├── TestInstantiate2.prefab
│   │   │   │   ├── TestInstantiate2.prefab.meta
│   │   │   │   ├── TestLuaStack.cs
│   │   │   │   ├── TestLuaStack.cs.meta
│   │   │   │   ├── TestLuaStack.unity
│   │   │   │   └── TestLuaStack.unity.meta
│   │   │   ├── TestErrorStack.meta
│   │   │   ├── TestInjection/
│   │   │   │   ├── BaseTestWrap.cs
│   │   │   │   ├── BaseTestWrap.cs.meta
│   │   │   │   ├── TestInjection.cs
│   │   │   │   ├── TestInjection.cs.meta
│   │   │   │   ├── TestInjection.unity
│   │   │   │   ├── TestInjection.unity.meta
│   │   │   │   ├── ToLuaInjectionTest.cs
│   │   │   │   ├── ToLuaInjectionTest.cs.meta
│   │   │   │   ├── ToLuaInjectionTestWrap.cs
│   │   │   │   └── ToLuaInjectionTestWrap.cs.meta
│   │   │   ├── TestInjection.meta
│   │   │   ├── TestOverload/
│   │   │   │   ├── TestExportWrap.cs
│   │   │   │   ├── TestExportWrap.cs.meta
│   │   │   │   ├── TestExport_SpaceWrap.cs
│   │   │   │   ├── TestExport_SpaceWrap.cs.meta
│   │   │   │   ├── TestOverload.cs
│   │   │   │   ├── TestOverload.cs.meta
│   │   │   │   ├── TestOverload.unity
│   │   │   │   └── TestOverload.unity.meta
│   │   │   └── TestOverload.meta
│   │   ├── Examples.meta
│   │   ├── Injection/
│   │   │   ├── Editor/
│   │   │   │   ├── CustomCecilRocks/
│   │   │   │   │   ├── MethodBodyRocks.cs
│   │   │   │   │   └── MethodBodyRocks.cs.meta
│   │   │   │   ├── CustomCecilRocks.meta
│   │   │   │   ├── ToLuaInjection.cs
│   │   │   │   ├── ToLuaInjection.cs.meta
│   │   │   │   ├── ToLuaInjectionHelper.cs
│   │   │   │   ├── ToLuaInjectionHelper.cs.meta
│   │   │   │   ├── ToLuaText.cs
│   │   │   │   ├── ToLuaText.cs.meta
│   │   │   │   ├── ToluaInjectionBlackListPanel.cs
│   │   │   │   └── ToluaInjectionBlackListPanel.cs.meta
│   │   │   ├── Editor.meta
│   │   │   ├── InjectionBlackList.txt
│   │   │   ├── InjectionBlackList.txt.meta
│   │   │   ├── InjectionBridgeEditorInfo.xml
│   │   │   ├── InjectionBridgeEditorInfo.xml.meta
│   │   │   ├── LuaInjectionSkipPaths.txt
│   │   │   ├── LuaInjectionSkipPaths.txt.meta
│   │   │   ├── LuaInjectionStation.cs
│   │   │   └── LuaInjectionStation.cs.meta
│   │   ├── Injection.meta
│   │   ├── Lua/
│   │   │   ├── Build.bat
│   │   │   ├── Build.bat.meta
│   │   │   ├── System/
│   │   │   │   ├── Injection/
│   │   │   │   │   ├── InjectionBridgeInfo.lua
│   │   │   │   │   ├── InjectionBridgeInfo.lua.meta
│   │   │   │   │   ├── LuaInjectionBus.lua
│   │   │   │   │   ├── LuaInjectionBus.lua.meta
│   │   │   │   │   ├── LuaInjectionStation.lua
│   │   │   │   │   └── LuaInjectionStation.lua.meta
│   │   │   │   ├── Injection.meta
│   │   │   │   ├── Reflection/
│   │   │   │   │   ├── BindingFlags.lua
│   │   │   │   │   └── BindingFlags.lua.meta
│   │   │   │   ├── Reflection.meta
│   │   │   │   ├── Timer.lua
│   │   │   │   ├── Timer.lua.meta
│   │   │   │   ├── ValueType.lua
│   │   │   │   ├── ValueType.lua.meta
│   │   │   │   ├── coroutine.lua
│   │   │   │   └── coroutine.lua.meta
│   │   │   ├── System.meta
│   │   │   ├── UnityEngine/
│   │   │   │   ├── Bounds.lua
│   │   │   │   ├── Bounds.lua.meta
│   │   │   │   ├── Color.lua
│   │   │   │   ├── Color.lua.meta
│   │   │   │   ├── Color32.lua
│   │   │   │   ├── Color32.lua.meta
│   │   │   │   ├── LayerMask.lua
│   │   │   │   ├── LayerMask.lua.meta
│   │   │   │   ├── Mathf.lua
│   │   │   │   ├── Mathf.lua.meta
│   │   │   │   ├── Plane.lua
│   │   │   │   ├── Plane.lua.meta
│   │   │   │   ├── Profiler.lua
│   │   │   │   ├── Profiler.lua.meta
│   │   │   │   ├── Quaternion.lua
│   │   │   │   ├── Quaternion.lua.meta
│   │   │   │   ├── Ray.lua
│   │   │   │   ├── Ray.lua.meta
│   │   │   │   ├── RaycastHit.lua
│   │   │   │   ├── RaycastHit.lua.meta
│   │   │   │   ├── Time.lua
│   │   │   │   ├── Time.lua.meta
│   │   │   │   ├── Touch.lua
│   │   │   │   ├── Touch.lua.meta
│   │   │   │   ├── Vector2.lua
│   │   │   │   ├── Vector2.lua.meta
│   │   │   │   ├── Vector3.lua
│   │   │   │   ├── Vector3.lua.meta
│   │   │   │   ├── Vector4.lua
│   │   │   │   └── Vector4.lua.meta
│   │   │   ├── UnityEngine.meta
│   │   │   ├── cjson/
│   │   │   │   ├── util.lua
│   │   │   │   └── util.lua.meta
│   │   │   ├── cjson.meta
│   │   │   ├── event.lua
│   │   │   ├── event.lua.meta
│   │   │   ├── jit/
│   │   │   │   ├── bc.lua
│   │   │   │   ├── bc.lua.meta
│   │   │   │   ├── bcsave.lua
│   │   │   │   ├── bcsave.lua.meta
│   │   │   │   ├── dis_arm.lua
│   │   │   │   ├── dis_arm.lua.meta
│   │   │   │   ├── dis_arm64.lua
│   │   │   │   ├── dis_arm64.lua.meta
│   │   │   │   ├── dis_arm64be.lua
│   │   │   │   ├── dis_arm64be.lua.meta
│   │   │   │   ├── dis_mips.lua
│   │   │   │   ├── dis_mips.lua.meta
│   │   │   │   ├── dis_mips64.lua
│   │   │   │   ├── dis_mips64.lua.meta
│   │   │   │   ├── dis_mips64el.lua
│   │   │   │   ├── dis_mips64el.lua.meta
│   │   │   │   ├── dis_mipsel.lua
│   │   │   │   ├── dis_mipsel.lua.meta
│   │   │   │   ├── dis_ppc.lua
│   │   │   │   ├── dis_ppc.lua.meta
│   │   │   │   ├── dis_x64.lua
│   │   │   │   ├── dis_x64.lua.meta
│   │   │   │   ├── dis_x86.lua
│   │   │   │   ├── dis_x86.lua.meta
│   │   │   │   ├── dump.lua
│   │   │   │   ├── dump.lua.meta
│   │   │   │   ├── p.lua
│   │   │   │   ├── p.lua.meta
│   │   │   │   ├── v.lua
│   │   │   │   ├── v.lua.meta
│   │   │   │   ├── zone.lua
│   │   │   │   └── zone.lua.meta
│   │   │   ├── jit.meta
│   │   │   ├── list.lua
│   │   │   ├── list.lua.meta
│   │   │   ├── lpeg/
│   │   │   │   ├── re.lua
│   │   │   │   └── re.lua.meta
│   │   │   ├── lpeg.meta
│   │   │   ├── ltn12.lua
│   │   │   ├── ltn12.lua.meta
│   │   │   ├── mime.lua
│   │   │   ├── mime.lua.meta
│   │   │   ├── misc/
│   │   │   │   ├── functions.lua
│   │   │   │   ├── functions.lua.meta
│   │   │   │   ├── strict.lua
│   │   │   │   ├── strict.lua.meta
│   │   │   │   ├── utf8.lua
│   │   │   │   └── utf8.lua.meta
│   │   │   ├── misc.meta
│   │   │   ├── pbc.meta
│   │   │   ├── protobuf/
│   │   │   │   ├── containers.lua
│   │   │   │   ├── containers.lua.meta
│   │   │   │   ├── decoder.lua
│   │   │   │   ├── decoder.lua.meta
│   │   │   │   ├── descriptor.lua
│   │   │   │   ├── descriptor.lua.meta
│   │   │   │   ├── encoder.lua
│   │   │   │   ├── encoder.lua.meta
│   │   │   │   ├── listener.lua
│   │   │   │   ├── listener.lua.meta
│   │   │   │   ├── protobuf.lua
│   │   │   │   ├── protobuf.lua.meta
│   │   │   │   ├── text_format.lua
│   │   │   │   ├── text_format.lua.meta
│   │   │   │   ├── type_checkers.lua
│   │   │   │   ├── type_checkers.lua.meta
│   │   │   │   ├── wire_format.lua
│   │   │   │   └── wire_format.lua.meta
│   │   │   ├── protobuf.meta
│   │   │   ├── slot.lua
│   │   │   ├── slot.lua.meta
│   │   │   ├── socket/
│   │   │   │   ├── ftp.lua
│   │   │   │   ├── ftp.lua.meta
│   │   │   │   ├── headers.lua
│   │   │   │   ├── headers.lua.meta
│   │   │   │   ├── http.lua
│   │   │   │   ├── http.lua.meta
│   │   │   │   ├── mbox.lua
│   │   │   │   ├── mbox.lua.meta
│   │   │   │   ├── smtp.lua
│   │   │   │   ├── smtp.lua.meta
│   │   │   │   ├── tp.lua
│   │   │   │   ├── tp.lua.meta
│   │   │   │   ├── url.lua
│   │   │   │   └── url.lua.meta
│   │   │   ├── socket.lua
│   │   │   ├── socket.lua.meta
│   │   │   ├── socket.meta
│   │   │   ├── tolua.lua
│   │   │   ├── tolua.lua.meta
│   │   │   ├── typeof.lua
│   │   │   └── typeof.lua.meta
│   │   ├── Lua.meta
│   │   ├── Misc/
│   │   │   ├── LuaClient.cs
│   │   │   ├── LuaClient.cs.meta
│   │   │   ├── LuaCoroutine.cs
│   │   │   ├── LuaCoroutine.cs.meta
│   │   │   ├── LuaLooper.cs
│   │   │   ├── LuaLooper.cs.meta
│   │   │   ├── LuaProfiler.cs
│   │   │   ├── LuaProfiler.cs.meta
│   │   │   ├── LuaResLoader.cs
│   │   │   └── LuaResLoader.cs.meta
│   │   ├── Misc.meta
│   │   ├── Reflection/
│   │   │   ├── LuaConstructor.cs
│   │   │   ├── LuaConstructor.cs.meta
│   │   │   ├── LuaField.cs
│   │   │   ├── LuaField.cs.meta
│   │   │   ├── LuaMethod.cs
│   │   │   ├── LuaMethod.cs.meta
│   │   │   ├── LuaProperty.cs
│   │   │   ├── LuaProperty.cs.meta
│   │   │   ├── LuaReflection.cs
│   │   │   └── LuaReflection.cs.meta
│   │   ├── Reflection.meta
│   │   ├── readme.txt
│   │   └── readme.txt.meta
│   ├── ToLua.meta
│   ├── link.xml
│   └── link.xml.meta
├── LICENSE-tolua
├── Luajit/
│   ├── Build.bat
│   └── jit/
│       ├── bc.lua
│       ├── bcsave.lua
│       ├── dis_arm.lua
│       ├── dis_arm64.lua
│       ├── dis_arm64be.lua
│       ├── dis_mips.lua
│       ├── dis_mips64.lua
│       ├── dis_mips64el.lua
│       ├── dis_mipsel.lua
│       ├── dis_ppc.lua
│       ├── dis_x64.lua
│       ├── dis_x86.lua
│       ├── dump.lua
│       ├── p.lua
│       ├── v.lua
│       ├── vmdef.lua
│       └── zone.lua
├── Luajit64/
│   ├── Build.bat
│   └── jit/
│       ├── bc.lua
│       ├── bcsave.lua
│       ├── dis_arm.lua
│       ├── dis_arm64.lua
│       ├── dis_arm64be.lua
│       ├── dis_mips.lua
│       ├── dis_mips64.lua
│       ├── dis_mips64el.lua
│       ├── dis_mipsel.lua
│       ├── dis_ppc.lua
│       ├── dis_x64.lua
│       ├── dis_x86.lua
│       ├── dump.lua
│       ├── p.lua
│       ├── v.lua
│       ├── vmdef.lua
│       └── zone.lua
├── README-tolua.md
├── README.md
├── Tools/
│   ├── CSharpLua/
│   │   ├── CSharp.lua/
│   │   │   ├── CSharp.lua.Launcher.deps.json
│   │   │   ├── CSharp.lua.Launcher.pdb
│   │   │   ├── CSharp.lua.Launcher.runtimeconfig.json
│   │   │   ├── CSharp.lua.pdb
│   │   │   └── System.xml
│   │   ├── UnityEngine.xml
│   │   ├── codes/
│   │   │   └── All.lua
│   │   ├── disable_track.bat
│   │   ├── enable_track.bat
│   │   └── update_csharp.lua.cmd
│   └── ProtobufGen/
│       ├── protobuf-net/
│       │   ├── Licence.txt
│       │   ├── common.xslt
│       │   ├── csharp.xslt
│       │   ├── descriptor.proto
│       │   ├── protobuf-net.xml
│       │   ├── protoc-license.txt
│       │   ├── protogen.exe.config
│       │   ├── vb.xslt
│       │   └── xml.xslt
│       └── protogen.bat
└── Unity5.x/
    └── Assets/
        └── Plugins/
            ├── Android/
            │   └── libs/
            │       ├── armeabi-v7a/
            │       │   └── libtolua.so.meta
            │       └── x86/
            │           └── libtolua.so.meta
            ├── iOS/
            │   └── libtolua.a.meta
            ├── tolua.bundle.meta
            ├── x86/
            │   └── tolua.dll.meta
            └── x86_64/
                └── tolua.dll.meta
Download .txt
Showing preview only (234K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2732 symbols across 140 files)

FILE: Assets/CSharpLua/Base/CSharpLua/BaseUtility.cs
  type IProvider (line 9) | public interface IProvider {
    method ConvertCustomMonoBehaviour (line 10) | void ConvertCustomMonoBehaviour(ref GameObject prefab);
  class BaseUtility (line 13) | public static class BaseUtility {

FILE: Assets/CSharpLua/Base/CSharpLua/LuaAutoWrapAttribute.cs
  class LuaAutoWrapAttribute (line 6) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Enum | Attribu...
    method LuaAutoWrapAttribute (line 8) | public LuaAutoWrapAttribute() { }

FILE: Assets/CSharpLua/Base/CSharpLua/Settings.cs
  class Settings (line 10) | public static class Settings {
    class Paths (line 12) | public static class Paths {
    class Menus (line 21) | public static class Menus {

FILE: Assets/CSharpLua/Bridge/TestUtils.cs
  class TestUtils (line 9) | [LuaAutoWrap]
    method Load (line 11) | public static GameObject Load(string path) {

FILE: Assets/CSharpLua/CSharpLuaClient.cs
  class BridgeMonoBehaviour (line 11) | [LuaAutoWrap]
    method Bind (line 20) | public void Bind(LuaTable table, string luaClass) {
    method Bind (line 25) | public void Bind(LuaTable table) {
    method Bind (line 29) | internal void Bind(string luaClass, string serializeData, UnityEngine....
    method RegisterUpdate (line 35) | public void RegisterUpdate(int instructionIndex, LuaFunction updateFn) {
    method StartUpdate (line 39) | private IEnumerator StartUpdate(LuaFunction updateFn, YieldInstruction...
    method Awake (line 46) | private void Awake() {
    method Start (line 58) | private void Start() {
  class LuaIEnumerator (line 65) | internal sealed class LuaIEnumerator : IEnumerator, IDisposable {
    method LuaIEnumerator (line 70) | private LuaIEnumerator(LuaTable table) {
    method Create (line 82) | public static LuaIEnumerator Create(LuaTable table) {
    method Push (line 91) | public void Push(IntPtr L) {
    method Dispose (line 106) | public void Dispose() {
    method MoveNext (line 123) | public bool MoveNext() {
    method Reset (line 131) | public void Reset() {
  class CSharpLuaClient (line 136) | public class CSharpLuaClient : LuaClient, IProvider {
    method OpenLibs (line 142) | protected override void OpenLibs() {
    method OpenPBC (line 148) | private void OpenPBC() {
    method Destroy (line 152) | public override void Destroy() {
    method StartMain (line 165) | protected override void StartMain() {
    method BindLua (line 193) | internal LuaTable BindLua(BridgeMonoBehaviour bridgeMonoBehaviour) {
    method IsLuaIEnumerator (line 201) | internal bool IsLuaIEnumerator(LuaTable t) {
    method ConvertCustomMonoBehaviour (line 212) | public void ConvertCustomMonoBehaviour(ref GameObject prefab) {

FILE: Assets/CSharpLua/Compiled/Protocol/AutoGen/CommonPrototype.cs
  class SettingProto (line 18) | [ProtoContract]
    class ValuePairProto (line 27) | [ProtoContract]

FILE: Assets/CSharpLua/Compiled/Protocol/IProtocol.cs
  type IProtocol (line 2) | public interface IProtocol {

FILE: Assets/CSharpLua/Compiled/Sample/TestCoroutine.cs
  class TestCoroutine (line 10) | public class TestCoroutine : MonoBehaviour {
    method Awake (line 13) | public void Awake() {
    method OnTick (line 21) | private IEnumerator OnTick() {
    method Test (line 28) | public void Test() {
    method T1 (line 33) | private IEnumerator T1() {
    method T2 (line 41) | private IEnumerator T2() {

FILE: Assets/CSharpLua/Compiled/Sample/TestHangingScript.cs
  class TestHangingScript (line 8) | public class TestHangingScript : MonoBehaviour {
    method Awake (line 20) | public void Awake() {
    method Start (line 31) | public void Start() {

FILE: Assets/CSharpLua/Compiled/Sample/TestHelloWord.cs
  class TestHelloWord (line 8) | public sealed class TestHelloWord : MonoBehaviour {
    method Awake (line 9) | public void Awake() {
    method Start (line 25) | private void Start() {
    method Update (line 29) | private void Update() {

FILE: Assets/CSharpLua/Compiled/Sample/TestProtobuf.cs
  class TestProtobuf (line 13) | public static class TestProtobuf {
    method Run (line 14) | public static void Run() {
    method Encode (line 29) | private static byte[] Encode(IProtocol proto) {
    method Decode (line 46) | private static T Decode<T>(byte[] bytes) where T : class {

FILE: Assets/CSharpLua/Editor/Compiler.cs
  class Compiler (line 13) | public static class Compiler {
    class CompiledFail (line 14) | private sealed class CompiledFail : Exception {
      method CompiledFail (line 15) | public CompiledFail(string message) : base(message) {
    method Compile (line 32) | [MenuItem(Settings.Menus.kCompile)]
    method FillUnityLibraries (line 94) | private static void FillUnityLibraries(HashSet<string> libs) {
    method CheckDotnetInstall (line 102) | private static bool CheckDotnetInstall() {
    method InternalCheckDotnetInstall (line 113) | private static bool InternalCheckDotnetInstall() {
    method Switch (line 145) | [MenuItem(Settings.kIsRunFromLua ? Settings.Menus.kRunFromCSharp : Set...
    method GenProtobuf (line 173) | [MenuItem(Settings.Menus.kGenProtobuf)]
  class EditorQuitHandler (line 202) | [InitializeOnLoad]
    method Quit (line 204) | static void Quit() {
    method EditorQuitHandler (line 211) | static EditorQuitHandler() {

FILE: Assets/CSharpLua/UserMonoBehaviourConverter.cs
  class UserMonoBehaviourConverter (line 16) | public sealed class UserMonoBehaviourConverter {
    class StructField (line 17) | private sealed class StructField {
      method StructField (line 21) | public StructField(object v) {
      method ToString (line 49) | public override string ToString() {
    class SerializeFieldsInfo (line 54) | private sealed class SerializeFieldsInfo {
      class ObjectField (line 55) | internal abstract class ObjectField {
        method FillTo (line 57) | public abstract void FillTo(StringBuilder sb);
      class PoolIndexObjectField (line 60) | internal sealed class PoolIndexObjectField : ObjectField {
        method FillTo (line 63) | public override void FillTo(StringBuilder sb) {
      class ArrayObjectField (line 68) | internal sealed class ArrayObjectField : ObjectField {
        method FillTo (line 73) | public override void FillTo(StringBuilder sb) {
      class MonoBehaviourField (line 79) | internal sealed class MonoBehaviourField {
      method AppendNormals (line 89) | private void AppendNormals(StringBuilder sb) {
      method AppendObjects (line 105) | private void AppendObjects(StringBuilder sb) {
      method GetSerializeData (line 123) | public string GetSerializeData() {
      method GetSerializeObjects (line 136) | public UnityEngine.Object[] GetSerializeObjects() {
      method ToList (line 140) | private static string ToList(bool isArray, Type elementType, IList l...
      method NormalValueToString (line 164) | internal static string NormalValueToString(object v) {
      method ValueToString (line 172) | private static string ValueToString(object v) {
    class MonoBehaviourFieldLazy (line 184) | private sealed class MonoBehaviourFieldLazy {
      method Bind (line 189) | public void Bind() {
    method UserMonoBehaviourConverter (line 207) | public UserMonoBehaviourConverter() {
    method Load (line 211) | private void Load() {
    method PauseEdit (line 228) | private void PauseEdit() {
    method LoadClassNames (line 234) | private void LoadClassNames() {
    method CopyTempPrefab (line 258) | private static void CopyTempPrefab(ref GameObject prefab) {
    method IsUserMonoBehaviourExists (line 276) | private bool IsUserMonoBehaviourExists(GameObject prefab) {
    method Do (line 289) | public bool Do(ref GameObject prefab) {
    method GetChildrenTransform (line 308) | private List<Transform> GetChildrenTransform(Transform parent) {
    method GetChildrenTransform (line 314) | private void GetChildrenTransform(List<Transform> list, Transform pare...
    method IsUserDefine (line 323) | private bool IsUserDefine(Type type) {
    method Convert (line 327) | private void Convert(GameObject gameObject, List<MonoBehaviourFieldLaz...
    method IsSerializedField (line 336) | private bool IsSerializedField(FieldInfo field) {
    method Convert (line 344) | private void Convert(MonoBehaviour monoBehaviour, List<MonoBehaviourFi...
    method IsSameRootGameObject (line 376) | private static bool IsSameRootGameObject(GameObject x, GameObject y) {
    method IsNormalType (line 382) | private static bool IsNormalType(Type type, out TypeCode typeCode) {
    method IsNormalType (line 387) | private static bool IsNormalType(Type type) {
    method ConvertUnityEngineGameObject (line 392) | private int ConvertUnityEngineGameObject(MonoBehaviour monoBehaviour, ...
    method Convert (line 437) | private void Convert(MonoBehaviour monoBehaviour, LuaTable luaClass, F...
  class Extensions (line 514) | public static partial class Extensions {
    method GetIListElementType (line 515) | public static Type GetIListElementType(this Type type) {
    method IsUnityEngineObject (line 520) | public static bool IsUnityEngineObject(this Type type) {
    method EQ (line 524) | public static bool EQ(this object x, object y) {
    method IsUnityEngineStruct (line 528) | public static bool IsUnityEngineStruct(this Type type) {

FILE: Assets/Editor/Custom/CustomSettings.cs
  class CustomSettings (line 11) | public static class CustomSettings
    method _GT (line 233) | public static BindType _GT(Type t)
    method _DT (line 238) | public static DelegateType _DT(Type t)
    method AttachProfiler (line 244) | [MenuItem("Lua/Attach Profiler", false, 151)]
    method DetachProfiler (line 256) | [MenuItem("Lua/Detach Profiler", false, 152)]
    method IsCustomAssembly (line 267) | private static bool IsCustomAssembly(string name) {

FILE: Assets/Plugins/tolua.bundle/Contents/Resources/sproto.new/lsproto.c
  function lnewproto (line 67) | static int
  function ldeleteproto (line 80) | static int
  function lquerytype (line 90) | static int
  type encode_ud (line 107) | struct encode_ud {
  function encode (line 117) | static int
  function lencode (line 272) | static int
  type decode_ud (line 310) | struct decode_ud {
  function decode (line 320) | static int
  function ldecode (line 448) | static int
  function ldumpproto (line 481) | static int
  function lpack (line 497) | static int
  function lunpack (line 518) | static int
  function pushfunction_withbuffer (line 537) | static void
  function lprotocol (line 545) | static int
  type sproto (line 595) | struct sproto
  function lsaveproto (line 597) | static int
  function lloadproto (line 609) | static int
  function encode_default (line 626) | static int
  function ldefault (line 660) | static int
  function luaopen_sproto_core (line 688) | int

FILE: Assets/Plugins/tolua.bundle/Contents/Resources/sproto.new/sproto.c
  type field (line 15) | struct field {
  type sproto_type (line 24) | struct sproto_type {
  type protocol (line 32) | struct protocol {
  type chunk (line 39) | struct chunk {
  type pool (line 43) | struct pool {
  type sproto (line 49) | struct sproto {
  function pool_init (line 57) | static void
  function pool_release (line 64) | static void
  type pool (line 75) | struct pool
  type chunk (line 76) | struct chunk
  type chunk (line 76) | struct chunk
  type pool (line 85) | struct pool
  function toword (line 112) | static inline int
  function todword (line 117) | static inline uint32_t
  function count_array (line 122) | static int
  function struct_field (line 143) | static int
  type sproto (line 174) | struct sproto
  function calc_pow (line 182) | static int
  type sproto (line 195) | struct sproto
  type field (line 195) | struct field
  type sproto (line 288) | struct sproto
  type sproto_type (line 288) | struct sproto_type
  type field (line 321) | struct field
  type field (line 324) | struct field
  type sproto (line 354) | struct sproto
  type protocol (line 354) | struct protocol
  type sproto (line 415) | struct sproto
  type sproto (line 416) | struct sproto
  type sproto (line 464) | struct sproto
  type pool (line 466) | struct pool
  type sproto (line 467) | struct sproto
  function sproto_release (line 481) | void
  function sproto_dump (line 488) | void
  function sproto_prototag (line 558) | int
  type protocol (line 569) | struct protocol
  type sproto (line 570) | struct sproto
  type sproto_type (line 587) | struct sproto_type
  type sproto (line 588) | struct sproto
  type protocol (line 589) | struct protocol
  function sproto_protoresponse (line 600) | int
  type sproto (line 607) | struct sproto
  type protocol (line 608) | struct protocol
  type sproto_type (line 615) | struct sproto_type
  type sproto (line 616) | struct sproto
  type sproto_type (line 627) | struct sproto_type
  type field (line 631) | struct field
  type sproto_type (line 632) | struct sproto_type
  type field (line 644) | struct field
  function fill_size (line 662) | static inline int
  function encode_integer (line 671) | static int
  function encode_uint64 (line 682) | static int
  function encode_object (line 720) | static int
  function uint32_to_uint64 (line 737) | static inline void
  type sproto_arg (line 753) | struct sproto_arg
  function encode_array (line 839) | static int
  function sproto_encode (line 909) | int
  function decode_array_object (line 1017) | static int
  function expand64 (line 1041) | static inline uint64_t
  function decode_array (line 1050) | static int
  function sproto_decode (line 1114) | int
  function pack_seg (line 1222) | static int
  function write_ff (line 1260) | static inline void
  function sproto_pack (line 1273) | int
  function sproto_unpack (line 1330) | int

FILE: Assets/Plugins/tolua.bundle/Contents/Resources/sproto.new/sproto.h
  type sproto (line 6) | struct sproto
  type sproto_type (line 7) | struct sproto_type
  type sproto (line 26) | struct sproto
  type sproto (line 27) | struct sproto
  type sproto (line 29) | struct sproto
  type sproto (line 30) | struct sproto
  type sproto_type (line 32) | struct sproto_type
  type sproto (line 32) | struct sproto
  type sproto (line 33) | struct sproto
  type sproto_type (line 35) | struct sproto_type
  type sproto (line 35) | struct sproto
  type sproto_arg (line 40) | struct sproto_arg {
  type sproto_arg (line 53) | struct sproto_arg
  type sproto_type (line 55) | struct sproto_type
  type sproto_type (line 56) | struct sproto_type
  type sproto (line 59) | struct sproto
  type sproto_type (line 60) | struct sproto_type

FILE: Assets/Source/LuaConst.cs
  class LuaConst (line 3) | public static class LuaConst

FILE: Assets/ToLua/BaseType/LuaInterface_EventObjectWrap.cs
  class LuaInterface_EventObjectWrap (line 5) | public class LuaInterface_EventObjectWrap
    method Register (line 7) | public static void Register(LuaState L)
    method op_Subtraction (line 16) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method op_Addition (line 33) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/LuaInterface_LuaConstructorWrap.cs
  class LuaInterface_LuaConstructorWrap (line 5) | public class LuaInterface_LuaConstructorWrap
    method Register (line 7) | public static void Register(LuaState L)
    method Call (line 16) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Destroy (line 30) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/LuaInterface_LuaFieldWrap.cs
  class LuaInterface_LuaFieldWrap (line 5) | public class LuaInterface_LuaFieldWrap
    method Register (line 7) | public static void Register(LuaState L)
    method Get (line 16) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Set (line 30) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/LuaInterface_LuaMethodWrap.cs
  class LuaInterface_LuaMethodWrap (line 5) | public class LuaInterface_LuaMethodWrap
    method Register (line 7) | public static void Register(LuaState L)
    method Destroy (line 16) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Call (line 33) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/LuaInterface_LuaOutWrap.cs
  class LuaInterface_LuaOutWrap (line 4) | public class LuaInterface_LuaOutWrap
    method Register (line 6) | public static void Register(LuaState L)
    method LuaOpen_ToLua_Out (line 13) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method RawSetOutType (line 42) | static void RawSetOutType<T>(IntPtr L)

FILE: Assets/ToLua/BaseType/LuaInterface_LuaPropertyWrap.cs
  class LuaInterface_LuaPropertyWrap (line 5) | public class LuaInterface_LuaPropertyWrap
    method Register (line 7) | public static void Register(LuaState L)
    method Get (line 16) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Set (line 30) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_ArrayWrap.cs
  class System_ArrayWrap (line 6) | public class System_ArrayWrap
    method Register (line 8) | public static void Register(LuaState L)
    method GetPrimitiveValue (line 47) | static bool GetPrimitiveValue(IntPtr L, object obj, Type t, int index)
    method get_Item (line 131) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method SetPrimitiveValue (line 208) | static bool SetPrimitiveValue(IntPtr L, object obj, Type t, int index)
    method set_Item (line 292) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Length (line 369) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToTable (line 390) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetLength (line 649) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetLongLength (line 667) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetLowerBound (line 685) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetValue (line 703) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method SetValue (line 783) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumerator (line 863) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetUpperBound (line 880) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CreateInstance (line 898) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method BinarySearch (line 968) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Clear (line 1024) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Clone (line 1042) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Copy (line 1059) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IndexOf (line 1105) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Initialize (line 1150) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method LastIndexOf (line 1166) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Reverse (line 1211) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Sort (line 1243) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CopyTo (line 1325) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ConstrainedCopy (line 1343) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_LongLength (line 1363) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Rank (line 1382) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsSynchronized (line 1401) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_SyncRoot (line 1420) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsFixedSize (line 1439) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsReadOnly (line 1458) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_Collections_Generic_DictionaryWrap.cs
  class System_Collections_Generic_DictionaryWrap (line 7) | public class System_Collections_Generic_DictionaryWrap
    method Register (line 9) | public static void Register(LuaState L)
    method _get_this (line 36) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method _set_this (line 56) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method _this (line 76) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Item (line 91) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_Item (line 110) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method _geti (line 129) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method _seti (line 157) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Add (line 181) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Clear (line 200) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ContainsKey (line 216) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ContainsValue (line 235) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetObjectData (line 254) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method OnDeserialization (line 272) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Remove (line 289) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method TryGetValue (line 308) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumerator (line 330) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Count (line 347) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Comparer (line 365) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Keys (line 383) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Values (line 401) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_Collections_Generic_Dictionary_KeyCollectionWrap.cs
  class System_Collections_Generic_Dictionary_KeyCollectionWrap (line 6) | public class System_Collections_Generic_Dictionary_KeyCollectionWrap
    method Register (line 8) | public static void Register(LuaState L)
    method _CreateSystem_Collections_Generic_Dictionary_KeyCollection (line 19) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CopyTo (line 45) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumerator (line 64) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Count (line 81) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_Collections_Generic_Dictionary_ValueCollectionWrap.cs
  class System_Collections_Generic_Dictionary_ValueCollectionWrap (line 6) | public class System_Collections_Generic_Dictionary_ValueCollectionWrap
    method Register (line 8) | public static void Register(LuaState L)
    method _CreateSystem_Collections_Generic_Dictionary_ValueCollection (line 19) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CopyTo (line 45) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumerator (line 64) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Count (line 81) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_Collections_Generic_KeyValuePairWrap.cs
  class System_Collections_Generic_KeyValuePairWrap (line 5) | public class System_Collections_Generic_KeyValuePairWrap
    method Register (line 7) | public static void Register(LuaState L)
    method get_Key (line 16) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Value (line 34) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_Collections_Generic_ListWrap.cs
  class System_Collections_Generic_ListWrap (line 8) | public class System_Collections_Generic_ListWrap
    method Register (line 10) | public static void Register(LuaState L)
    method Add (line 55) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method AddRange (line 73) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method AsReadOnly (line 91) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method BinarySearch (line 109) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Clear (line 154) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Contains (line 170) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CopyTo (line 189) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Exists (line 232) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Find (line 251) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method FindAll (line 270) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method FindIndex (line 289) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method FindLast (line 333) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method FindLastIndex (line 352) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ForEach (line 396) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumerator (line 414) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetRange (line 431) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IndexOf (line 450) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Insert (line 494) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method InsertRange (line 513) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method LastIndexOf (line 532) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Remove (line 576) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method RemoveAll (line 595) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method RemoveAt (line 614) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method RemoveRange (line 631) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Reverse (line 649) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Sort (line 681) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToArray (line 726) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method TrimExcess (line 743) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method TrueForAll (line 759) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Item (line 778) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_Item (line 796) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Capacity (line 815) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Count (line 833) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_Capacity (line 851) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_Collections_IEnumeratorWrap.cs
  class System_Collections_IEnumeratorWrap (line 5) | public class System_Collections_IEnumeratorWrap
    method Register (line 7) | public static void Register(LuaState L)
    method MoveNext (line 17) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Reset (line 34) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Current (line 50) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_Collections_ObjectModel_ReadOnlyCollectionWrap.cs
  class System_Collections_ObjectModel_ReadOnlyCollectionWrap (line 6) | public class System_Collections_ObjectModel_ReadOnlyCollectionWrap
    method Register (line 8) | public static void Register(LuaState L)
    method Contains (line 22) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CopyTo (line 41) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumerator (line 60) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IndexOf (line 77) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Item (line 96) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Count (line 114) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_DelegateWrap.cs
  class System_DelegateWrap (line 6) | public class System_DelegateWrap
    method Register (line 8) | public static void Register(LuaState L)
    method CreateDelegate (line 33) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method DynamicInvoke (line 147) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Clone (line 165) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetObjectData (line 182) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetInvocationList (line 200) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Combine (line 217) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Remove (line 250) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method RemoveAll (line 268) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Destroy (line 286) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetHashCode (line 305) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Equals (line 322) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method op_Subtraction (line 340) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method op_Addition (line 384) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method op_Equality (line 421) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Method (line 439) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Target (line 458) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_EnumWrap.cs
  class System_EnumWrap (line 5) | public class System_EnumWrap
    method Register (line 7) | public static void Register(LuaState L)
    method GetUnderlyingType (line 29) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetValues (line 46) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetName (line 63) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetNames (line 81) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsDefined (line 98) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Format (line 116) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Equals (line 135) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetHashCode (line 153) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToString (line 170) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CompareTo (line 203) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method HasFlag (line 221) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetTypeCode (line 239) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Parse (line 256) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToObject (line 291) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToInt (line 325) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_NullObjectWrap.cs
  class System_NullObjectWrap (line 4) | public class System_NullObjectWrap
    method Register (line 6) | public static void Register(LuaState L)

FILE: Assets/ToLua/BaseType/System_ObjectWrap.cs
  class System_ObjectWrap (line 5) | public class System_ObjectWrap
    method Register (line 7) | public static void Register(LuaState L)
    method _CreateSystem_Object (line 21) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Equals (line 45) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetHashCode (line 63) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetType (line 80) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToString (line 97) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ReferenceEquals (line 114) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method op_Equality (line 132) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Destroy (line 150) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_StringWrap.cs
  class System_StringWrap (line 5) | public class System_StringWrap
    method Register (line 7) | public static void Register(LuaState L)
    method _CreateSystem_String (line 61) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Join (line 85) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Equals (line 137) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method op_Equality (line 180) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CopyTo (line 198) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToCharArray (line 218) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsNullOrEmpty (line 252) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsNullOrWhiteSpace (line 269) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetHashCode (line 286) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Split (line 303) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Substring (line 376) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Trim (line 411) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method TrimStart (line 444) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method TrimEnd (line 462) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsNormalized (line 480) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Normalize (line 513) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Compare (line 546) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CompareTo (line 671) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CompareOrdinal (line 705) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Contains (line 742) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method EndsWith (line 760) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IndexOf (line 805) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IndexOfAny (line 907) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method LastIndexOf (line 952) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method LastIndexOfAny (line 1054) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method PadLeft (line 1099) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method PadRight (line 1134) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method StartsWith (line 1169) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToLower (line 1214) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToLowerInvariant (line 1247) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToUpper (line 1264) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToUpperInvariant (line 1297) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToString (line 1314) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Clone (line 1347) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Insert (line 1364) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Replace (line 1383) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Remove (line 1419) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Format (line 1454) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Copy (line 1546) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Concat (line 1563) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Intern (line 1663) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsInterned (line 1680) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetTypeCode (line 1697) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumerator (line 1714) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Empty (line 1731) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Length (line 1745) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/System_TypeWrap.cs
  class System_TypeWrap (line 5) | public class System_TypeWrap
    method Register (line 7) | public static void Register(LuaState L)
    method GetType (line 181) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method MakePointerType (line 260) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method MakeByRefType (line 277) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method MakeArrayType (line 294) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetTypeFromProgID (line 327) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetTypeFromCLSID (line 377) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetTypeCode (line 427) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method InvokeMember (line 444) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetTypeHandle (line 502) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetArrayRank (line 519) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetInterface (line 536) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetInterfaces (line 571) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method FindInterfaces (line 588) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetNestedTypes (line 607) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetNestedType (line 640) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetDefaultMembers (line 675) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method FindMembers (line 692) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetGenericParameterConstraints (line 713) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method MakeGenericType (line 730) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetElementType (line 748) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetGenericArguments (line 765) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetGenericTypeDefinition (line 782) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumNames (line 799) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumValues (line 816) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumUnderlyingType (line 833) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsEnumDefined (line 850) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumName (line 868) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsSubclassOf (line 886) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsInstanceOfType (line 904) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsAssignableFrom (line 922) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsEquivalentTo (line 940) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToString (line 958) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetTypeArray (line 975) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Equals (line 992) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method op_Equality (line 1026) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetHashCode (line 1044) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetInterfaceMap (line 1061) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ReflectionOnlyGetType (line 1079) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetTypeFromHandle (line 1098) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_FilterAttribute (line 1115) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_FilterName (line 1129) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_FilterNameIgnoreCase (line 1143) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Missing (line 1157) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Delimiter (line 1171) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_EmptyTypes (line 1185) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_MemberType (line 1199) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_DeclaringType (line 1218) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_DeclaringMethod (line 1237) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_ReflectedType (line 1256) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_StructLayoutAttribute (line 1275) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_GUID (line 1294) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_DefaultBinder (line 1313) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Module (line 1327) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Assembly (line 1346) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_TypeHandle (line 1365) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_FullName (line 1384) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Namespace (line 1403) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_AssemblyQualifiedName (line 1422) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_BaseType (line 1441) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_TypeInitializer (line 1460) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsNested (line 1479) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Attributes (line 1498) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_GenericParameterAttributes (line 1517) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsVisible (line 1536) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsNotPublic (line 1555) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsPublic (line 1574) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsNestedPublic (line 1593) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsNestedPrivate (line 1612) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsNestedFamily (line 1631) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsNestedAssembly (line 1650) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsNestedFamANDAssem (line 1669) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsNestedFamORAssem (line 1688) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsAutoLayout (line 1707) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsLayoutSequential (line 1726) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsExplicitLayout (line 1745) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsClass (line 1764) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsInterface (line 1783) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsValueType (line 1802) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsAbstract (line 1821) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsSealed (line 1840) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsEnum (line 1859) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsSpecialName (line 1878) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsImport (line 1897) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsSerializable (line 1916) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsAnsiClass (line 1935) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsUnicodeClass (line 1954) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsAutoClass (line 1973) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsArray (line 1992) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsGenericType (line 2011) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsGenericTypeDefinition (line 2030) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsConstructedGenericType (line 2049) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsGenericParameter (line 2068) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_GenericParameterPosition (line 2087) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_ContainsGenericParameters (line 2106) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsByRef (line 2125) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsPointer (line 2144) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsPrimitive (line 2163) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsCOMObject (line 2182) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_HasElementType (line 2201) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsContextful (line 2220) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsMarshalByRef (line 2239) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_GenericTypeArguments (line 2258) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsSecurityCritical (line 2277) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsSecuritySafeCritical (line 2296) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_IsSecurityTransparent (line 2315) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_UnderlyingSystemType (line 2334) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/BaseType/UnityEngine_CoroutineWrap.cs
  class UnityEngine_CoroutineWrap (line 4) | public class UnityEngine_CoroutineWrap
    method Register (line 6) | public static void Register(LuaState L)

FILE: Assets/ToLua/BaseType/UnityEngine_ObjectWrap.cs
  class UnityEngine_ObjectWrap (line 5) | public class UnityEngine_ObjectWrap
    method Register (line 7) | public static void Register(LuaState L)
    method _CreateUnityEngine_Object (line 32) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetInstanceID (line 56) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetHashCode (line 73) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Equals (line 90) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method FindObjectsOfType (line 108) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method DontDestroyOnLoad (line 125) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method FindObjectOfType (line 141) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToString (line 158) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method op_Equality (line 175) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Instantiate (line 193) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method DestroyImmediate (line 331) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Destroy (line 364) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_name (line 397) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_hideFlags (line 416) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_name (line 435) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_hideFlags (line 454) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/Core/LuaAttributes.cs
  class MonoPInvokeCallbackAttribute (line 26) | [AttributeUsage(AttributeTargets.Method)]
    method MonoPInvokeCallbackAttribute (line 29) | public MonoPInvokeCallbackAttribute(Type type)
  class NoToLuaAttribute (line 34) | public class NoToLuaAttribute : System.Attribute
    method NoToLuaAttribute (line 36) | public NoToLuaAttribute()
  class UseDefinedAttribute (line 42) | public class UseDefinedAttribute : System.Attribute
    method UseDefinedAttribute (line 44) | public UseDefinedAttribute()
  class OverrideDefinedAttribute (line 50) | public class OverrideDefinedAttribute: System.Attribute
    method OverrideDefinedAttribute (line 52) | public OverrideDefinedAttribute()
  class LuaByteBufferAttribute (line 58) | public sealed class LuaByteBufferAttribute : Attribute
    method LuaByteBufferAttribute (line 60) | public LuaByteBufferAttribute()
  class LuaRenameAttribute (line 65) | [AttributeUsage(AttributeTargets.Method)]
    method LuaRenameAttribute (line 69) | public LuaRenameAttribute()

FILE: Assets/ToLua/Core/LuaBaseRef.cs
  class LuaBaseRef (line 29) | public abstract class LuaBaseRef : IDisposable
    method LuaBaseRef (line 39) | public LuaBaseRef()
    method Dispose (line 51) | public virtual void Dispose()
    method AddRef (line 64) | public void AddRef()
    method Dispose (line 69) | public virtual void Dispose(bool disposeManagedResources)
    method Dispose (line 87) | public void Dispose(int generation)
    method GetLuaState (line 97) | public LuaState GetLuaState()
    method Push (line 102) | public void Push()
    method GetHashCode (line 107) | public override int GetHashCode()
    method GetReference (line 112) | public virtual int GetReference()
    method Equals (line 117) | public override bool Equals(object o)
    method CompareRef (line 130) | static bool CompareRef(LuaBaseRef a, LuaBaseRef b)

FILE: Assets/ToLua/Core/LuaBeatEvent.cs
  class LuaBeatEvent (line 27) | public class LuaBeatEvent : IDisposable
    method LuaBeatEvent (line 37) | public LuaBeatEvent(LuaTable table)
    method Dispose (line 48) | public void Dispose()
    method Clear (line 57) | void Clear()
    method Dispose (line 66) | public void Dispose(bool disposeManagedResources)
    method Add (line 99) | public void Add(LuaFunction func, LuaTable obj)
    method Remove (line 114) | public void Remove(LuaFunction func, LuaTable obj)

FILE: Assets/ToLua/Core/LuaDLL.cs
  type LuaTypes (line 32) | public enum LuaTypes
  type LuaGCOptions (line 47) | public enum LuaGCOptions
  type LuaThreadStatus (line 59) | public enum LuaThreadStatus
  type LuaHookFlag (line 68) | public enum LuaHookFlag
  type LuaMask (line 77) | public enum LuaMask
  class LuaIndexes (line 86) | public class LuaIndexes
  class LuaRIDX (line 93) | public class LuaRIDX
  class ToLuaFlags (line 101) | public static class ToLuaFlags
  type Lua_Debug (line 107) | [StructLayout(LayoutKind.Sequential)]
    method tostring (line 123) | string tostring(IntPtr p)
    method GetShortSrcLen (line 166) | int GetShortSrcLen(byte[] str)
  class LuaDLL (line 206) | public class LuaDLL
    method luaopen_sproto_core (line 221) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaopen_protobuf_c (line 224) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaopen_pb (line 227) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaopen_ffi (line 230) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaopen_bit (line 233) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaopen_struct (line 236) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaopen_lpeg (line 239) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaopen_socket_core (line 242) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaopen_mime_core (line 245) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaopen_cjson (line 248) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaopen_cjson_safe (line 251) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_upvalueindex (line 257) | public static int lua_upvalueindex(int i)
    method lua_close (line 268) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_newthread (line 270) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]      ...
    method lua_atpanic (line 273) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_gettop (line 279) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_settop (line 281) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_pushvalue (line 283) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_remove (line 285) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_insert (line 287) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_replace (line 289) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_checkstack (line 291) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_xmove (line 294) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_isnumber (line 300) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_isstring (line 302) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_iscfunction (line 304) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_isuserdata (line 306) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_type (line 308) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_typename (line 311) | public static string lua_typename(IntPtr luaState, LuaTypes type)
    method lua_equal (line 317) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_rawequal (line 319) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_lessthan (line 321) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_tonumber (line 324) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_tointeger (line 327) | public static int lua_tointeger(IntPtr luaState, int idx)
    method lua_toboolean (line 332) | public static bool lua_toboolean(IntPtr luaState, int idx)
    method lua_tolstring (line 337) | public static IntPtr lua_tolstring(IntPtr luaState, int index, out int...
    method lua_objlen (line 342) | public static int lua_objlen(IntPtr luaState, int idx)
    method lua_tocfunction (line 347) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_touserdata (line 349) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_tothread (line 351) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_topointer (line 353) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_pushnil (line 359) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_pushnumber (line 361) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_pushinteger (line 364) | public static void lua_pushinteger(IntPtr L, int n)
    method lua_pushlstring (line 369) | public static void lua_pushlstring(IntPtr luaState, byte[] str, int si...
    method lua_pushstring (line 379) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_pushcclosure (line 382) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_pushboolean (line 384) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_pushboolean (line 387) | public static void lua_pushboolean(IntPtr luaState, bool value)
    method lua_pushlightuserdata (line 392) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_pushthread (line 394) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_gettable (line 400) | public static void lua_gettable(IntPtr L, int idx)
    method lua_getfield (line 409) | public static void lua_getfield(IntPtr L, int idx, string key)
    method lua_rawget (line 418) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_rawgeti (line 420) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_createtable (line 422) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_newuserdata (line 425) | public static IntPtr lua_newuserdata(IntPtr luaState, int size)       ...
    method lua_getmetatable (line 430) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_getfenv (line 432) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_settable (line 438) | public static void lua_settable(IntPtr L, int idx)
    method lua_setfield (line 447) | public static void lua_setfield(IntPtr L, int idx, string key)
    method lua_rawset (line 456) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_rawseti (line 458) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_setmetatable (line 460) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_setfenv (line 462) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_call (line 468) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_pcall (line 470) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_cpcall (line 473) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_yield (line 484) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_resume (line 486) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_status (line 488) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_gc (line 494) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_next (line 500) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_concat (line 502) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_pop (line 510) | public static void lua_pop(IntPtr luaState, int amount)
    method lua_newtable (line 515) | public static void lua_newtable(IntPtr luaState)
    method lua_register (line 520) | public static void lua_register(IntPtr luaState, string name, LuaCSFun...
    method lua_pushcfunction (line 526) | public static void lua_pushcfunction(IntPtr luaState, LuaCSFunction func)
    method lua_isfunction (line 532) | public static bool lua_isfunction(IntPtr luaState, int n)
    method lua_istable (line 537) | public static bool lua_istable(IntPtr luaState, int n)
    method lua_islightuserdata (line 542) | public static bool lua_islightuserdata(IntPtr luaState, int n)
    method lua_isnil (line 547) | public static bool lua_isnil(IntPtr luaState, int n)
    method lua_isboolean (line 552) | public static bool lua_isboolean(IntPtr luaState, int n)
    method lua_isthread (line 558) | public static bool lua_isthread(IntPtr luaState, int n)
    method lua_isnone (line 563) | public static bool lua_isnone(IntPtr luaState, int n)
    method lua_isnoneornil (line 568) | public static bool lua_isnoneornil(IntPtr luaState, int n)
    method lua_setglobal (line 573) | public static void lua_setglobal(IntPtr luaState, string name)
    method lua_getglobal (line 578) | public static void lua_getglobal(IntPtr luaState, string name)
    method lua_ptrtostring (line 583) | public static string lua_ptrtostring(IntPtr str, int len)
    method lua_tostring (line 597) | public static string lua_tostring(IntPtr luaState, int index)
    method lua_open (line 610) | public static IntPtr lua_open()
    method lua_getregistry (line 615) | public static void lua_getregistry(IntPtr L)
    method lua_getgccount (line 620) | public static int lua_getgccount(IntPtr L)
    method lua_getstack (line 631) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_getinfo (line 633) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_getlocal (line 636) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_setlocal (line 638) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_getupvalue (line 640) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_setupvalue (line 642) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_sethook (line 645) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_gethook (line 647) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_gethookmask (line 649) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method lua_gethookcount (line 651) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_openlibs (line 655) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method abs_index (line 659) | public static int abs_index(IntPtr L, int i)
    method luaL_getn (line 664) | public static int luaL_getn(IntPtr luaState, int i)
    method luaL_getmetafield (line 669) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_callmeta (line 672) | public static int luaL_callmeta(IntPtr L, int stackPos, string field) ...
    method luaL_argerror (line 693) | public static int luaL_argerror(IntPtr L, int narg, string extramsg)
    method luaL_typerror (line 705) | public static int luaL_typerror(IntPtr L, int stackPos, string tname, ...
    method luaL_checklstring (line 716) | public static string luaL_checklstring(IntPtr L, int numArg, out int len)
    method luaL_optlstring (line 729) | public static string luaL_optlstring(IntPtr L, int narg, string def, o...
    method luaL_checknumber (line 740) | public static double luaL_checknumber(IntPtr L, int stackPos)
    method luaL_optnumber (line 753) | public static double luaL_optnumber(IntPtr L, int idx, double def)
    method luaL_checkinteger (line 763) | public static int luaL_checkinteger(IntPtr L, int stackPos)
    method luaL_optinteger (line 776) | public static int luaL_optinteger(IntPtr L, int idx, int def)
    method luaL_checkboolean (line 786) | public static bool luaL_checkboolean(IntPtr luaState, int index)
    method luaL_checkstack (line 797) | public static void luaL_checkstack(IntPtr L, int space, string mes)
    method luaL_checktype (line 805) | public static void luaL_checktype(IntPtr L, int narg, LuaTypes t)
    method luaL_checkany (line 813) | public static void luaL_checkany(IntPtr L, int narg)
    method luaL_newmetatable (line 821) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_checkudata (line 824) | public static IntPtr luaL_checkudata(IntPtr L, int ud, string tname)
    method luaL_where (line 846) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_throw (line 852) | public static int luaL_throw(IntPtr L, string message)
    method luaL_ref (line 870) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_unref (line 872) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_loadfile (line 875) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_loadbuffer (line 878) | public static int luaL_loadbuffer(IntPtr luaState, byte[] buff, int si...
    method luaL_loadstring (line 883) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_newstate (line 885) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_gsub (line 887) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_findtable (line 890) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method luaL_typename (line 898) | public static string luaL_typename(IntPtr luaState, int stackPos)
    method luaL_dofile (line 904) | public static bool luaL_dofile(IntPtr luaState, string fileName)      ...
    method luaL_dostring (line 916) | public static bool luaL_dostring(IntPtr luaState, string chunk)
    method luaL_getmetatable (line 928) | public static void luaL_getmetatable(IntPtr luaState, string meta)
    method lua_ref (line 935) | public static int lua_ref(IntPtr luaState)
    method lua_getref (line 940) | public static void lua_getref(IntPtr luaState, int reference)
    method lua_unref (line 945) | public static void lua_unref(IntPtr luaState, int reference)
    method tolua_openlibs (line 956) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_openint64 (line 959) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_openlualibs (line 962) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_tag (line 965) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_newudata (line 968) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_rawnetobj (line 971) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushudata (line 974) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushnewudata (line 978) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_beginpcall (line 982) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushtraceback (line 985) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getvec2 (line 988) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getvec3 (line 991) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getvec4 (line 994) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getclr (line 997) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getquat (line 1000) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getlayermask (line 1003) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushvec2 (line 1006) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushvec3 (line 1009) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushvec4 (line 1012) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushquat (line 1015) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushclr (line 1018) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushlayermask (line 1021) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_isint64 (line 1024) | public static bool tolua_isint64(IntPtr luaState, int stackPos)
    method tolua_toint64 (line 1029) | public static long tolua_toint64(IntPtr luaState, int stackPos)
    method tolua_checkint64 (line 1034) | public static long tolua_checkint64(IntPtr L, int stackPos)
    method tolua_pushint64 (line 1039) | public static void tolua_pushint64(IntPtr luaState, long n)
    method tolua_isuint64 (line 1044) | public static bool tolua_isuint64(IntPtr luaState, int stackPos)
    method tolua_touint64 (line 1049) | public static ulong tolua_touint64(IntPtr luaState, int stackPos)
    method tolua_checkuint64 (line 1054) | public static ulong tolua_checkuint64(IntPtr L, int stackPos)
    method tolua_pushuint64 (line 1059) | public static void tolua_pushuint64(IntPtr luaState, ulong n)
    method tolua_setindex (line 1064) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_setnewindex (line 1067) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method toluaL_ref (line 1070) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method toluaL_unref (line 1073) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getmainstate (line 1076) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getvaluetype (line 1079) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_createtable (line 1082) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushluatable (line 1086) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_beginmodule (line 1090) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_endmodule (line 1094) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_beginpremodule (line 1097) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_endpremodule (line 1101) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_addpreload (line 1104) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_beginclass (line 1108) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_endclass (line 1111) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_function (line 1114) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_tocbuffer (line 1117) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_freebuffer (line 1120) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_variable (line 1123) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_constant (line 1127) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_beginenum (line 1130) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_endenum (line 1133) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_beginstaticclass (line 1136) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_endstaticclass (line 1139) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_require (line 1142) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getmetatableref (line 1145) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_setflag (line 1148) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_isvptrtable (line 1151) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method toluaL_exception (line 1155) | public static int toluaL_exception(IntPtr L, Exception e)
    method toluaL_exception (line 1161) | public static int toluaL_exception(IntPtr L, Exception e, object o, st...
    method tolua_loadbuffer (line 1173) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_toboolean (line 1176) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_tointeger (line 1180) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_tolstring (line 1183) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushlstring (line 1186) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_objlen (line 1189) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_newuserdata (line 1192) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_argerror (line 1195) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_error (line 1198) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getfield (line 1201) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_setfield (line 1204) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_gettable (line 1207) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_settable (line 1210) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_getn (line 1213) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_strlen (line 1216) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushcfunction (line 1219) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushcfunction (line 1222) | public static void tolua_pushcfunction(IntPtr luaState, LuaCSFunction ...
    method tolua_findtable (line 1228) | public static string tolua_findtable(IntPtr L, int idx, string name, i...
    method tolua_atpanic (line 1243) | public static IntPtr tolua_atpanic(IntPtr L, LuaCSFunction func)
    method tolua_buffinit (line 1249) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_addlstring (line 1251) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_addstring (line 1253) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_addchar (line 1255) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_pushresult (line 1257) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_update (line 1260) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_lateupdate (line 1262) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_fixedupdate (line 1264) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_regthis (line 1266) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_where (line 1269) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    method tolua_bindthis (line 1272) | public static void tolua_bindthis(IntPtr L, LuaCSFunction get, LuaCSFu...
    method tolua_getclassref (line 1290) | [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]

FILE: Assets/ToLua/Core/LuaEvent.cs
  class LuaEvent (line 27) | public class LuaEvent : IDisposable
    method LuaEvent (line 37) | public LuaEvent(LuaTable table)
    method Dispose (line 48) | public void Dispose()
    method Clear (line 57) | void Clear()
    method Dispose (line 66) | public void Dispose(bool disposeManagedResources)
    method Add (line 99) | public void Add(LuaFunction func, LuaTable obj)
    method Remove (line 114) | public void Remove(LuaFunction func, LuaTable obj)

FILE: Assets/ToLua/Core/LuaException.cs
  class LuaException (line 31) | public class LuaException : Exception
    method LuaException (line 49) | public LuaException(string msg, Exception e = null, int skip = 1)
    method GetLastError (line 77) | public static Exception GetLastError()
    method ExtractFormattedStackTrace (line 84) | public static void ExtractFormattedStackTrace(StackTrace trace, String...
    method Init (line 181) | public static void Init(IntPtr L0)

FILE: Assets/ToLua/Core/LuaFileUtils.cs
  class LuaFileUtils (line 31) | public class LuaFileUtils
    method LuaFileUtils (line 58) | public LuaFileUtils()
    method Dispose (line 63) | public virtual void Dispose()
    method AddSearchPath (line 80) | public bool AddSearchPath(string path, bool front = false)
    method RemoveSearchPath (line 101) | public bool RemoveSearchPath(string path)
    method AddSearchBundle (line 114) | public void AddSearchBundle(string name, AssetBundle bundle)
    method FindFile (line 119) | public string FindFile(string fileName)
    method ReadFile (line 156) | public virtual byte[] ReadFile(string fileName)
    method FindFileError (line 180) | public virtual string FindFileError(string fileName)
    method ReadZipFile (line 224) | byte[] ReadZipFile(string fileName)
    method GetOSDir (line 272) | public static string GetOSDir()

FILE: Assets/ToLua/Core/LuaFunction.cs
  class LuaFunction (line 28) | public class LuaFunction : LuaBaseRef
    type FuncData (line 30) | protected struct FuncData
      method FuncData (line 35) | public FuncData(int top, int stack)
    method LuaFunction (line 47) | public LuaFunction(int reference, LuaState state)
    method Dispose (line 53) | public override void Dispose()
    method ToDelegate (line 64) | public T ToDelegate<T>() where T : class
    method BeginPCall (line 69) | public virtual int BeginPCall()
    method PCall (line 83) | public void PCall()
    method EndPCall (line 105) | public void EndPCall()
    method Call (line 117) | public void Call()
    method Call (line 124) | public void Call<T1>(T1 arg1)
    method Call (line 132) | public void Call<T1, T2>(T1 arg1, T2 arg2)
    method Call (line 141) | public void Call<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3)
    method Call (line 151) | public void Call<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
    method Call (line 162) | public void Call<T1, T2, T3, T4, T5>(T1 arg1, T2 arg2, T3 arg3, T4 arg...
    method Call (line 174) | public void Call<T1, T2, T3, T4, T5, T6>(T1 arg1, T2 arg2, T3 arg3, T4...
    method Call (line 187) | public void Call<T1, T2, T3, T4, T5, T6, T7>(T1 arg1, T2 arg2, T3 arg3...
    method Call (line 201) | public void Call<T1, T2, T3, T4, T5, T6, T7, T8>(T1 arg1, T2 arg2, T3 ...
    method Call (line 216) | public void Call<T1, T2, T3, T4, T5, T6, T7, T8, T9>(T1 arg1, T2 arg2,...
    method Invoke (line 232) | public R1 Invoke<R1>()
    method Invoke (line 241) | public R1 Invoke<T1, R1>(T1 arg1)
    method Invoke (line 251) | public R1 Invoke<T1, T2, R1>(T1 arg1, T2 arg2)
    method Invoke (line 262) | public R1 Invoke<T1, T2, T3, R1>(T1 arg1, T2 arg2, T3 arg3)
    method Invoke (line 274) | public R1 Invoke<T1, T2, T3, T4, R1>(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
    method Invoke (line 287) | public R1 Invoke<T1, T2, T3, T4, T5, R1>(T1 arg1, T2 arg2, T3 arg3, T4...
    method Invoke (line 301) | public R1 Invoke<T1, T2, T3, T4, T5, T6, R1>(T1 arg1, T2 arg2, T3 arg3...
    method Invoke (line 316) | public R1 Invoke<T1, T2, T3, T4, T5, T6, T7, R1>(T1 arg1, T2 arg2, T3 ...
    method Invoke (line 332) | public R1 Invoke<T1, T2, T3, T4, T5, T6, T7, T8, R1>(T1 arg1, T2 arg2,...
    method Invoke (line 349) | public R1 Invoke<T1, T2, T3, T4, T5, T6, T7, T8, T9, R1>(T1 arg1, T2 a...
    method LazyCall (line 368) | [System.Obsolete("LuaFunction.LazyCall() is obsolete.Use LuaFunction.I...
    method CheckStack (line 387) | public void CheckStack(int args)
    method IsBegin (line 392) | public bool IsBegin()
    method Push (line 397) | public void Push(double num)
    method Push (line 403) | public void Push(int n)
    method PushLayerMask (line 409) | public void PushLayerMask(LayerMask n)
    method Push (line 415) | public void Push(uint un)
    method Push (line 421) | public void Push(long num)
    method Push (line 427) | public void Push(ulong un)
    method Push (line 433) | public void Push(bool b)
    method Push (line 439) | public void Push(string str)
    method Push (line 445) | public void Push(IntPtr ptr)
    method Push (line 451) | public void Push(LuaBaseRef lbr)
    method Push (line 457) | public void Push(object o)
    method Push (line 463) | public void Push(UnityEngine.Object o)
    method Push (line 469) | public void Push(Type t)
    method Push (line 475) | public void Push(Enum e)
    method Push (line 481) | public void Push(Array array)
    method Push (line 487) | public void Push(Vector3 v3)
    method Push (line 493) | public void Push(Vector2 v2)
    method Push (line 499) | public void Push(Vector4 v4)
    method Push (line 505) | public void Push(Quaternion quat)
    method Push (line 511) | public void Push(Color clr)
    method Push (line 517) | public void Push(Ray ray)
    method Push (line 531) | public void Push(Bounds bounds)
    method Push (line 545) | public void Push(RaycastHit hit)
    method Push (line 559) | public void Push(Touch t)
    method Push (line 573) | public void Push(LuaByteBuffer buffer)
    method PushValue (line 587) | public void PushValue<T>(T value) where T : struct
    method PushObject (line 601) | public void PushObject(object o)
    method PushSealed (line 615) | public void PushSealed<T>(T o)
    method PushGeneric (line 629) | public void PushGeneric<T>(T t)
    method PushArgs (line 643) | public void PushArgs(object[] args)
    method PushByteBuffer (line 654) | public void PushByteBuffer(byte[] buffer, int len = -1)
    method CheckNumber (line 673) | public double CheckNumber()
    method CheckBoolean (line 686) | public bool CheckBoolean()
    method CheckString (line 699) | public string CheckString()
    method CheckVector3 (line 712) | public Vector3 CheckVector3()
    method CheckQuaternion (line 725) | public Quaternion CheckQuaternion()
    method CheckVector2 (line 738) | public Vector2 CheckVector2()
    method CheckVector4 (line 751) | public Vector4 CheckVector4()
    method CheckColor (line 764) | public Color CheckColor()
    method CheckColor32 (line 776) | public Color32 CheckColor32()
    method CheckRay (line 789) | public Ray CheckRay()
    method CheckBounds (line 802) | public Bounds CheckBounds()
    method CheckLayerMask (line 815) | public LayerMask CheckLayerMask()
    method CheckLong (line 828) | public long CheckLong()
    method CheckULong (line 841) | public ulong CheckULong()
    method CheckDelegate (line 854) | public Delegate CheckDelegate()
    method CheckVariant (line 867) | public object CheckVariant()
    method CheckCharBuffer (line 872) | public char[] CheckCharBuffer()
    method CheckByteBuffer (line 885) | public byte[] CheckByteBuffer()
    method CheckObject (line 898) | public object CheckObject(Type t)
    method CheckLuaFunction (line 911) | public LuaFunction CheckLuaFunction()
    method CheckLuaTable (line 924) | public LuaTable CheckLuaTable()
    method CheckLuaThread (line 937) | public LuaThread CheckLuaThread()
    method CheckValue (line 950) | public T CheckValue<T>()

FILE: Assets/ToLua/Core/LuaMatchType.cs
  class LuaMatchType (line 28) | public class LuaMatchType
    method CheckNumber (line 30) | public bool CheckNumber(IntPtr L, int pos)
    method CheckBool (line 35) | public bool CheckBool(IntPtr L, int pos)
    method CheckLong (line 40) | public bool CheckLong(IntPtr L, int pos)
    method CheckULong (line 55) | public bool CheckULong(IntPtr L, int pos)
    method CheckNullNumber (line 70) | public bool CheckNullNumber(IntPtr L, int pos)
    method CheckNullBool (line 76) | public bool CheckNullBool(IntPtr L, int pos)
    method CheckNullLong (line 82) | public bool CheckNullLong(IntPtr L, int pos)
    method CheckNullULong (line 99) | public bool CheckNullULong(IntPtr L, int pos)
    method CheckString (line 116) | public bool CheckString(IntPtr L, int pos)
    method CheckByteArray (line 133) | public bool CheckByteArray(IntPtr L, int pos)
    method CheckCharArray (line 150) | public bool CheckCharArray(IntPtr L, int pos)
    method CheckArray (line 167) | public bool CheckArray(Type t, IntPtr L, int pos)
    method CheckBoolArray (line 184) | public bool CheckBoolArray(IntPtr L, int pos)
    method CheckSByteArray (line 189) | public bool CheckSByteArray(IntPtr L, int pos)
    method CheckInt16Array (line 194) | public bool CheckInt16Array(IntPtr L, int pos)
    method CheckUInt16Array (line 199) | public bool CheckUInt16Array(IntPtr L, int pos)
    method CheckDecimalArray (line 204) | public bool CheckDecimalArray(IntPtr L, int pos)
    method CheckSingleArray (line 209) | public bool CheckSingleArray(IntPtr L, int pos)
    method CheckDoubleArray (line 214) | public bool CheckDoubleArray(IntPtr L, int pos)
    method CheckInt32Array (line 219) | public bool CheckInt32Array(IntPtr L, int pos)
    method CheckUInt32Array (line 224) | public bool CheckUInt32Array(IntPtr L, int pos)
    method CheckInt64Array (line 229) | public bool CheckInt64Array(IntPtr L, int pos)
    method CheckUInt64Array (line 234) | public bool CheckUInt64Array(IntPtr L, int pos)
    method CheckStringArray (line 239) | public bool CheckStringArray(IntPtr L, int pos)
    method CheckTypeArray (line 244) | public bool CheckTypeArray(IntPtr L, int pos)
    method CheckObjectArray (line 249) | public bool CheckObjectArray(IntPtr L, int pos)
    method CheckValueType (line 254) | bool CheckValueType(IntPtr L, int pos, int valueType, Type nt)
    method CheckVec3 (line 265) | public bool CheckVec3(IntPtr L, int pos)
    method CheckQuat (line 275) | public bool CheckQuat(IntPtr L, int pos)
    method CheckVec2 (line 285) | public bool CheckVec2(IntPtr L, int pos)
    method CheckColor (line 295) | public bool CheckColor(IntPtr L, int pos)
    method CheckColor32 (line 304) | public bool CheckColor32(IntPtr L, int pos)
    method CheckVec4 (line 314) | public bool CheckVec4(IntPtr L, int pos)
    method CheckRay (line 324) | public bool CheckRay(IntPtr L, int pos)
    method CheckBounds (line 334) | public bool CheckBounds(IntPtr L, int pos)
    method CheckTouch (line 344) | public bool CheckTouch(IntPtr L, int pos)
    method CheckLayerMask (line 354) | public bool CheckLayerMask(IntPtr L, int pos)
    method CheckRaycastHit (line 364) | public bool CheckRaycastHit(IntPtr L, int pos)
    method CheckNullVec3 (line 374) | public bool CheckNullVec3(IntPtr L, int pos)
    method CheckNullQuat (line 389) | public bool CheckNullQuat(IntPtr L, int pos)
    method CheckNullVec2 (line 404) | public bool CheckNullVec2(IntPtr L, int pos)
    method CheckNullColor (line 419) | public bool CheckNullColor(IntPtr L, int pos)
    method CheckNullColor32 (line 433) | public bool CheckNullColor32(IntPtr L, int pos)
    method CheckNullVec4 (line 448) | public bool CheckNullVec4(IntPtr L, int pos)
    method CheckNullRay (line 463) | public bool CheckNullRay(IntPtr L, int pos)
    method CheckNullBounds (line 478) | public bool CheckNullBounds(IntPtr L, int pos)
    method CheckNullTouch (line 493) | public bool CheckNullTouch(IntPtr L, int pos)
    method CheckNullLayerMask (line 508) | public bool CheckNullLayerMask(IntPtr L, int pos)
    method CheckNullRaycastHit (line 523) | public bool CheckNullRaycastHit(IntPtr L, int pos)
    method CheckVec3Array (line 538) | public bool CheckVec3Array(IntPtr L, int pos)
    method CheckQuatArray (line 543) | public bool CheckQuatArray(IntPtr L, int pos)
    method CheckVec2Array (line 548) | public bool CheckVec2Array(IntPtr L, int pos)
    method CheckVec4Array (line 553) | public bool CheckVec4Array(IntPtr L, int pos)
    method CheckColorArray (line 558) | public bool CheckColorArray(IntPtr L, int pos)
    method CheckColor32Array (line 563) | public bool CheckColor32Array(IntPtr L, int pos)
    method CheckPtr (line 568) | public bool CheckPtr(IntPtr L, int pos)
    method CheckLuaFunc (line 574) | public bool CheckLuaFunc(IntPtr L, int pos)
    method CheckLuaTable (line 580) | public bool CheckLuaTable(IntPtr L, int pos)
    method CheckLuaThread (line 586) | public bool CheckLuaThread(IntPtr L, int pos)
    method CheckLuaBaseRef (line 592) | public bool CheckLuaBaseRef(IntPtr L, int pos)
    method CheckByteBuffer (line 611) | public bool CheckByteBuffer(IntPtr L, int pos)
    method CheckEventObject (line 617) | public bool CheckEventObject(IntPtr L, int pos)
    method CheckEnumerator (line 632) | public bool CheckEnumerator(IntPtr L, int pos)
    method CheckFinalType (line 659) | bool CheckFinalType(Type type, IntPtr L, int pos)
    method CheckGameObject (line 674) | public bool CheckGameObject(IntPtr L, int pos)
    method CheckTransform (line 679) | public bool CheckTransform(IntPtr L, int pos)
    method CheckMonoType (line 705) | public bool CheckMonoType(IntPtr L, int pos)
    method CheckVariant (line 720) | public bool CheckVariant(IntPtr L, int pos)
    method CheckClassType (line 725) | bool CheckClassType(Type t, IntPtr L, int pos)

FILE: Assets/ToLua/Core/LuaMethodCache.cs
  class LuaMethodCache (line 28) | public static class LuaMethodCache
    method GetMethod (line 32) | static MethodInfo GetMethod(Type t, string name, Type[] ts)
    method CallSingleMethod (line 94) | public static object CallSingleMethod(string name, object obj, params ...
    method CallMethod (line 100) | public static object CallMethod(string name, object obj, params object...

FILE: Assets/ToLua/Core/LuaMisc.cs
  class GCRef (line 31) | public class GCRef
    method GCRef (line 36) | public GCRef(int reference, string name)
  type LuaByteBuffer (line 45) | public struct LuaByteBuffer
    method LuaByteBuffer (line 47) | public LuaByteBuffer(IntPtr source, int len)
    method LuaByteBuffer (line 55) | public LuaByteBuffer(byte[] buf)
    method LuaByteBuffer (line 62) | public LuaByteBuffer(byte[] buf, int len)
    method LuaByteBuffer (line 69) | public LuaByteBuffer(System.IO.MemoryStream stream)
  class LuaOut (line 90) | public class LuaOut<T> { }
  class NullObject (line 92) | public class NullObject { }
  type nil (line 95) | public struct nil { }
  class LuaDelegate (line 97) | public class LuaDelegate
    method LuaDelegate (line 103) | public LuaDelegate(LuaFunction func)
    method LuaDelegate (line 108) | public LuaDelegate(LuaFunction func, LuaTable self)
    method Dispose (line 115) | public virtual void Dispose()
    method Equals (line 132) | public override bool Equals(object o)
    method CompareLuaDelegate (line 145) | static bool CompareLuaDelegate(LuaDelegate a, LuaDelegate b)
    method GetHashCode (line 182) | public override int GetHashCode()
  class LuaMisc (line 188) | [NoToLuaAttribute]
    method GetArrayRank (line 191) | public static string GetArrayRank(Type t)
    method GetTypeName (line 215) | public static string GetTypeName(Type t)
    method GetGenericName (line 243) | public static string[] GetGenericName(Type[] types, int offset, int co...
    method CombineTypeStr (line 265) | static string CombineTypeStr(string space, string name)
    method GetGenericName (line 277) | static string GetGenericName(Type t)
    method GetEventHandler (line 325) | public static Delegate GetEventHandler(object obj, Type t, string even...
    method GetPrimitiveStr (line 331) | public static string GetPrimitiveStr(Type t)
    method ToDouble (line 399) | public static double ToDouble(object obj)
    method GetExportBaseType (line 458) | public static Type GetExportBaseType(Type t)
  class TouchBits (line 507) | public class TouchBits
  class RaycastBits (line 515) | public class RaycastBits
  type EventOp (line 525) | public enum EventOp
  class EventObject (line 532) | public class EventObject
    method EventObject (line 541) | [NoToLuaAttribute]

FILE: Assets/ToLua/Core/LuaStackOp.cs
  class LuaStackOp (line 29) | public class LuaStackOp
    method ToSByte (line 31) | public sbyte ToSByte(IntPtr L, int stackPos)
    method ToByte (line 37) | public byte ToByte(IntPtr L, int stackPos)
    method ToInt16 (line 43) | public short ToInt16(IntPtr L, int stackPos)
    method ToUInt16 (line 49) | public ushort ToUInt16(IntPtr L, int stackPos)
    method ToChar (line 55) | public char ToChar(IntPtr L, int stackPos)
    method ToInt32 (line 61) | public int ToInt32(IntPtr L, int stackPos)
    method ToUInt32 (line 67) | public uint ToUInt32(IntPtr L, int stackPos)
    method ToDecimal (line 73) | public decimal ToDecimal(IntPtr L, int stackPos)
    method ToFloat (line 79) | public float ToFloat(IntPtr L, int stackPos)
    method ToLuaByteBuffer (line 85) | public LuaByteBuffer ToLuaByteBuffer(IntPtr L, int stackPos)
    method ToIter (line 90) | public IEnumerator ToIter(IntPtr L, int stackPos)
    method ToType (line 95) | public Type ToType(IntPtr L, int stackPos)
    method ToEventObject (line 100) | public EventObject ToEventObject(IntPtr L, int stackPos)
    method ToTransform (line 105) | public Transform ToTransform(IntPtr L, int stackPos)
    method ToGameObject (line 110) | public GameObject ToGameObject(IntPtr L, int stackPos)
    method ToObject (line 115) | public object ToObject(IntPtr L, int stackPos)
    method CheckSByte (line 120) | public sbyte CheckSByte(IntPtr L, int stackPos)
    method CheckByte (line 126) | public byte CheckByte(IntPtr L, int stackPos)
    method CheckInt16 (line 132) | public short CheckInt16(IntPtr L, int stackPos)
    method CheckUInt16 (line 138) | public ushort CheckUInt16(IntPtr L, int stackPos)
    method CheckChar (line 144) | public char CheckChar(IntPtr L, int stackPos)
    method CheckInt32 (line 150) | public int CheckInt32(IntPtr L, int stackPos)
    method CheckUInt32 (line 156) | public uint CheckUInt32(IntPtr L, int stackPos)
    method CheckDecimal (line 162) | public decimal CheckDecimal(IntPtr L, int stackPos)
    method CheckFloat (line 168) | public float CheckFloat(IntPtr L, int stackPos)
    method CheckIntPtr (line 174) | public IntPtr CheckIntPtr(IntPtr L, int stackPos)
    method CheckUIntPtr (line 190) | public UIntPtr CheckUIntPtr(IntPtr L, int stackPos)
    method CheckLuaByteBuffer (line 195) | public LuaByteBuffer CheckLuaByteBuffer(IntPtr L, int stackPos)
    method CheckEventObject (line 200) | public EventObject CheckEventObject(IntPtr L, int stackPos)
    method CheckTransform (line 205) | public Transform CheckTransform(IntPtr L, int stackPos)
    method CheckGameObject (line 210) | public GameObject CheckGameObject(IntPtr L, int stackPos)
    method Push (line 215) | public void Push(IntPtr L, sbyte n)
    method Push (line 220) | public void Push(IntPtr L, byte n)
    method Push (line 225) | public void Push(IntPtr L, short n)
    method Push (line 230) | public void Push(IntPtr L, ushort n)
    method Push (line 235) | public void Push(IntPtr L, char n)
    method Push (line 240) | public void Push(IntPtr L, int n)
    method Push (line 245) | public void Push(IntPtr L, uint n)
    method Push (line 250) | public void Push(IntPtr L, decimal n)
    method Push (line 255) | public void Push(IntPtr L, float n)
    method Push (line 260) | public void Push(IntPtr L, UIntPtr p)
    method Push (line 265) | public void Push(IntPtr L, Delegate ev)
    method Push (line 270) | public void Push(IntPtr L, object obj)
    method Push (line 275) | public void Push(IntPtr L, GameObject o)
    method Push (line 294) | public void Push(IntPtr L, Transform o)
    method ToNullSByte (line 324) | public Nullable<sbyte> ToNullSByte(IntPtr L, int stackPos)
    method ToNullByte (line 335) | public Nullable<byte> ToNullByte(IntPtr L, int stackPos)
    method ToNullInt16 (line 346) | public Nullable<short> ToNullInt16(IntPtr L, int stackPos)
    method ToNullUInt16 (line 357) | public Nullable<ushort> ToNullUInt16(IntPtr L, int stackPos)
    method ToNullChar (line 368) | public Nullable<char> ToNullChar(IntPtr L, int stackPos)
    method ToNullInt32 (line 379) | public Nullable<int> ToNullInt32(IntPtr L, int stackPos)
    method ToNullUInt32 (line 390) | public Nullable<uint> ToNullUInt32(IntPtr L, int stackPos)
    method ToNullDecimal (line 401) | public Nullable<decimal> ToNullDecimal(IntPtr L, int stackPos)
    method ToNullFloat (line 412) | public Nullable<float> ToNullFloat(IntPtr L, int stackPos)
    method ToNullNumber (line 423) | public Nullable<double> ToNullNumber(IntPtr L, int stackPos)
    method ToNullBool (line 433) | public Nullable<bool> ToNullBool(IntPtr L, int stackPos)
    method ToNullInt64 (line 443) | public Nullable<long> ToNullInt64(IntPtr L, int stackPos)
    method ToNullUInt64 (line 453) | public Nullable<ulong> ToNullUInt64(IntPtr L, int stackPos)
    method ToSByteArray (line 463) | public sbyte[] ToSByteArray(IntPtr L, int stackPos)
    method ToInt16Array (line 468) | public short[] ToInt16Array(IntPtr L, int stackPos)
    method ToUInt16Array (line 473) | public ushort[] ToUInt16Array(IntPtr L, int stackPos)
    method ToDecimalArray (line 478) | public decimal[] ToDecimalArray(IntPtr L, int stackPos)
    method ToFloatArray (line 483) | public float[] ToFloatArray(IntPtr L, int stackPos)
    method ToDoubleArray (line 488) | public double[] ToDoubleArray(IntPtr L, int stackPos)
    method ToInt32Array (line 493) | public int[] ToInt32Array(IntPtr L, int stackPos)
    method ToUInt32Array (line 498) | public uint[] ToUInt32Array(IntPtr L, int stackPos)
    method ToInt64Array (line 503) | public long[] ToInt64Array(IntPtr L, int stackPos)
    method ToUInt64Array (line 508) | public ulong[] ToUInt64Array(IntPtr L, int stackPos)
    method ToNullVec3 (line 513) | public Nullable<Vector3> ToNullVec3(IntPtr L, int stackPos)
    method ToNullQuat (line 525) | public Nullable<Quaternion> ToNullQuat(IntPtr L, int stackPos)
    method ToNullVec2 (line 537) | public Nullable<Vector2> ToNullVec2(IntPtr L, int stackPos)
    method ToNullColor (line 549) | public Nullable<Color> ToNullColor(IntPtr L, int stackPos)
    method ToNullColor32 (line 561) | public Nullable<Color32> ToNullColor32(IntPtr L, int stackPos)
    method ToNullVec4 (line 573) | public Nullable<Vector4> ToNullVec4(IntPtr L, int stackPos)
    method ToNullRay (line 585) | public Nullable<Ray> ToNullRay(IntPtr L, int stackPos)
    method ToNullBounds (line 595) | public Nullable<Bounds> ToNullBounds(IntPtr L, int stackPos)
    method ToNullLayerMask (line 605) | public Nullable<LayerMask> ToNullLayerMask(IntPtr L, int stackPos)
    method ToVec3Array (line 615) | public Vector3[] ToVec3Array(IntPtr L, int stackPos)
    method ToQuatArray (line 620) | public Quaternion[] ToQuatArray(IntPtr L, int stackPos)
    method ToVec2Array (line 625) | public Vector2[] ToVec2Array(IntPtr L, int stackPos)
    method ToColorArray (line 630) | public Color[] ToColorArray(IntPtr L, int stackPos)
    method ToColor32Array (line 634) | public Color32[] ToColor32Array(IntPtr L, int stackPos)
    method ToVec4Array (line 639) | public Vector4[] ToVec4Array(IntPtr L, int stackPos)
    method ToTypeArray (line 644) | public Type[] ToTypeArray(IntPtr L, int stackPos)
    method CheckNullSByte (line 649) | public Nullable<sbyte> CheckNullSByte(IntPtr L, int stackPos)
    method CheckNullByte (line 660) | public Nullable<byte> CheckNullByte(IntPtr L, int stackPos)
    method CheckNullInt16 (line 671) | public Nullable<short> CheckNullInt16(IntPtr L, int stackPos)
    method CheckNullUInt16 (line 682) | public Nullable<ushort> CheckNullUInt16(IntPtr L, int stackPos)
    method CheckNullChar (line 693) | public Nullable<char> CheckNullChar(IntPtr L, int stackPos)
    method CheckNullInt32 (line 704) | public Nullable<int> CheckNullInt32(IntPtr L, int stackPos)
    method CheckNullUInt32 (line 715) | public Nullable<uint> CheckNullUInt32(IntPtr L, int stackPos)
    method CheckNullDecimal (line 726) | public Nullable<decimal> CheckNullDecimal(IntPtr L, int stackPos)
    method CheckNullFloat (line 737) | public Nullable<float> CheckNullFloat(IntPtr L, int stackPos)
    method CheckNullNumber (line 748) | public Nullable<double> CheckNullNumber(IntPtr L, int stackPos)
    method CheckNullBool (line 758) | public Nullable<bool> CheckNullBool(IntPtr L, int stackPos)
    method CheckNullInt64 (line 768) | public Nullable<long> CheckNullInt64(IntPtr L, int stackPos)
    method CheckNullUInt64 (line 778) | public Nullable<ulong> CheckNullUInt64(IntPtr L, int stackPos)
    method CheckSByteArray (line 788) | public sbyte[] CheckSByteArray(IntPtr L, int stackPos)
    method CheckInt16Array (line 793) | public short[] CheckInt16Array(IntPtr L, int stackPos)
    method CheckUInt16Array (line 798) | public ushort[] CheckUInt16Array(IntPtr L, int stackPos)
    method CheckDecimalArray (line 803) | public decimal[] CheckDecimalArray(IntPtr L, int stackPos)
    method CheckFloatArray (line 808) | public float[] CheckFloatArray(IntPtr L, int stackPos)
    method CheckDoubleArray (line 813) | public double[] CheckDoubleArray(IntPtr L, int stackPos)
    method CheckInt32Array (line 818) | public int[] CheckInt32Array(IntPtr L, int stackPos)
    method CheckUInt32Array (line 823) | public uint[] CheckUInt32Array(IntPtr L, int stackPos)
    method CheckInt64Array (line 828) | public long[] CheckInt64Array(IntPtr L, int stackPos)
    method CheckUInt64Array (line 833) | public ulong[] CheckUInt64Array(IntPtr L, int stackPos)
    method CheckNullVec3 (line 838) | public Nullable<Vector3> CheckNullVec3(IntPtr L, int stackPos)
    method CheckNullQuat (line 848) | public Nullable<Quaternion> CheckNullQuat(IntPtr L, int stackPos)
    method CheckNullVec2 (line 858) | public Nullable<Vector2> CheckNullVec2(IntPtr L, int stackPos)
    method CheckNullColor (line 868) | public Nullable<Color> CheckNullColor(IntPtr L, int stackPos)
    method CheckNullColor32 (line 879) | public Nullable<Color32> CheckNullColor32(IntPtr L, int stackPos)
    method CheckNullVec4 (line 889) | public Nullable<Vector4> CheckNullVec4(IntPtr L, int stackPos)
    method CheckNullRay (line 899) | public Nullable<Ray> CheckNullRay(IntPtr L, int stackPos)
    method CheckNullBounds (line 909) | public Nullable<Bounds> CheckNullBounds(IntPtr L, int stackPos)
    method CheckNullLayerMask (line 919) | public Nullable<LayerMask> CheckNullLayerMask(IntPtr L, int stackPos)
    method CheckVec3Array (line 929) | public Vector3[] CheckVec3Array(IntPtr L, int stackPos)
    method CheckQuatArray (line 934) | public Quaternion[] CheckQuatArray(IntPtr L, int stackPos)
    method CheckVec2Array (line 939) | public Vector2[] CheckVec2Array(IntPtr L, int stackPos)
    method CheckColorArray (line 944) | public Color[] CheckColorArray(IntPtr L, int stackPos)
    method CheckColor32Array (line 948) | public Color32[] CheckColor32Array(IntPtr L, int stackPos)
    method CheckVec4Array (line 953) | public Vector4[] CheckVec4Array(IntPtr L, int stackPos)
    method CheckTypeArray (line 958) | public Type[] CheckTypeArray(IntPtr L, int stackPos)
    method Push (line 963) | public void Push(IntPtr L, Nullable<sbyte> n)
    method Push (line 975) | public void Push(IntPtr L, Nullable<byte> n)
    method Push (line 987) | public void Push(IntPtr L, Nullable<short> n)
    method Push (line 999) | public void Push(IntPtr L, Nullable<ushort> n)
    method Push (line 1011) | public void Push(IntPtr L, Nullable<char> n)
    method Push (line 1023) | public void Push(IntPtr L, Nullable<int> n)
    method Push (line 1035) | public void Push(IntPtr L, Nullable<uint> n)
    method Push (line 1047) | public void Push(IntPtr L, Nullable<decimal> n)
    method Push (line 1059) | public void Push(IntPtr L, Nullable<float> n)
    method Push (line 1071) | public void Push(IntPtr L, Nullable<double> n)
    method Push (line 1083) | public void Push(IntPtr L, Nullable<bool> n)
    method Push (line 1095) | public void Push(IntPtr L, Nullable<long> n)
    method Push (line 1107) | public void Push(IntPtr L, Nullable<ulong> n)
    method Push (line 1119) | public void Push(IntPtr L, Nullable<Vector3> v3)
    method Push (line 1133) | public void Push(IntPtr L, Nullable<Quaternion> n)
    method Push (line 1146) | public void Push(IntPtr L, Nullable<Vector2> n)
    method Push (line 1159) | public void Push(IntPtr L, Nullable<Color> n)
    method Push (line 1172) | public void Push(IntPtr L, Nullable<Color32> n)
    method Push (line 1185) | public void Push(IntPtr L, Nullable<Vector4> n)
    method Push (line 1198) | public void Push(IntPtr L, Nullable<Ray> n)
    method Push (line 1210) | public void Push(IntPtr L, Nullable<Bounds> n)
    method Push (line 1222) | public void Push(IntPtr L, Nullable<LayerMask> n)
    method Push (line 1234) | public void Push(IntPtr L, Nullable<Touch> n)
    method Push (line 1246) | public void Push(IntPtr L, Nullable<RaycastHit> n)

FILE: Assets/ToLua/Core/LuaState.cs
  class LuaState (line 36) | public class LuaState : LuaStatePtr, IDisposable
    method LuaState (line 102) | public LuaState()
    method OpenBaseLibs (line 125) | void OpenBaseLibs()
    method InitLuaPath (line 179) | void InitLuaPath()
    method OpenBaseLuaLibs (line 208) | void OpenBaseLuaLibs()
    method Start (line 214) | public void Start()
    method OpenLibs (line 242) | public int OpenLibs(LuaCSFunction open)
    method BeginPreLoad (line 248) | public void BeginPreLoad()
    method EndPreLoad (line 255) | public void EndPreLoad()
    method AddPreLoad (line 261) | public void AddPreLoad(string name, LuaCSFunction func, Type type)
    method AddPreLoad (line 279) | public void AddPreLoad(string name, LuaCSFunction func)
    method BeginPreModule (line 285) | public int BeginPreModule(string name)
    method EndPreModule (line 304) | public void EndPreModule(int reference)
    method EndPreModule (line 310) | public void EndPreModule(IntPtr L, int reference)
    method BindPreModule (line 316) | public void BindPreModule(Type t, LuaCSFunction func)
    method GetPreModule (line 321) | public LuaCSFunction GetPreModule(Type t)
    method BeginModule (line 328) | public bool BeginModule(string name)
    method EndModule (line 351) | public void EndModule()
    method BindTypeRef (line 357) | void BindTypeRef(int reference, Type t)
    method GetClassType (line 368) | public Type GetClassType(int reference)
    method Collect (line 375) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetInjectInitState (line 389) | public static bool GetInjectInitState(int index)
    method GetToLuaTypeName (line 399) | string GetToLuaTypeName(Type t)
    method BeginClass (line 417) | public int BeginClass(Type t, Type baseType, string name = null)
    method EndClass (line 456) | public void EndClass()
    method BeginEnum (line 461) | public int BeginEnum(Type t)
    method EndEnum (line 474) | public void EndEnum()
    method BeginStaticLibs (line 479) | public void BeginStaticLibs(string name)
    method EndStaticLibs (line 489) | public void EndStaticLibs()
    method RegFunction (line 494) | public void RegFunction(string name, LuaCSFunction func)
    method RegVar (line 500) | public void RegVar(string name, LuaCSFunction get, LuaCSFunction set)
    method RegConstant (line 518) | public void RegConstant(string name, double d)
    method RegConstant (line 523) | public void RegConstant(string name, ValueType value) {
    method RegConstant (line 527) | public void RegConstant(string name, bool flag)
    method RegConstant (line 534) | public void RegConstant(string name, string s) {
    method GetFuncRef (line 540) | int GetFuncRef(string name)
    method Get (line 550) | public static LuaState Get(IntPtr ptr)
    method GetTranslator (line 574) | public static ObjectTranslator GetTranslator(IntPtr ptr)
    method GetReflection (line 588) | public static LuaReflection GetReflection(IntPtr ptr)
    method DoString (line 602) | public void DoString(string chunk, string chunkName = "LuaState.cs")
    method DoString (line 614) | public T DoString<T>(string chunk, string chunkName = "LuaState.cs")
    method LoadFileBuffer (line 620) | byte[] LoadFileBuffer(string fileName)
    method LuaChunkName (line 640) | string LuaChunkName(string name)
    method DoFile (line 650) | public void DoFile(string fileName)
    method DoFile (line 657) | public T DoFile<T>(string fileName)
    method Require (line 665) | public void Require(string fileName)
    method Require (line 680) | public T Require<T>(string fileName)
    method InitPackagePath (line 697) | public void InitPackagePath()
    method ToPackagePath (line 718) | string ToPackagePath(string path)
    method AddSearchPath (line 736) | public void AddSearchPath(string fullPath)
    method RemoveSeachPath (line 747) | public void RemoveSeachPath(string fullPath)
    method BeginPCall (line 758) | public int BeginPCall(int reference)
    method PCall (line 763) | public void PCall(int args, int oldTop)
    method EndPCall (line 772) | public void EndPCall(int oldTop)
    method PushArgs (line 777) | public void PushArgs(object[] args)
    method CheckNull (line 785) | void CheckNull(LuaBaseRef lbr, string fmt, object arg0)
    method PushLuaTable (line 795) | bool PushLuaTable(string fullPath, bool checkMap = true)
    method PushLuaFunction (line 825) | bool PushLuaFunction(string fullPath, bool checkMap = true)
    method RemoveFromGCList (line 890) | void RemoveFromGCList(int reference)
    method GetFunction (line 905) | public LuaFunction GetFunction(string name, bool beLogMiss = true)
    method TryGetLuaRef (line 968) | LuaBaseRef TryGetLuaRef(int reference)
    method GetFunction (line 991) | public LuaFunction GetFunction(int reference)
    method GetTable (line 1006) | public LuaTable GetTable(string fullPath, bool beLogMiss = true)
    method GetTable (line 1069) | public LuaTable GetTable(int reference)
    method GetLuaThread (line 1083) | public LuaThread GetLuaThread(int reference)
    method GetLuaDelegate (line 1097) | public LuaDelegate GetLuaDelegate(LuaFunction func)
    method GetLuaDelegate (line 1116) | public LuaDelegate GetLuaDelegate(LuaFunction func, LuaTable self)
    method AddLuaDelegate (line 1138) | public void AddLuaDelegate(LuaDelegate target, LuaFunction func)
    method AddLuaDelegate (line 1148) | public void AddLuaDelegate(LuaDelegate target, LuaFunction func, LuaTa...
    method CheckTop (line 1161) | public bool CheckTop()
    method Push (line 1174) | public void Push(bool b)
    method Push (line 1179) | public void Push(double d)
    method Push (line 1184) | public void Push(uint un)
    method Push (line 1189) | public void Push(int n)
    method Push (line 1194) | public void Push(short s)
    method Push (line 1199) | public void Push(ushort us)
    method Push (line 1204) | public void Push(long l)
    method Push (line 1209) | public void Push(ulong ul)
    method Push (line 1214) | public void Push(string str)
    method Push (line 1219) | public void Push(IntPtr p)
    method Push (line 1224) | public void Push(Vector3 v3)
    method Push (line 1229) | public void Push(Vector2 v2)
    method Push (line 1234) | public void Push(Vector4 v4)
    method Push (line 1239) | public void Push(Color clr)
    method Push (line 1244) | public void Push(Color32 clr)
    method Push (line 1249) | public void Push(Quaternion q)
    method Push (line 1254) | public void Push(Ray ray)
    method Push (line 1259) | public void Push(Bounds bound)
    method Push (line 1264) | public void Push(RaycastHit hit)
    method Push (line 1269) | public void Push(Touch touch)
    method PushLayerMask (line 1274) | public void PushLayerMask(LayerMask mask)
    method Push (line 1279) | public void Push(LuaByteBuffer bb)
    method PushByteBuffer (line 1284) | public void PushByteBuffer(byte[] buffer)
    method PushByteBuffer (line 1289) | public void PushByteBuffer(byte[] buffer, int len)
    method Push (line 1294) | public void Push(LuaBaseRef lbr)
    method PushUserData (line 1306) | void PushUserData(object o, int reference)
    method Push (line 1324) | public void Push(Array array)
    method Push (line 1336) | public void Push(Type t)
    method Push (line 1348) | public void Push(Delegate ev)
    method GetEnumObj (line 1360) | public object GetEnumObj(Enum e)
    method Push (line 1373) | public void Push(Enum e)
    method Push (line 1378) | public void Push(IEnumerator iter)
    method Push (line 1383) | public void Push(UnityEngine.Object obj)
    method Push (line 1388) | public void Push(UnityEngine.TrackedReference tracker)
    method PushVariant (line 1393) | public void PushVariant(object obj)
    method PushObject (line 1398) | public void PushObject(object obj)
    method PushSealed (line 1403) | public void PushSealed<T>(T o)
    method PushValue (line 1408) | public void PushValue<T>(T v) where T : struct
    method PushGeneric (line 1413) | public void PushGeneric<T>(T o)
    method ToVector3 (line 1418) | Vector3 ToVector3(int stackPos)
    method CheckVector3 (line 1426) | public Vector3 CheckVector3(int stackPos)
    method CheckQuaternion (line 1442) | public Quaternion CheckQuaternion(int stackPos)
    method CheckVector2 (line 1458) | public Vector2 CheckVector2(int stackPos)
    method CheckVector4 (line 1474) | public Vector4 CheckVector4(int stackPos)
    method CheckColor (line 1490) | public Color CheckColor(int stackPos)
    method CheckColor32 (line 1506) | public Color32 CheckColor32(int stackPos)
    method CheckRay (line 1522) | public Ray CheckRay(int stackPos)
    method CheckBounds (line 1551) | public Bounds CheckBounds(int stackPos)
    method CheckLayerMask (line 1580) | public LayerMask CheckLayerMask(int stackPos)
    method CheckLong (line 1594) | public long CheckLong(int stackPos)
    method CheckULong (line 1600) | public ulong CheckULong(int stackPos)
    method CheckString (line 1606) | public string CheckString(int stackPos)
    method CheckDelegate (line 1611) | public Delegate CheckDelegate(int stackPos)
    method CheckCharBuffer (line 1640) | public char[] CheckCharBuffer(int stackPos)
    method CheckByteBuffer (line 1645) | public byte[] CheckByteBuffer(int stackPos)
    method CheckNumberArray (line 1650) | public T[] CheckNumberArray<T>(int stackPos) where T : struct
    method CheckObject (line 1655) | public object CheckObject(int stackPos, Type type)
    method CheckVarObject (line 1660) | public object CheckVarObject(int stackPos, Type type)
    method CheckObjects (line 1665) | public object[] CheckObjects(int oldTop)
    method CheckLuaFunction (line 1686) | public LuaFunction CheckLuaFunction(int stackPos)
    method CheckLuaTable (line 1691) | public LuaTable CheckLuaTable(int stackPos)
    method CheckLuaThread (line 1696) | public LuaThread CheckLuaThread(int stackPos)
    method CheckValue (line 1702) | public T CheckValue<T>(int stackPos)
    method ToVariant (line 1707) | public object ToVariant(int stackPos)
    method CollectRef (line 1712) | public void CollectRef(int reference, string name, bool isGCThread = f...
    method DelayDispose (line 1728) | public void DelayDispose(LuaBaseRef br)
    method Collect (line 1736) | public int Collect()
    method StepCollect (line 1766) | public void StepCollect()
    method RefreshDelegateMap (line 1771) | public void RefreshDelegateMap()
    method NewTable (line 1860) | public void NewTable(string fullPath)
    method NewTable (line 1889) | public LuaTable NewTable(int narr = 0, int nrec = 0)
    method ReLoad (line 1901) | public void ReLoad(string moduleFileName)
    method GetMetaReference (line 1920) | public int GetMetaReference(Type t)
    method GetMissMetaReference (line 1927) | public int GetMissMetaReference(Type t)
    method GetBaseType (line 1966) | Type GetBaseType(Type t)
    method GetSpecialGenericType (line 1976) | Type GetSpecialGenericType(Type t)
    method CloseBaseRef (line 1988) | void CloseBaseRef()
    method Dispose (line 1998) | public void Dispose()
    method GetHashCode (line 2067) | public override int GetHashCode()
    method Equals (line 2072) | public override bool Equals(object o)
    method PrintTable (line 2118) | public void PrintTable(string name)
    method Collect (line 2134) | protected void Collect(int reference, string name, bool beThread)
    method LuaLoadBuffer (line 2196) | protected void LuaLoadBuffer(byte[] buffer, string chunkName)
    method LuaLoadBuffer (line 2215) | protected T LuaLoadBuffer<T>(byte[] buffer, string chunkName)
    method BeginCall (line 2235) | public bool BeginCall(string name, int top, bool beLogMiss)
    method Call (line 2255) | public void Call(int nArgs, int errfunc, int top)
    method Call (line 2264) | public void Call(string name, bool beLogMiss)
    method Call (line 2283) | public void Call<T>(string name, T arg1, bool beLogMiss)
    method Call (line 2303) | public void Call<T1, T2>(string name, T1 arg1, T2 arg2, bool beLogMiss)
    method Call (line 2324) | public void Call<T1, T2, T3>(string name, T1 arg1, T2 arg2, T3 arg3, b...
    method Call (line 2346) | public void Call<T1, T2, T3, T4>(string name, T1 arg1, T2 arg2, T3 arg...
    method Call (line 2369) | public void Call<T1, T2, T3, T4, T5>(string name, T1 arg1, T2 arg2, T3...
    method Call (line 2393) | public void Call<T1, T2, T3, T4, T5, T6>(string name, T1 arg1, T2 arg2...
    method Invoke (line 2418) | public R1 Invoke<R1>(string name, bool beLogMiss)
    method Invoke (line 2441) | public R1 Invoke<T1, R1>(string name, T1 arg1, bool beLogMiss)
    method Invoke (line 2465) | public R1 Invoke<T1, T2, R1>(string name, T1 arg1, T2 arg2, bool beLog...
    method Invoke (line 2490) | public R1 Invoke<T1, T2, T3, R1>(string name, T1 arg1, T2 arg2, T3 arg...
    method Invoke (line 2516) | public R1 Invoke<T1, T2, T3, T4, R1>(string name, T1 arg1, T2 arg2, T3...
    method Invoke (line 2543) | public R1 Invoke<T1, T2, T3, T4, T5, R1>(string name, T1 arg1, T2 arg2...
    method Invoke (line 2571) | public R1 Invoke<T1, T2, T3, T4, T5, T6, R1>(string name, T1 arg1, T2 ...
    method InitTypeTraits (line 2600) | void InitTypeTraits()
    method InitStackTraits (line 2696) | void InitStackTraits()

FILE: Assets/ToLua/Core/LuaStatePtr.cs
  class LuaStatePtr (line 9) | public class LuaStatePtr
    method LuaUpValueIndex (line 71) | public int LuaUpValueIndex(int i)
    method LuaNewState (line 76) | public IntPtr LuaNewState()
    method LuaOpenJit (line 81) | public void LuaOpenJit()
    method LuaClose (line 98) | public void LuaClose()
    method LuaNewThread (line 104) | public IntPtr LuaNewThread()
    method LuaAtPanic (line 109) | public IntPtr LuaAtPanic(IntPtr panic)
    method LuaGetTop (line 114) | public int LuaGetTop()
    method LuaSetTop (line 119) | public void LuaSetTop(int newTop)
    method LuaPushValue (line 124) | public void LuaPushValue(int idx)
    method LuaRemove (line 129) | public void LuaRemove(int index)
    method LuaInsert (line 134) | public void LuaInsert(int idx)
    method LuaReplace (line 139) | public void LuaReplace(int idx)
    method LuaCheckStack (line 144) | public bool LuaCheckStack(int args)
    method LuaXMove (line 149) | public void LuaXMove(IntPtr to, int n)
    method LuaIsNumber (line 154) | public bool LuaIsNumber(int idx)
    method LuaIsString (line 159) | public bool LuaIsString(int index)
    method LuaIsCFunction (line 164) | public bool LuaIsCFunction(int index)
    method LuaIsUserData (line 169) | public bool LuaIsUserData(int index)
    method LuaIsNil (line 174) | public bool LuaIsNil(int n)
    method LuaType (line 179) | public LuaTypes LuaType(int index)
    method LuaTypeName (line 184) | public string LuaTypeName(LuaTypes type)
    method LuaTypeName (line 189) | public string LuaTypeName(int idx)
    method LuaEqual (line 194) | public bool LuaEqual(int idx1, int idx2)
    method LuaRawEqual (line 199) | public bool LuaRawEqual(int idx1, int idx2)
    method LuaLessThan (line 204) | public bool LuaLessThan(int idx1, int idx2)
    method LuaToNumber (line 209) | public double LuaToNumber(int idx)
    method LuaToInteger (line 214) | public int LuaToInteger(int idx)
    method LuaToBoolean (line 219) | public bool LuaToBoolean(int idx)
    method LuaToString (line 224) | public string LuaToString(int index)
    method LuaToLString (line 237) | public IntPtr LuaToLString(int index, out int len)
    method LuaToCFunction (line 242) | public IntPtr LuaToCFunction(int idx)
    method LuaToUserData (line 247) | public IntPtr LuaToUserData(int idx)
    method LuaToThread (line 252) | public IntPtr LuaToThread(int idx)
    method LuaToPointer (line 257) | public IntPtr LuaToPointer(int idx)
    method LuaObjLen (line 262) | public int LuaObjLen(int index)
    method LuaPushNil (line 267) | public void LuaPushNil()
    method LuaPushNumber (line 272) | public void LuaPushNumber(double number)
    method LuaPushInteger (line 277) | public void LuaPushInteger(int n)
    method LuaPushLString (line 282) | public void LuaPushLString(byte[] str, int size)
    method LuaPushString (line 287) | public void LuaPushString(string str)
    method LuaPushCClosure (line 292) | public void LuaPushCClosure(IntPtr fn, int n)
    method LuaPushBoolean (line 297) | public void LuaPushBoolean(bool value)
    method LuaPushLightUserData (line 302) | public void LuaPushLightUserData(IntPtr udata)
    method LuaPushThread (line 307) | public int LuaPushThread()
    method LuaGetTable (line 312) | public void LuaGetTable(int idx)
    method LuaGetField (line 317) | public void LuaGetField(int index, string key)
    method LuaRawGet (line 322) | public void LuaRawGet(int idx)
    method LuaRawGetI (line 327) | public void LuaRawGetI(int tableIndex, int index)
    method LuaCreateTable (line 332) | public void LuaCreateTable(int narr = 0, int nec = 0)
    method LuaNewUserData (line 337) | public IntPtr LuaNewUserData(int size)
    method LuaGetMetaTable (line 342) | public int LuaGetMetaTable(int idx)
    method LuaGetEnv (line 347) | public void LuaGetEnv(int idx)
    method LuaSetTable (line 352) | public void LuaSetTable(int idx)
    method LuaSetField (line 357) | public void LuaSetField(int idx, string key)
    method LuaRawSet (line 362) | public void LuaRawSet(int idx)
    method LuaRawSetI (line 367) | public void LuaRawSetI(int tableIndex, int index)
    method LuaSetMetaTable (line 372) | public void LuaSetMetaTable(int objIndex)
    method LuaSetEnv (line 377) | public void LuaSetEnv(int idx)
    method LuaCall (line 382) | public void LuaCall(int nArgs, int nResults)
    method LuaPCall (line 387) | public int LuaPCall(int nArgs, int nResults, int errfunc)
    method LuaYield (line 392) | public int LuaYield(int nresults)
    method LuaResume (line 397) | public int LuaResume(int narg)
    method LuaStatus (line 402) | public int LuaStatus()
    method LuaGC (line 407) | public int LuaGC(LuaGCOptions what, int data = 0)
    method LuaNext (line 412) | public bool LuaNext(int index)
    method LuaConcat (line 417) | public void LuaConcat(int n)
    method LuaPop (line 422) | public void LuaPop(int amount)
    method LuaNewTable (line 427) | public void LuaNewTable()
    method LuaPushFunction (line 432) | public void LuaPushFunction(LuaCSFunction func)
    method lua_isfunction (line 438) | public bool lua_isfunction(int n)
    method lua_istable (line 443) | public bool lua_istable(int n)
    method lua_islightuserdata (line 448) | public bool lua_islightuserdata(int n)
    method lua_isnil (line 453) | public bool lua_isnil(int n)
    method lua_isboolean (line 458) | public bool lua_isboolean(int n)
    method lua_isthread (line 464) | public bool lua_isthread(int n)
    method lua_isnone (line 469) | public bool lua_isnone(int n)
    method lua_isnoneornil (line 474) | public bool lua_isnoneornil(int n)
    method LuaRawGlobal (line 479) | public void LuaRawGlobal(string name)
    method LuaSetGlobal (line 485) | public void LuaSetGlobal(string name)
    method LuaGetGlobal (line 490) | public void LuaGetGlobal(string name)
    method LuaOpenLibs (line 495) | public void LuaOpenLibs()
    method AbsIndex (line 500) | public int AbsIndex(int i)
    method LuaGetN (line 505) | public int LuaGetN(int i)
    method LuaCheckNumber (line 510) | public double LuaCheckNumber(int stackPos)
    method LuaCheckInteger (line 515) | public int LuaCheckInteger(int idx)
    method LuaCheckBoolean (line 520) | public bool LuaCheckBoolean(int stackPos)
    method LuaCheckLString (line 525) | public string LuaCheckLString(int numArg, out int len)
    method LuaLoadBuffer (line 530) | public int LuaLoadBuffer(byte[] buff, int size, string name)
    method LuaFindTable (line 535) | public IntPtr LuaFindTable(int idx, string fname, int szhint = 1)
    method LuaTypeError (line 540) | public int LuaTypeError(int stackPos, string tname, string t2 = null)
    method LuaDoString (line 545) | public bool LuaDoString(string chunk, string chunkName = "@LuaStatePtr...
    method LuaDoFile (line 559) | public bool LuaDoFile(string fileName)
    method LuaGetMetaTable (line 573) | public void LuaGetMetaTable(string meta)
    method LuaRef (line 578) | public int LuaRef(int t)
    method LuaGetRef (line 583) | public void LuaGetRef(int reference)
    method LuaUnRef (line 588) | public void LuaUnRef(int reference)
    method LuaRequire (line 593) | public int LuaRequire(string fileName)
    method ThrowLuaException (line 607) | public void ThrowLuaException(Exception e)
    method ToLuaRef (line 619) | public int ToLuaRef()
    method LuaUpdate (line 624) | public int LuaUpdate(float delta, float unscaled)
    method LuaLateUpdate (line 629) | public int LuaLateUpdate()
    method LuaFixedUpdate (line 634) | public int LuaFixedUpdate(float fixedTime)
    method OpenToLuaLibs (line 639) | public void OpenToLuaLibs()
    method ToLuaPushTraceback (line 645) | public void ToLuaPushTraceback()
    method ToLuaUnRef (line 650) | public void ToLuaUnRef(int reference)
    method LuaGetStack (line 655) | public int LuaGetStack(int level, ref Lua_Debug ar)
    method LuaGetInfo (line 660) | public int LuaGetInfo(string what, ref Lua_Debug ar)
    method LuaGetLocal (line 665) | public string LuaGetLocal(ref Lua_Debug ar, int n)
    method LuaSetLocal (line 670) | public string LuaSetLocal(ref Lua_Debug ar, int n)
    method LuaGetUpvalue (line 675) | public string LuaGetUpvalue(int funcindex, int n)
    method LuaSetUpvalue (line 680) | public string LuaSetUpvalue(int funcindex, int n)
    method LuaSetHook (line 685) | public int LuaSetHook(LuaHookFunc func, int mask, int count)
    method LuaGetHook (line 690) | public LuaHookFunc LuaGetHook()
    method LuaGetHookMask (line 695) | public  int LuaGetHookMask()
    method LuaGetHookCount (line 700) | public int LuaGetHookCount()

FILE: Assets/ToLua/Core/LuaStatic.cs
  class LuaStatic (line 28) | public static class LuaStatic
    method GetMetaReference (line 30) | public static int GetMetaReference(IntPtr L, Type t)
    method GetMissMetaReference (line 36) | public static int GetMissMetaReference(IntPtr L, Type t)
    method GetClassType (line 42) | public static Type GetClassType(IntPtr L, int reference)
    method GetFunction (line 48) | public static LuaFunction GetFunction(IntPtr L, int reference)
    method GetTable (line 54) | public static LuaTable GetTable(IntPtr L, int reference)
    method GetLuaThread (line 60) | public static LuaThread GetLuaThread(IntPtr L, int reference)
    method GetUnpackRayRef (line 66) | public static void GetUnpackRayRef(IntPtr L)
    method GetUnpackBounds (line 72) | public static void GetUnpackBounds(IntPtr L)
    method GetPackRay (line 78) | public static void GetPackRay(IntPtr L)
    method GetPackRaycastHit (line 84) | public static void GetPackRaycastHit(IntPtr L)
    method GetPackTouch (line 90) | public static void GetPackTouch(IntPtr L)
    method GetPackBounds (line 96) | public static void GetPackBounds(IntPtr L)
    method GetArrayMetatable (line 102) | public static int GetArrayMetatable(IntPtr L)
    method GetTypeMetatable (line 108) | public static int GetTypeMetatable(IntPtr L)
    method GetDelegateMetatable (line 114) | public static int GetDelegateMetatable(IntPtr L)
    method GetEventMetatable (line 120) | public static int GetEventMetatable(IntPtr L)
    method GetIterMetatable (line 126) | public static int GetIterMetatable(IntPtr L)
    method GetEnumObject (line 132) | public static int GetEnumObject(IntPtr L, System.Enum e, out object obj)
    method GetPreModule (line 139) | public static LuaCSFunction GetPreModule(IntPtr L, Type t)

FILE: Assets/ToLua/Core/LuaTable.cs
  class LuaTable (line 28) | public class LuaTable : LuaBaseRef
    method LuaTable (line 30) | public LuaTable(int reference, LuaState state)
    method RawGetIndex (line 129) | public T RawGetIndex<T>(int index)
    method RawSetIndex (line 148) | public void RawSetIndex<T>(int index, T value)
    method RawGet (line 166) | public V RawGet<K, V>(K key)
    method RawSet (line 186) | public void RawSet<K, V>(K key, V arg)
    method GetTable (line 205) | public T GetTable<T>(string key)
    method SetTable (line 225) | public void SetTable<T>(string key, T arg)
    method RawGetLuaFunction (line 244) | public LuaFunction RawGetLuaFunction(string key)
    method GetLuaFunction (line 270) | public LuaFunction GetLuaFunction(string key)
    method BeginCall (line 296) | bool BeginCall(string name, int top)
    method Call (line 305) | public void Call(string name)
    method Call (line 325) | public void Call<T1>(string name, T1 arg1)
    method Call (line 346) | public void Call<T1, T2>(string name, T1 arg1, T2 arg2)
    method Call (line 368) | public void Call<T1, T2, T3>(string name, T1 arg1, T2 arg2, T3 arg3)
    method Call (line 391) | public void Call<T1, T2, T3, T4>(string name, T1 arg1, T2 arg2, T3 arg...
    method Call (line 415) | public void Call<T1, T2, T3, T4, T5>(string name, T1 arg1, T2 arg2, T3...
    method Call (line 440) | public void Call<T1, T2, T3, T4, T5, T6>(string name, T1 arg1, T2 arg2...
    method Invoke (line 466) | public R1 Invoke<R1>(string name)
    method Invoke (line 490) | public R1 Invoke<T1, R1>(string name, T1 arg1)
    method Invoke (line 515) | public R1 Invoke<T1, T2, R1>(string name, T1 arg1, T2 arg2)
    method Invoke (line 541) | public R1 Invoke<T1, T2, T3, R1>(string name, T1 arg1, T2 arg2, T3 arg3)
    method Invoke (line 568) | public R1 Invoke<T1, T2, T3, T4, R1>(string name, T1 arg1, T2 arg2, T3...
    method Invoke (line 596) | public R1 Invoke<T1, T2, T3, T4, T5, R1>(string name, T1 arg1, T2 arg2...
    method Invoke (line 625) | public R1 Invoke<T1, T2, T3, T4, T5, T6, R1>(string name, T1 arg1, T2 ...
    method GetStringField (line 655) | public string GetStringField(string name)
    method AddTable (line 674) | public void AddTable(string name)
    method ToArray (line 693) | public object[] ToArray()
    method ToString (line 723) | public override string ToString()
    method ToArrayTable (line 731) | public LuaArrayTable ToArrayTable()
    method ToDictTable (line 736) | public LuaDictTable ToDictTable()
    method ToDictTable (line 741) | public LuaDictTable<K, V> ToDictTable<K, V>()
    method GetMetaTable (line 746) | public LuaTable GetMetaTable()
  class LuaArrayTable (line 771) | public class LuaArrayTable : IDisposable, IEnumerable<object>
    method LuaArrayTable (line 776) | public LuaArrayTable(LuaTable table)
    method Dispose (line 783) | public void Dispose()
    method ForEach (line 812) | public void ForEach(Action<object> action)
    method GetEnumerator (line 823) | public IEnumerator<object> GetEnumerator()
    method GetEnumerator (line 828) | IEnumerator IEnumerable.GetEnumerator()
    class Enumerator (line 833) | class Enumerator : IEnumerator<object>
      method Enumerator (line 840) | public Enumerator(LuaArrayTable list)
      method MoveNext (line 855) | public bool MoveNext()
      method Reset (line 864) | public void Reset()
      method Dispose (line 870) | public void Dispose()
  class LuaDictTable (line 881) | public class LuaDictTable : IDisposable, IEnumerable<DictionaryEntry>
    method LuaDictTable (line 886) | public LuaDictTable(LuaTable table)
    method Dispose (line 893) | public void Dispose()
    method ToHashtable (line 915) | public Hashtable ToHashtable()
    method GetEnumerator (line 929) | public IEnumerator<DictionaryEntry> GetEnumerator()
    method GetEnumerator (line 934) | IEnumerator IEnumerable.GetEnumerator()
    class Enumerator (line 939) | class Enumerator : IEnumerator<DictionaryEntry>
      method Enumerator (line 945) | public Enumerator(LuaDictTable list)
      method MoveNext (line 969) | public bool MoveNext()
      method Reset (line 986) | public void Reset()
      method Dispose (line 991) | public void Dispose()
      method Enumerator (line 1079) | public Enumerator(LuaDictTable<K, V> list)
      method MoveNext (line 1103) | public bool MoveNext()
      method Reset (line 1120) | public void Reset()
      method Dispose (line 1125) | public void Dispose()
    method LuaDictTable (line 1020) | public LuaDictTable(LuaTable table)
    method Dispose (line 1027) | public void Dispose()
    method ToDictionary (line 1049) | public Dictionary<K, V> ToDictionary()
    method GetEnumerator (line 1063) | public IEnumerator<LuaDictEntry<K, V>> GetEnumerator()
    method GetEnumerator (line 1068) | IEnumerator IEnumerable.GetEnumerator()
    class Enumerator (line 1073) | class Enumerator : IEnumerator<LuaDictEntry<K, V>>
      method Enumerator (line 945) | public Enumerator(LuaDictTable list)
      method MoveNext (line 969) | public bool MoveNext()
      method Reset (line 986) | public void Reset()
      method Dispose (line 991) | public void Dispose()
      method Enumerator (line 1079) | public Enumerator(LuaDictTable<K, V> list)
      method MoveNext (line 1103) | public bool MoveNext()
      method Reset (line 1120) | public void Reset()
      method Dispose (line 1125) | public void Dispose()
  type LuaDictEntry (line 1002) | public struct LuaDictEntry<K, V>
    method LuaDictEntry (line 1004) | public LuaDictEntry(K key, V value)
  class LuaDictTable (line 1015) | public class LuaDictTable<K, V> : IDisposable, IEnumerable<LuaDictEntry<...
    method LuaDictTable (line 886) | public LuaDictTable(LuaTable table)
    method Dispose (line 893) | public void Dispose()
    method ToHashtable (line 915) | public Hashtable ToHashtable()
    method GetEnumerator (line 929) | public IEnumerator<DictionaryEntry> GetEnumerator()
    method GetEnumerator (line 934) | IEnumerator IEnumerable.GetEnumerator()
    class Enumerator (line 939) | class Enumerator : IEnumerator<DictionaryEntry>
      method Enumerator (line 945) | public Enumerator(LuaDictTable list)
      method MoveNext (line 969) | public bool MoveNext()
      method Reset (line 986) | public void Reset()
      method Dispose (line 991) | public void Dispose()
      method Enumerator (line 1079) | public Enumerator(LuaDictTable<K, V> list)
      method MoveNext (line 1103) | public bool MoveNext()
      method Reset (line 1120) | public void Reset()
      method Dispose (line 1125) | public void Dispose()
    method LuaDictTable (line 1020) | public LuaDictTable(LuaTable table)
    method Dispose (line 1027) | public void Dispose()
    method ToDictionary (line 1049) | public Dictionary<K, V> ToDictionary()
    method GetEnumerator (line 1063) | public IEnumerator<LuaDictEntry<K, V>> GetEnumerator()
    method GetEnumerator (line 1068) | IEnumerator IEnumerable.GetEnumerator()
    class Enumerator (line 1073) | class Enumerator : IEnumerator<LuaDictEntry<K, V>>
      method Enumerator (line 945) | public Enumerator(LuaDictTable list)
      method MoveNext (line 969) | public bool MoveNext()
      method Reset (line 986) | public void Reset()
      method Dispose (line 991) | public void Dispose()
      method Enumerator (line 1079) | public Enumerator(LuaDictTable<K, V> list)
      method MoveNext (line 1103) | public bool MoveNext()
      method Reset (line 1120) | public void Reset()
      method Dispose (line 1125) | public void Dispose()

FILE: Assets/ToLua/Core/LuaThread.cs
  class LuaThread (line 26) | public class LuaThread : LuaBaseRef
    method LuaThread (line 28) | public LuaThread(int reference, LuaState state)
    method Resume (line 34) | protected int Resume(IntPtr L, int nArgs)
    method Resume (line 59) | public int Resume()
    method Resume (line 72) | public int Resume<T1>(T1 arg1)
    method Resume (line 86) | public int Resume<T1, T2>(T1 arg1, T2 arg2)
    method Resume (line 101) | public int Resume<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3)
    method Resume (line 117) | public int Resume<R1>(out R1 ret1)
    method Resume (line 138) | public int Resume<T1, R1>(T1 arg1, out R1 ret1)
    method Resume (line 160) | public int Resume<T1, T2, R1>(T1 arg1, T2 arg2, out R1 ret1)
    method Resume (line 183) | public int Resume<T1, T2, T3, R1>(T1 arg1, T2 arg2, T3 arg3, out R1 ret1)

FILE: Assets/ToLua/Core/LuaUnityLibs.cs
  class LuaUnityLibs (line 28) | public sealed class LuaUnityLibs
    method OpenLibs (line 30) | public static void OpenLibs(IntPtr L)
    method OpenLuaLibs (line 36) | public static void OpenLuaLibs(IntPtr L)
    method InitMathf (line 58) | static void InitMathf(IntPtr L)
    method InitLayer (line 67) | static void InitLayer(IntPtr L)
    method PerlinNoise (line 86) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method SetOutMethods (line 103) | static void SetOutMethods(IntPtr L, string table, LuaCSFunction getOut...
    method GetOutVector3 (line 112) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetOutVector2 (line 119) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetOutVector4 (line 126) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetOutColor (line 133) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetOutColor32 (line 139) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetOutQuaternion (line 146) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetOutRay (line 153) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetOutBounds (line 160) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetOutRaycastHit (line 167) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetOutTouch (line 174) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetOutLayerMask (line 181) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/Core/LuaValueType.cs
  type LuaValueType (line 27) | public partial struct LuaValueType
    method LuaValueType (line 47) | public LuaValueType(int value)
    method ToString (line 62) | public override string ToString()
  class LuaValueTypeName (line 68) | public static class LuaValueTypeName
    method LuaValueTypeName (line 72) | static LuaValueTypeName()
    method Get (line 88) | static public string Get(int type)

FILE: Assets/ToLua/Core/ObjectPool.cs
  class LuaObjectPool (line 28) | public class LuaObjectPool
    class PoolNode (line 30) | class PoolNode
      method PoolNode (line 35) | public PoolNode(int index, object obj)
    method LuaObjectPool (line 49) | public LuaObjectPool()
    method Clear (line 71) | public void Clear()
    method Add (line 78) | public int Add(object obj)
    method TryGetValue (line 98) | public object TryGetValue(int index)
    method Remove (line 108) | public object Remove(int pos)
    method Destroy (line 123) | public object Destroy(int pos)
    method StepCollect (line 135) | public void StepCollect(Action<object, int> collectListener)
    method Replace (line 160) | public object Replace(int pos, object o)

FILE: Assets/ToLua/Core/ObjectTranslator.cs
  class ObjectTranslator (line 29) | public class ObjectTranslator
    class DelayGC (line 31) | private class DelayGC
      method DelayGC (line 33) | public DelayGC(int id, UnityEngine.Object obj, float time)
    class CompareObject (line 45) | private class CompareObject : IEqualityComparer<object>
      method Equals (line 47) | public new bool Equals(object x, object y)
      method GetHashCode (line 52) | public int GetHashCode(object obj)
    method ObjectTranslator (line 68) | public ObjectTranslator()
    method AddObject (line 77) | public int AddObject(object obj)
    method Get (line 89) | public static ObjectTranslator Get(IntPtr L)
    method RemoveObject (line 99) | void RemoveObject(object o, int udata)
    method RemoveObject (line 110) | public void RemoveObject(int udata)
    method GetObject (line 129) | public object GetObject(int udata)
    method Destroy (line 135) | public void Destroy(int udata)
    method DelayDestroy (line 154) | public void DelayDestroy(int id, float time)
    method Getudata (line 164) | public bool Getudata(object o, out int index)
    method Destroyudata (line 170) | public void Destroyudata(int udata)
    method SetBack (line 175) | public void SetBack(int index, object o)
    method RemoveFromGCList (line 180) | bool RemoveFromGCList(int id)
    method DestroyUnityObject (line 194) | void DestroyUnityObject(int udata, UnityEngine.Object obj)
    method Collect (line 213) | public void Collect()
    method StepCollect (line 238) | public void StepCollect()
    method Dispose (line 243) | public void Dispose()

FILE: Assets/ToLua/Core/ToLua.cs
  class ToLua (line 39) | public static class ToLua
    method ToLua (line 60) | static ToLua()
    method OpenLibs (line 73) | public static void OpenLibs(IntPtr L)
    method AddLuaLoader (line 124) | static void AddLuaLoader(IntPtr L)
    method Panic (line 140) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Print (line 147) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Loader (line 214) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method DoFile (line 249) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method LoadFile (line 287) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method IsNull (line 318) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method BufferToString (line 344) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetClassType (line 378) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method TableToArray (line 407) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method op_ToString (line 430) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetConsoleWindowListView (line 448) | private static bool GetConsoleWindowListView()
    method GetListViewRowCount (line 485) | private static string GetListViewRowCount(ref int line)
    method GetToLuaInstanceID (line 522) | static void GetToLuaInstanceID()
    method OnOpenAsset (line 534) | [OnOpenAssetAttribute(0)]
    method ToString (line 607) | public static string ToString(IntPtr L, int stackPos)
    method ToObject (line 622) | public static object ToObject(IntPtr L, int stackPos)
    method ToLuaFunction (line 635) | public static LuaFunction ToLuaFunction(IntPtr L, int stackPos)
    method ToLuaTable (line 650) | public static LuaTable ToLuaTable(IntPtr L, int stackPos)
    method ToLuaThread (line 665) | public static LuaThread ToLuaThread(IntPtr L, int stackPos)
    method ToVector3 (line 680) | public static Vector3 ToVector3(IntPtr L, int stackPos)
    method ToVector4 (line 687) | public static Vector4 ToVector4(IntPtr L, int stackPos)
    method ToVector2 (line 694) | public static Vector2 ToVector2(IntPtr L, int stackPos)
    method ToQuaternion (line 701) | public static Quaternion ToQuaternion(IntPtr L, int stackPos)
    method ToColor (line 708) | public static Color ToColor(IntPtr L, int stackPos)
    method ToColor32 (line 715) | public static Color32 ToColor32(IntPtr L, int stackPos)
    method ToRay (line 722) | public static Ray ToRay(IntPtr L, int stackPos)
    method ToBounds (line 748) | public static Bounds ToBounds(IntPtr L, int stackPos)
    method ToLayerMask (line 770) | public static LayerMask ToLayerMask(IntPtr L, int stackPos)
    method ToVarObject (line 775) | public static object ToVarObject(IntPtr L, int stackPos)
    method ToVarObject (line 813) | public static object ToVarObject(IntPtr L, int stackPos, Type t)
    method ToVarTable (line 827) | public static object ToVarTable(IntPtr L, int stackPos)
    method ToNullable (line 845) | public static Nullable<T> ToNullable<T>(IntPtr L, int stackPos) where ...
    method ToObjectVec3 (line 855) | static object ToObjectVec3(IntPtr L, int stackPos)
    method ToObjectQuat (line 860) | static object ToObjectQuat(IntPtr L, int stackPos)
    method ToObjectColor (line 865) | static object ToObjectColor(IntPtr L, int stackPos)
    method ToObjectColor32 (line 869) | static object ToObjectColor32(IntPtr L, int stackPos)
    method ToObjectVec4 (line 874) | static object ToObjectVec4(IntPtr L, int stackPos)
    method ToObjectVec2 (line 879) | static object ToObjectVec2(IntPtr L, int stackPos)
    method ToObjectRay (line 884) | static object ToObjectRay(IntPtr L, int stackPos)
    method ToObjectLayerMask (line 889) | static object ToObjectLayerMask(IntPtr L, int stackPos)
    method ToObjectBounds (line 894) | static object ToObjectBounds(IntPtr L, int stackPos)
    method ToIEnumerator (line 899) | public static IEnumerator ToIEnumerator(IntPtr L, int stackPos)
    method CheckLuaFunction (line 909) | public static LuaFunction CheckLuaFunction(IntPtr L, int stackPos)
    method CheckLuaTable (line 928) | public static LuaTable CheckLuaTable(IntPtr L, int stackPos)
    method CheckLuaThread (line 947) | public static LuaThread CheckLuaThread(IntPtr L, int stackPos)
    method CheckLuaBaseRef (line 966) | public static LuaBaseRef CheckLuaBaseRef(IntPtr L, int stackPos)
    method CheckString (line 995) | public static string CheckString(IntPtr L, int stackPos)
    method CheckIntPtr (line 1035) | public static IntPtr CheckIntPtr(IntPtr L, int stackPos)
    method CheckMonoType (line 1051) | static public Type CheckMonoType(IntPtr L, int stackPos)
    method CheckIter (line 1081) | public static IEnumerator CheckIter(IntPtr L, int stackPos)
    method CheckObject (line 1119) | public static object CheckObject(IntPtr L, int stackPos)
    method CheckObject (line 1137) | public static object CheckObject(IntPtr L, int stackPos, Type type)
    method CheckObject (line 1169) | public static object CheckObject<T>(IntPtr L, int stackPos) where T : ...
    method CheckVector3 (line 1200) | static public Vector3 CheckVector3(IntPtr L, int stackPos)
    method CheckQuaternion (line 1215) | static public Quaternion CheckQuaternion(IntPtr L, int stackPos)
    method CheckVector2 (line 1230) | static public Vector2 CheckVector2(IntPtr L, int stackPos)
    method CheckVector4 (line 1245) | static public Vector4 CheckVector4(IntPtr L, int stackPos)
    method CheckColor (line 1260) | static public Color CheckColor(IntPtr L, int stackPos)
    method CheckColor32 (line 1275) | static public Color32 CheckColor32(IntPtr L, int stackPos)
    method CheckRay (line 1289) | static public Ray CheckRay(IntPtr L, int stackPos)
    method CheckBounds (line 1302) | static public Bounds CheckBounds(IntPtr L, int stackPos)
    method CheckLayerMask (line 1315) | static public LayerMask CheckLayerMask(IntPtr L, int stackPos)
    method CheckValue (line 1328) | public static T CheckValue<T>(IntPtr L, int stackPos) where T : struct
    method CheckNullable (line 1333) | public static Nullable<T> CheckNullable<T>(IntPtr L, int stackPos) whe...
    method CheckVarObject (line 1343) | public static object CheckVarObject(IntPtr L, int stackPos, Type t)
    method CheckUnityObject (line 1485) | public static UnityEngine.Object CheckUnityObject(IntPtr L, int stackP...
    method CheckTrackedReference (line 1527) | public static UnityEngine.TrackedReference CheckTrackedReference(IntPt...
    method CheckObjectArray (line 1569) | public static object[] CheckObjectArray(IntPtr L, int stackPos)
    method CheckObjectArray (line 1597) | public static T[] CheckObjectArray<T>(IntPtr L, int stackPos) where T ...
    method CheckStructArray (line 1633) | public static T[] CheckStructArray<T>(IntPtr L, int stackPos) where T ...
    method CheckCharBuffer (line 1667) | public static char[] CheckCharBuffer(IntPtr L, int stackPos)
    method CheckByteBuffer (line 1686) | public static byte[] CheckByteBuffer(IntPtr L, int stackPos)
    method CheckNumberArray (line 1708) | public static T[] CheckNumberArray<T>(IntPtr L, int stackPos) where T ...
    method CheckBoolArray (line 1746) | public static bool[] CheckBoolArray(IntPtr L, int stackPos)
    method CheckStringArray (line 1783) | public static string[] CheckStringArray(IntPtr L, int stackPos)
    method CheckGenericObject (line 1819) | public static object CheckGenericObject(IntPtr L, int stackPos, Type t...
    method CheckGenericObject (line 1836) | public static object CheckGenericObject(IntPtr L, int stackPos, Type t...
    method CheckGenericObject (line 1855) | public static object CheckGenericObject(IntPtr L, int stackPos, Type t...
    method ToParamsObject (line 1869) | public static object[] ToParamsObject(IntPtr L, int stackPos, int count)
    method ToParamsObject (line 1887) | public static T[] ToParamsObject<T>(IntPtr L, int stackPos, int count)
    method ToParamsString (line 1905) | public static string[] ToParamsString(IntPtr L, int stackPos, int count)
    method ToParamsNumber (line 1923) | public static T[] ToParamsNumber<T>(IntPtr L, int stackPos, int count)...
    method ToParamsChar (line 1941) | public static char[] ToParamsChar(IntPtr L, int stackPos, int count)
    method CheckParamsBool (line 1959) | public static bool[] CheckParamsBool(IntPtr L, int stackPos, int count)
    method CheckParamsNumber (line 1977) | public static T[] CheckParamsNumber<T>(IntPtr L, int stackPos, int cou...
    method CheckParamsChar (line 1995) | public static char[] CheckParamsChar(IntPtr L, int stackPos, int count)
    method CheckParamsString (line 2013) | public static string[] CheckParamsString(IntPtr L, int stackPos, int c...
    method CheckParamsObject (line 2031) | public static T[] CheckParamsObject<T>(IntPtr L, int stackPos, int count)
    method ToCharBuffer (line 2049) | static public char[] ToCharBuffer(IntPtr L, int stackPos)
    method ToByteBuffer (line 2067) | static public byte[] ToByteBuffer(IntPtr L, int stackPos)
    method ToNumberArray (line 2088) | public static T[] ToNumberArray<T>(IntPtr L, int stackPos) where T : s...
    method ToBoolArray (line 2124) | public static bool[] ToBoolArray(IntPtr L, int stackPos)
    method ToStringArray (line 2161) | public static string[] ToStringArray(IntPtr L, int stackPos)
    method ToObjectArray (line 2196) | public static object[] ToObjectArray(IntPtr L, int stackPos)
    method ToObjectArray (line 2224) | public static T[] ToObjectArray<T>(IntPtr L, int stackPos) where T : c...
    method ToStructArray (line 2260) | public static T[] ToStructArray<T>(IntPtr L, int stackPos) where T : s...
    method Push (line 2296) | public static void Push(IntPtr L, Vector3 v3)
    method Push (line 2301) | public static void Push(IntPtr L, Vector2 v2)
    method Push (line 2306) | public static void Push(IntPtr L, Vector4 v4)
    method Push (line 2311) | public static void Push(IntPtr L, Quaternion q)
    method Push (line 2316) | public static void Push(IntPtr L, Color clr)
    method Push (line 2321) | public static void Push(IntPtr L, Color32 clr)
    method Push (line 2327) | public static void Push(IntPtr L, Ray ray)
    method Push (line 2340) | public static void Push(IntPtr L, Bounds bound)
    method Push (line 2353) | public static void Push(IntPtr L, RaycastHit hit)
    method Push (line 2370) | public static void Push(IntPtr L, RaycastHit hit, int flag)
    method Push (line 2428) | public static void Push(IntPtr L, Touch t)
    method Push (line 2433) | public static void Push(IntPtr L, Touch t, int flag)
    method PushLayerMask (line 2476) | public static void PushLayerMask(IntPtr L, LayerMask l)
    method Push (line 2481) | public static void Push(IntPtr L, LuaByteBuffer bb)
    method PushByteBuffer (line 2486) | public static void PushByteBuffer(IntPtr L, byte[] buffer)
    method Push (line 2491) | public static void Push(IntPtr L, Array array)
    method Push (line 2504) | public static void Push(IntPtr L, LuaBaseRef lbr)
    method Push (line 2516) | public static void Push(IntPtr L, Type t)
    method Push (line 2529) | public static void Push(IntPtr L, Delegate ev)
    method Push (line 2542) | public static void Push(IntPtr L, EventObject ev)
    method Push (line 2555) | public static void Push(IntPtr L, IEnumerator iter)
    method Push (line 2584) | public static void Push(IntPtr L, System.Enum e)
    method PushOut (line 2590) | public static void PushOut<T>(IntPtr L, LuaOut<T> lo)
    method PushStruct (line 2597) | public static void PushStruct(IntPtr L, object o)
    method PushValue (line 2624) | public static void PushValue<T>(IntPtr L, T v) where T : struct
    method PusNullable (line 2629) | public static void PusNullable<T>(IntPtr L, Nullable<T> v) where T : s...
    method PushUserData (line 2640) | public static void PushUserData(IntPtr L, object o, int reference)
    method LuaPCall (line 2659) | static int LuaPCall(IntPtr L, LuaCSFunction func)
    method LoadPreType (line 2676) | public static int LoadPreType(IntPtr L, Type type)
    method PushUserObject (line 2698) | static void PushUserObject(IntPtr L, object o)
    method Push (line 2711) | public static void Push(IntPtr L, UnityEngine.Object obj)
    method Push (line 2723) | public static void Push(IntPtr L, UnityEngine.TrackedReference obj)
    method PushSealed (line 2735) | public static void PushSealed<T>(IntPtr L, T o)
    method PushObject (line 2754) | public static void PushObject(IntPtr L, object o)
    method Push (line 2778) | public static void Push(IntPtr L, nil obj)
    method Push (line 2784) | public static void Push(IntPtr L, object obj)
    method SetBack (line 2989) | public static void SetBack(IntPtr L, int stackPos, object o)
    method Destroy (line 3000) | public static int Destroy(IntPtr L)
    method CheckArgsCount (line 3008) | public static void CheckArgsCount(IntPtr L, string method, int count)
    method CheckArgsCount (line 3018) | public static void CheckArgsCount(IntPtr L, int count)
    method CheckDelegate (line 3028) | public static Delegate CheckDelegate(Type t, IntPtr L, int stackPos)
    method CheckDelegate (line 3048) | public static Delegate CheckDelegate<T>(IntPtr L, int stackPos)

FILE: Assets/ToLua/Core/TypeChecker.cs
  class TypeChecker (line 28) | public static class TypeChecker
    method TypeChecker (line 32) | static TypeChecker()
    method IsValueType (line 50) | public static bool IsValueType(Type t)
    method CheckTypes (line 55) | public static bool CheckTypes(IntPtr L, int begin, Type type0)
    method CheckTypes (line 60) | public static bool CheckTypes(IntPtr L, int begin, Type type0, Type ty...
    method CheckTypes (line 65) | public static bool CheckTypes(IntPtr L, int begin, Type type0, Type ty...
    method CheckTypes (line 70) | public static bool CheckTypes(IntPtr L, int begin, Type type0, Type ty...
    method CheckTypes (line 75) | public static bool CheckTypes(IntPtr L, int begin, Type type0, Type ty...
    method CheckTypes (line 80) | public static bool CheckTypes(IntPtr L, int begin, Type type0, Type ty...
    method CheckTypes (line 86) | public static bool CheckTypes(IntPtr L, int begin, Type type0, Type ty...
    method CheckTypes (line 92) | public static bool CheckTypes(IntPtr L, int begin, Type type0, Type ty...
    method CheckTypes (line 98) | public static bool CheckTypes(IntPtr L, int begin, Type type0, Type ty...
    method CheckTypes (line 104) | public static bool CheckTypes(IntPtr L, int begin, Type type0, Type ty...
    method CheckTypes (line 110) | public static bool CheckTypes(IntPtr L, int begin, params Type[] types)
    method CheckParamsType (line 123) | public static bool CheckParamsType(IntPtr L, Type t, int begin, int co...
    method IsNilType (line 141) | static bool IsNilType(Type t)
    method IsNullable (line 156) | public static bool IsNullable(Type t)
    method GetNullableType (line 166) | public static Type GetNullableType(Type t)
    method CheckType (line 177) | public static bool CheckType(IntPtr L, Type type, int pos)
    method ChangeType (line 215) | public static T ChangeType<T>(object temp, Type type)
    method ChangeType (line 228) | public static object ChangeType(object temp, Type type)
    method IsMatchUserData (line 245) | static bool IsMatchUserData(IntPtr L, Type t, int pos)
    method IsNumberType (line 282) | public static bool IsNumberType(Type t)
    method IsUserTable (line 297) | public static bool IsUserTable(Type t, IntPtr L, int pos)
    method CheckTypes (line 327) | public static bool CheckTypes<T1>(IntPtr L, int pos)
    method CheckTypes (line 332) | public static bool CheckTypes<T1, T2>(IntPtr L, int pos)
    method CheckTypes (line 337) | public static bool CheckTypes<T1, T2, T3>(IntPtr L, int pos)
    method CheckTypes (line 342) | public static bool CheckTypes<T1, T2, T3, T4>(IntPtr L, int pos)
    method CheckTypes (line 347) | public static bool CheckTypes<T1, T2, T3, T4, T5>(IntPtr L, int pos)
    method CheckTypes (line 352) | public static bool CheckTypes<T1, T2, T3, T4, T5, T6>(IntPtr L, int pos)
    method CheckTypes (line 358) | public static bool CheckTypes<T1, T2, T3, T4, T5, T6, T7>(IntPtr L, in...
    method CheckTypes (line 364) | public static bool CheckTypes<T1, T2, T3, T4, T5, T6, T7, T8>(IntPtr L...
    method CheckTypes (line 370) | public static bool CheckTypes<T1, T2, T3, T4, T5, T6, T7, T8, T9>(IntP...
    method CheckTypes (line 376) | public static bool CheckTypes<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>...
    method CheckTypes (line 382) | public static bool CheckTypes<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,...
    method CheckTypes (line 389) | public static bool CheckTypes<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,...
    method CheckParamsType (line 396) | public static bool CheckParamsType<T>(IntPtr L, int begin, int count)
    method CheckDelegateType (line 414) | static public bool CheckDelegateType(Type type, IntPtr L, int pos)
    method CheckEnumType (line 437) | static public bool CheckEnumType(Type type, IntPtr L, int pos)

FILE: Assets/ToLua/Core/TypeTraits.cs
  class TypeTraits (line 28) | public static class TypeTraits<T>
    method Init (line 39) | static public void Init(Func<IntPtr, int, bool> check)
    method GetTypeName (line 47) | static public string GetTypeName()
    method GetLuaReference (line 57) | static public int GetLuaReference(IntPtr L)
    method DefaultCheck (line 78) | static bool DefaultCheck(IntPtr L, int pos)
    method IsNilType (line 95) | static bool IsNilType()
    method IsUserData (line 118) | static bool IsUserData(IntPtr L, int pos)
    method IsUserTable (line 141) | static bool IsUserTable(IntPtr L, int pos)
  class DelegateTraits (line 165) | public static class DelegateTraits<T>
    method Init (line 169) | static public void Init(DelegateFactory.DelegateCreate func)
    method Create (line 174) | static public Delegate Create(LuaFunction func)
    method Create (line 203) | static public Delegate Create(LuaFunction func, LuaTable self)
  class StackTraits (line 233) | public static class StackTraits<T>
    method Init (line 239) | static public void Init(Action<IntPtr, T> push, Func<IntPtr, int, T> c...
    method SelectPush (line 257) | static Action<IntPtr, T> SelectPush()
    method PushValue (line 273) | static void PushValue(IntPtr L, T o)
    method PushObject (line 278) | static void PushObject(IntPtr L, T o)
    method PushArray (line 283) | static void PushArray(IntPtr L, T array)
    method DefaultTo (line 296) | static T DefaultTo(IntPtr L, int pos)
    method DefaultCheck (line 301) | static T DefaultCheck(IntPtr L, int stackPos)

FILE: Assets/ToLua/Editor/Extend/ToLua_LuaInterface_EventObject.cs
  class ToLua_LuaInterface_EventObject (line 4) | public class ToLua_LuaInterface_EventObject

FILE: Assets/ToLua/Editor/Extend/ToLua_LuaInterface_LuaConstructor.cs
  class ToLua_LuaInterface_LuaConstructor (line 4) | public class ToLua_LuaInterface_LuaConstructor
    method Destroy (line 31) | [UseDefinedAttribute]
    method Call (line 37) | [UseDefinedAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_LuaInterface_LuaField.cs
  class ToLua_LuaInterface_LuaField (line 4) | public class ToLua_LuaInterface_LuaField
    method Set (line 28) | [UseDefinedAttribute]
    method Get (line 34) | [UseDefinedAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_LuaInterface_LuaMethod.cs
  class ToLua_LuaInterface_LuaMethod (line 4) | public class ToLua_LuaInterface_LuaMethod
    method Call (line 31) | [UseDefinedAttribute]
    method Destroy (line 37) | [UseDefinedAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_LuaInterface_LuaProperty.cs
  class ToLua_LuaInterface_LuaProperty (line 4) | public class ToLua_LuaInterface_LuaProperty
    method Set (line 29) | [UseDefinedAttribute]
    method Get (line 35) | [UseDefinedAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_System_Delegate.cs
  class ToLua_System_Delegate (line 4) | public class ToLua_System_Delegate
    method Equals (line 108) | public override bool Equals(object other)
    method GetHashCode (line 113) | public override int GetHashCode()
    method Destroy (line 134) | [UseDefinedAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_System_Enum.cs
  class ToLua_System_Enum (line 4) | public class ToLua_System_Enum
    method ToInt (line 82) | [UseDefinedAttribute]
    method ToObject (line 87) | [UseDefinedAttribute]
    method Parse (line 93) | [UseDefinedAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_System_Object.cs
  class ToLua_System_Object (line 4) | public class ToLua_System_Object
    method Destroy (line 8) | [UseDefinedAttribute]
    method op_Equality (line 13) | public static bool op_Equality(Object x, Object y)

FILE: Assets/ToLua/Editor/Extend/ToLua_System_String.cs
  class ToLua_System_String (line 5) | public class ToLua_System_String
    method ToLua_System_String (line 29) | [UseDefinedAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_System_Type.cs
  class ToLua_System_Type (line 5) | public class ToLua_System_Type
    method GetEvent (line 7) | [NoToLuaAttribute]
    method GetEvent (line 13) | [NoToLuaAttribute]
    method GetEvents (line 19) | [NoToLuaAttribute]
    method GetEvents (line 25) | [NoToLuaAttribute]
    method GetMethod (line 31) | [NoToLuaAttribute]
    method GetMethod (line 37) | [NoToLuaAttribute]
    method GetMethod (line 43) | [NoToLuaAttribute]
    method GetMethod (line 49) | [NoToLuaAttribute]
    method GetMethod (line 55) | [NoToLuaAttribute]
    method GetMethod (line 61) | [NoToLuaAttribute]
    method GetMethods (line 67) | [NoToLuaAttribute]
    method GetMethods (line 73) | [NoToLuaAttribute]
    method GetProperties (line 79) | [NoToLuaAttribute]
    method GetProperties (line 85) | [NoToLuaAttribute]
    method GetProperty (line 91) | [NoToLuaAttribute]
    method GetProperty (line 97) | [NoToLuaAttribute]
    method GetProperty (line 103) | [NoToLuaAttribute]
    method GetProperty (line 109) | [NoToLuaAttribute]
    method GetProperty (line 115) | [NoToLuaAttribute]
    method GetProperty (line 121) | [NoToLuaAttribute]
    method GetProperty (line 127) | [NoToLuaAttribute]
    method GetField (line 133) | [NoToLuaAttribute]
    method GetField (line 139) | [NoToLuaAttribute]
    method GetFields (line 145) | [NoToLuaAttribute]
    method GetFields (line 151) | [NoToLuaAttribute]
    method GetConstructor (line 157) | [NoToLuaAttribute]
    method GetConstructor (line 163) | [NoToLuaAttribute]
    method GetConstructor (line 169) | [NoToLuaAttribute]
    method GetConstructors (line 175) | [NoToLuaAttribute]
    method GetConstructors (line 181) | [NoToLuaAttribute]
    method GetMember (line 187) | [NoToLuaAttribute]
    method GetMember (line 193) | [NoToLuaAttribute]
    method GetMember (line 199) | [NoToLuaAttribute]
    method GetMembers (line 205) | [NoToLuaAttribute]
    method GetMembers (line 211) | [NoToLuaAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_UnityEngine_GameObject.cs
  class ToLua_UnityEngine_GameObject (line 6) | public class ToLua_UnityEngine_GameObject
    method SendMessage (line 324) | [UseDefinedAttribute]
    method SendMessageUpwards (line 329) | [UseDefinedAttribute]
    method BroadcastMessage (line 334) | [UseDefinedAttribute]
    method AddComponent (line 340) | [UseDefinedAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_UnityEngine_Input.cs
  class ToLua_UnityEngine_Input (line 4) | public class ToLua_UnityEngine_Input
    method GetTouch (line 20) | [UseDefinedAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_UnityEngine_Object.cs
  class ToLua_UnityEngine_Object (line 5) | public class ToLua_UnityEngine_Object
    method Destroy (line 203) | [UseDefinedAttribute]
    method DestroyImmediate (line 209) | [UseDefinedAttribute]
    method DestroyObject (line 215) | [NoToLuaAttribute]
    method DestroyObject (line 221) | [NoToLuaAttribute]
    method Instantiate (line 227) | [UseDefinedAttribute]

FILE: Assets/ToLua/Editor/Extend/ToLua_UnityEngine_RectTransform.cs
  class ToLua_UnityEngine_RectTransform (line 5) | public class ToLua_UnityEngine_RectTransform
    method GetLocalCorners (line 27) | [OverrideDefinedAttribute]
    method GetWorldCorners (line 33) | [OverrideDefinedAttribute]

FILE: Assets/ToLua/Editor/ToLuaExport.cs
  type MetaOp (line 35) | public enum MetaOp
  type ObjAmbig (line 48) | public enum ObjAmbig
  class DelegateType (line 56) | public class DelegateType
    method DelegateType (line 64) | public DelegateType(Type t)
    method SetAbrName (line 71) | public DelegateType SetAbrName(string str)
  class ToLuaExport (line 78) | public static class ToLuaExport
    class _MethodBase (line 172) | class _MethodBase
      method _MethodBase (line 218) | public _MethodBase(MethodBase m, int argCount = -1)
      method GetParameters (line 227) | public ParameterInfo[] GetParameters()
      method GetParamsCount (line 232) | public int GetParamsCount()
      method GetEqualParamsCount (line 238) | public int GetEqualParamsCount(_MethodBase b)
      method GenParamTypes (line 279) | public string GenParamTypes(int offset = 0)
      method HasSetIndex (line 321) | public bool HasSetIndex()
      method HasGetIndex (line 341) | public bool HasGetIndex()
      method GetReturnType (line 361) | public Type GetReturnType()
      method GetTotalName (line 373) | public string GetTotalName()
      method ProcessParams (line 402) | public int ProcessParams(int tab, bool beConstruct, int checkTypePos)
      method IsByteBuffer (line 620) | bool IsByteBuffer()
    method IsMemberFilter (line 644) | public static bool IsMemberFilter(MemberInfo mi)
    method IsMemberFilter (line 667) | public static bool IsMemberFilter(Type t)
    method ToLuaExport (line 673) | static ToLuaExport()
    method Clear (line 678) | public static void Clear()
    method GetOp (line 707) | private static MetaOp GetOp(string name)
    method GenBaseOpFunction (line 742) | static void GenBaseOpFunction(List<_MethodBase> list)
    method Generate (line 772) | public static void Generate(string dir)
    method BeDropMethodType (line 827) | static bool BeDropMethodType(MethodInfo md)
    method IsDelegateType (line 840) | public static bool IsDelegateType(Type t)
    method BeginCodeGen (line 855) | static void BeginCodeGen()
    method EndCodeGen (line 861) | static void EndCodeGen(string dir)
    method InitMethods (line 867) | static void InitMethods()
    method InitPropertyList (line 1008) | static void InitPropertyList()
    method SaveFile (line 1099) | static void SaveFile(string file)
    method GetMethodName (line 1127) | static string GetMethodName(MethodBase md)
    method HasGetIndex (line 1148) | static bool HasGetIndex(MemberInfo md)
    method HasSetIndex (line 1168) | static bool HasSetIndex(MemberInfo md)
    method IsThisArray (line 1188) | static bool IsThisArray(MethodBase md, int count)
    method GenRegisterFuncItems (line 1205) | static void GenRegisterFuncItems()
    method GenRegisterOpItems (line 1262) | static void GenRegisterOpItems()
    method IsItemThis (line 1300) | static bool IsItemThis(PropertyInfo info)
    method GenRegisterVariables (line 1319) | static void GenRegisterVariables()
    method GenRegisterEventTypes (line 1386) | static void GenRegisterEventTypes()
    method GenRegisterFunction (line 1417) | static void GenRegisterFunction()
    method IsParams (line 1477) | static bool IsParams(ParameterInfo param)
    method GenFunction (line 1482) | static void GenFunction(_MethodBase m)
    method IsGenericConstraintType (line 1523) | static bool IsGenericConstraintType(Type t)
    method IsGenericConstraints (line 1550) | static bool IsGenericConstraints(Type[] constraints)
    method IsGenericMethod (line 1563) | static bool IsGenericMethod(MethodBase md)
    method GenFunctions (line 1603) | static void GenFunctions()
    method IsSealedType (line 1646) | static bool IsSealedType(Type t)
    method IsIEnumerator (line 1661) | static bool IsIEnumerator(Type t)
    method GetPushFunction (line 1681) | static string GetPushFunction(Type t, bool isByteBuffer = false)
    method DefaultConstruct (line 1723) | static void DefaultConstruct()
    method GetCountStr (line 1734) | static string GetCountStr(int count)
    method GenOutFunction (line 1744) | static void GenOutFunction()
    method GetDefalutParamCount (line 1759) | static int GetDefalutParamCount(MethodBase md)
    method InitCtorList (line 1775) | static void InitCtorList()
    method GenConstructFunction (line 1844) | static void GenConstructFunction()
    method GenItemPropertyFunction (line 1984) | static void GenItemPropertyFunction()
    method GetOptionalParamPos (line 2081) | static int GetOptionalParamPos(ParameterInfo[] infos)
    method Is64bit (line 2094) | static bool Is64bit(Type t)
    method Compare (line 2099) | static int Compare(_MethodBase lhs, _MethodBase rhs)
    method HasOptionalParam (line 2230) | static bool HasOptionalParam(ParameterInfo[] infos)
    method CheckObject (line 2243) | static void CheckObject(string head, Type type, string className, int ...
    method ToObject (line 2270) | static void ToObject(string head, Type type, string className, int pos)
    method BeginTry (line 2282) | static void BeginTry()
    method EndTry (line 2288) | static void EndTry()
    method GetRefBaseType (line 2297) | static Type GetRefBaseType(Type argType)
    method ProcessArg (line 2307) | static void ProcessArg(Type varType, string head, string arg, int stac...
    method GetMethodType (line 2597) | static int GetMethodType(MethodBase md, out PropertyInfo pi)
    method GetGenericBaseType (line 2633) | static Type GetGenericBaseType(MethodBase md, Type t)
    method IsNumberEnum (line 2650) | static bool IsNumberEnum(Type t)
    method GenPushStr (line 2665) | static void GenPushStr(Type t, string arg, string head, bool isByteBuf...
    method CompareParmsCount (line 2713) | static bool CompareParmsCount(_MethodBase l, _MethodBase r)
    method CompareMethod (line 2748) | static int CompareMethod(_MethodBase l, _MethodBase r)
    method Push (line 2816) | static void Push(List<_MethodBase> list, _MethodBase r)
    method GenOverrideFuncBody (line 2840) | static void GenOverrideFuncBody(_MethodBase md, bool beIf, int checkTy...
    method CheckCheckTypePos (line 2883) | static int[] CheckCheckTypePos<T>(List<T> list) where T : _MethodBase
    method GenOverrideDefinedFunc (line 2937) | static void GenOverrideDefinedFunc(MethodBase method)
    method GenOverrideFunc (line 2946) | static _MethodBase GenOverrideFunc(string name)
    method CombineTypeStr (line 3002) | public static string CombineTypeStr(string space, string name)
    method GetBaseTypeStr (line 3014) | public static string GetBaseTypeStr(Type t)
    method GetTypeStr (line 3027) | public static string GetTypeStr(Type t)
    method GetTypeOf (line 3053) | static string GetTypeOf(Type t, string sep)
    method GenParamTypes (line 3078) | static string GenParamTypes(ParameterInfo[] p, MethodBase mb, int offs...
    method CheckObjectNull (line 3120) | static void CheckObjectNull()
    method GenGetFieldStr (line 3132) | static void GenGetFieldStr(string varName, Type varType, bool isStatic...
    method GenGetEventStr (line 3167) | static void GenGetEventStr(string varName, Type varType)
    method GenIndexFunc (line 3177) | static void GenIndexFunc()
    method GenSetFieldStr (line 3217) | static void GenSetFieldStr(string varName, Type varType, bool isStatic...
    method GenSetEventStr (line 3255) | static void GenSetEventStr(string varName, Type varType, bool isStatic)
    method GenCSharpLuaEvent (line 3299) | private static void GenCSharpLuaEvent(string varName, Type type, bool ...
    method GenCSharpLuaValueTypeDefault (line 3322) | private static void GenCSharpLuaValueTypeDefault() {
    method GenCSharpLuaValueTypeClone (line 3334) | private static void GenCSharpLuaValueTypeClone()
    method GenCSharpLuaGetOrSet (line 3350) | private static void GenCSharpLuaGetOrSet(_MethodBase m, string methodN...
    method GenNewIndexFunc (line 3359) | static void GenNewIndexFunc()
    method GenLuaFunctionRetValue (line 3400) | static void GenLuaFunctionRetValue(StringBuilder sb, Type t, string he...
    method IsByteBuffer (line 3498) | public static bool IsByteBuffer(Type type)
    method IsByteBuffer (line 3515) | public static bool IsByteBuffer(MemberInfo mb)
    method GenDelegateBody (line 3627) | static void GenDelegateBody(StringBuilder sb, Type t, string head, boo...
    method IsNeedOp (line 3751) | static bool IsNeedOp(string name)
    method CallOpFunction (line 3790) | static void CallOpFunction(string name, int count, string ret)
    method IsObsolete (line 3825) | public static bool IsObsolete(MemberInfo mb)
    method HasAttribute (line 3848) | public static bool HasAttribute(MemberInfo mb, Type atrtype)
    method GenEnum (line 3865) | static void GenEnum()
    method GetDelegateParams (line 4043) | static string GetDelegateParams(MethodInfo mi)
    method GetReturnValue (line 4070) | static string GetReturnValue(Type t)
    method GetDefaultDelegateBody (line 4097) | static string GetDefaultDelegateBody(MethodInfo md)
    method GenDelegates (line 4135) | public static void GenDelegates(DelegateType[] list)
    method IsUseDefinedAttributee (line 4266) | static bool IsUseDefinedAttributee(MemberInfo mb)
    method IsMethodEqualExtend (line 4283) | static bool IsMethodEqualExtend(MethodBase a, MethodBase b)
    method ProcessEditorExtend (line 4335) | static void ProcessEditorExtend(Type extendType, List<_MethodBase> list)
    method IsGenericType (line 4387) | static bool IsGenericType(MethodInfo md, Type t)
    method ProcessExtendType (line 4402) | static void ProcessExtendType(Type extendType, List<_MethodBase> list)
    method ProcessExtends (line 4434) | static void ProcessExtends(List<_MethodBase> list)
    method GetDelegateTypeFromMethodParams (line 4453) | static void GetDelegateTypeFromMethodParams(_MethodBase m)
    method GenEventFunction (line 4473) | public static void GenEventFunction(Type t, StringBuilder sb)
    method GenEventFunctions (line 4509) | static void GenEventFunctions()
    method RemoveChar (line 4517) | static string RemoveChar(string str, char c)
    method ConvertToLibSign (line 4530) | public static string ConvertToLibSign(string str)
    method GetNameSpace (line 4545) | public static string GetNameSpace(Type t, out string libName)
    method GetGenericNameSpace (line 4570) | static string GetGenericNameSpace(Type t, out string libName)
    method GetParameterType (line 4627) | static Type GetParameterType(ParameterInfo info)

FILE: Assets/ToLua/Editor/ToLuaMenu.cs
  class ToLuaMenu (line 41) | [InitializeOnLoad]
    method ToLuaMenu (line 107) | static ToLuaMenu()
    method RemoveNameSpace (line 128) | static string RemoveNameSpace(string name, string space)
    class BindType (line 138) | public class BindType
      method BindType (line 150) | public BindType(Type t)
      method SetBaseType (line 193) | public BindType SetBaseType(Type t)
      method AddExtendType (line 199) | public BindType AddExtendType(Type t)
      method SetWrapName (line 209) | public BindType SetWrapName(string str)
      method SetLibName (line 215) | public BindType SetLibName(string str)
      method SetNameSpace (line 221) | public BindType SetNameSpace(string space)
      method IsObsolete (line 227) | public static bool IsObsolete(Type type)
    method AutoAddBaseType (line 245) | static void AutoAddBaseType(BindType bt, bool beDropBaseType)
    method GenBindTypes (line 307) | static BindType[] GenBindTypes(BindType[] list, bool beDropBaseType = ...
    method GenerateClassWraps (line 342) | [MenuItem("Lua/Gen Lua Wrap Files", false, 1)]
    method GetCustomTypeDelegates (line 386) | static HashSet<Type> GetCustomTypeDelegates()
    method GenLuaDelegates (line 456) | [MenuItem("Lua/Gen Lua Delegates", false, 2)]
    method InitTree (line 485) | static ToLuaTree<string> InitTree()
    method AddSpaceNameToTree (line 509) | static void AddSpaceNameToTree(ToLuaTree<string> tree, ToLuaNode<strin...
    method GetSpaceNameFromTree (line 576) | static string GetSpaceNameFromTree(ToLuaNode<string> node)
    method RemoveTemplateSign (line 589) | static string RemoveTemplateSign(string str)
    method GenLuaBinder (line 604) | [MenuItem("Lua/Gen LuaBinder File", false, 4)]
    method GenRegisterInfo (line 723) | static void GenRegisterInfo(string nameSpace, StringBuilder sb, List<D...
    method GenPreLoadFunction (line 756) | static void GenPreLoadFunction(BindType bt, StringBuilder sb)
    method GetOS (line 779) | static string GetOS()
    method CreateStreamDir (line 784) | static string CreateStreamDir(string dir)
    method BuildLuaBundle (line 796) | static void BuildLuaBundle(string subDir, string sourceDir)
    method ClearAllLuaFiles (line 833) | static void ClearAllLuaFiles()
    method GenLuaWrapBinder (line 883) | [MenuItem("Lua/Gen LuaWrap + Binder", false, 4)]
    method GenLuaAll (line 899) | [MenuItem("Lua/Generate All", false, 5)]
    method ClearLuaWraps (line 916) | [MenuItem("Lua/Clear wrap files", false, 6)]
    method CopyLuaBytesFiles (line 955) | static void CopyLuaBytesFiles(string sourceDir, string destDir, bool a...
    method CopyLuaFilesToRes (line 982) | [MenuItem("Lua/Copy Lua  files to Resources", false, 51)]
    method CopyLuaFilesToPersistent (line 993) | [MenuItem("Lua/Copy Lua  files to Persistent", false, 52)]
    method GetAllDirs (line 1004) | static void GetAllDirs(string dir, List<string> list)
    method CopyDirectory (line 1015) | static void CopyDirectory(string source, string dest, string searchPat...
    method CopyBuildBat (line 1029) | static void CopyBuildBat(string path, string tempDir)
    method BuildLuaToResources (line 1062) | [MenuItem("Lua/Build Lua files to Resources (PC)", false, 53)]
    method BuildLuaToPersistent (line 1082) | [MenuItem("Lua/Build Lua files to Persistent (PC)", false, 54)]
    method BuildNotJitBundles (line 1114) | [MenuItem("Lua/Build bundle files not jit", false, 55)]
    method BuildLuaBundles (line 1164) | [MenuItem("Lua/Build Luajit bundle files   (PC)", false, 56)]
    method ClearLuaFiles (line 1221) | [MenuItem("Lua/Clear all Lua files", false, 57)]
    method GenBaseTypeLuaWrap (line 1228) | [MenuItem("Lua/Gen BaseType Wrap", false, 101)]
    method CreateDefaultWrapFile (line 1273) | static void CreateDefaultWrapFile(string path, string name)
    method ClearBaseTypeLuaWrap (line 1296) | [MenuItem("Lua/Clear BaseType Wrap", false, 102)]
    method EnableLuaInjection (line 1316) | [MenuItem("Lua/Enable Lua Injection &e", false, 102)]
    method RemoveInjection (line 1333) | #if ENABLE_LUA_INJECTION
    method UpdateMonoCecil (line 1350) | public static int UpdateMonoCecil(ref bool EnableSymbols)
    method TryUpdate (line 1417) | static bool TryUpdate(string srcPath, string destPath)
    method GetFileContentMD5 (line 1428) | static string GetFileContentMD5(string file)

FILE: Assets/ToLua/Editor/ToLuaTree.cs
  class ToLuaNode (line 26) | public class ToLuaNode<T>
  class ToLuaTree (line 35) | public class ToLuaTree<T>
    method ToLuaTree (line 40) | public ToLuaTree()
    method FindParent (line 47) | void FindParent(List<ToLuaNode<T>> list, List<ToLuaNode<T>> root, Pred...
    method DepthFirstTraversal (line 91) | public void DepthFirstTraversal(Action<ToLuaNode<T>> begin, Action<ToL...
    method Find (line 104) | public List<ToLuaNode<T>> Find(Predicate<T> match, int layer)
    method GetRoot (line 111) | public ToLuaNode<T> GetRoot()

FILE: Assets/ToLua/Examples/01_HelloWorld/HelloWorld.cs
  class HelloWorld (line 5) | public class HelloWorld : MonoBehaviour
    method Awake (line 7) | void Awake()

FILE: Assets/ToLua/Examples/02_ScriptsFromFile/ScriptsFromFile.cs
  class ScriptsFromFile (line 8) | public class ScriptsFromFile : MonoBehaviour
    method Start (line 13) | void Start ()
    method Log (line 27) | void Log(string msg, string stackTrace, LogType type)
    method OnGUI (line 33) | void OnGUI()
    method OnApplicationQuit (line 52) | void OnApplicationQuit()

FILE: Assets/ToLua/Examples/03_CallLuaFunction/CallLuaFunction.cs
  class CallLuaFunction (line 6) | public class CallLuaFunction : MonoBehaviour
    method Start (line 21) | void Start ()
    method ShowTips (line 56) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnGUI (line 63) | void OnGUI()
    method OnDestroy (line 69) | void OnDestroy()
    method CallFunc (line 87) | int CallFunc()

FILE: Assets/ToLua/Examples/04_AccessingLuaVariables/AccessingLuaVariables.cs
  class AccessingLuaVariables (line 5) | public class AccessingLuaVariables : MonoBehaviour
    method Start (line 24) | void Start ()
    method OnApplicationQuit (line 76) | private void OnApplicationQuit()
    method ShowTips (line 87) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnGUI (line 93) | void OnGUI()

FILE: Assets/ToLua/Examples/05_LuaCoroutine/TestCoroutine.cs
  class TestCoroutine (line 7) | public class TestCoroutine : MonoBehaviour
    method Awake (line 13) | void Awake ()
    method OnApplicationQuit (line 35) | void OnApplicationQuit()
    method ShowTips (line 49) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnGUI (line 55) | void OnGUI()

FILE: Assets/ToLua/Examples/06_LuaCoroutine2/TestCoroutine2.cs
  class TestCoroutine2 (line 6) | public class TestCoroutine2 : LuaClient
    method InitLoader (line 55) | protected override LuaFileUtils InitLoader()
    method OnLoadFinished (line 60) | protected override void OnLoadFinished()
    method CallMain (line 72) | protected override void CallMain() { }
    method Start (line 77) | void Start()
    method ShowTips (line 86) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnApplicationQuit (line 92) | new void OnApplicationQuit()
    method OnGUI (line 102) | void OnGUI()

FILE: Assets/ToLua/Examples/07_LuaThread/TestLuaThread.cs
  class TestLuaThread (line 5) | public class TestLuaThread : MonoBehaviour
    method Start (line 41) | void Start ()
    method OnApplicationQuit (line 66) | void OnApplicationQuit()
    method ShowTips (line 83) | void ShowTips(string msg, string stackTrace, LogType type)
    method Update (line 89) | void Update()
    method OnGUI (line 95) | void OnGUI()

FILE: Assets/ToLua/Examples/08_AccessingArray/AccessingArray.cs
  class AccessingArray (line 4) | public class AccessingArray : MonoBehaviour
    method Start (line 42) | void Start()
    method ShowTips (line 80) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnGUI (line 86) | void OnGUI()
    method OnApplicationQuit (line 91) | void OnApplicationQuit()

FILE: Assets/ToLua/Examples/09_Dictionary/System_Collections_Generic_Dictionary_int_TestAccountWrap.cs
  class System_Collections_Generic_Dictionary_int_TestAccountWrap (line 5) | public class System_Collections_Generic_Dictionary_int_TestAccountWrap
    method Register (line 7) | public static void Register(LuaState L)
    method _CreateSystem_Collections_Generic_Dictionary_int_TestAccount (line 33) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method _get_this (line 94) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method _set_this (line 113) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method _this (line 132) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Item (line 147) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_Item (line 165) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Add (line 183) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Clear (line 201) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ContainsKey (line 217) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ContainsValue (line 235) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetObjectData (line 253) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method OnDeserialization (line 271) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method Remove (line 288) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method TryGetValue (line 306) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumerator (line 326) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Count (line 343) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Comparer (line 362) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Keys (line 381) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Values (line 400) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/Examples/09_Dictionary/System_Collections_Generic_Dictionary_int_TestAccount_KeyCollectionWrap.cs
  class System_Collections_Generic_Dictionary_int_TestAccount_KeyCollectionWrap (line 5) | public class System_Collections_Generic_Dictionary_int_TestAccount_KeyCo...
    method Register (line 7) | public static void Register(LuaState L)
    method _CreateSystem_Collections_Generic_Dictionary_int_TestAccount_KeyCollection (line 18) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CopyTo (line 43) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumerator (line 61) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Count (line 78) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/Examples/09_Dictionary/System_Collections_Generic_Dictionary_int_TestAccount_ValueCollectionWrap.cs
  class System_Collections_Generic_Dictionary_int_TestAccount_ValueCollectionWrap (line 5) | public class System_Collections_Generic_Dictionary_int_TestAccount_Value...
    method Register (line 7) | public static void Register(LuaState L)
    method _CreateSystem_Collections_Generic_Dictionary_int_TestAccount_ValueCollection (line 18) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method CopyTo (line 43) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method GetEnumerator (line 61) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Count (line 78) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/Examples/09_Dictionary/System_Collections_Generic_KeyValuePair_int_TestAccountWrap.cs
  class System_Collections_Generic_KeyValuePair_int_TestAccountWrap (line 5) | public class System_Collections_Generic_KeyValuePair_int_TestAccountWrap
    method Register (line 7) | public static void Register(LuaState L)
    method _CreateSystem_Collections_Generic_KeyValuePair_int_TestAccount (line 18) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method ToString (line 50) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Key (line 67) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_Value (line 86) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/Examples/09_Dictionary/TestAccountWrap.cs
  class TestAccountWrap (line 5) | public class TestAccountWrap
    method Register (line 7) | public static void Register(LuaState L)
    method _CreateTestAccount (line 18) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_id (line 45) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_name (line 64) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_sex (line 83) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_id (line 102) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_name (line 121) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_sex (line 140) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/Examples/09_Dictionary/UseDictionary.cs
  class TestAccount (line 5) | public sealed class TestAccount
    method TestAccount (line 11) | public TestAccount(int id, string name, int sex)
  class UseDictionary (line 19) | public class UseDictionary : MonoBehaviour
    method Awake (line 66) | void Awake ()
    method OnApplicationQuit (line 96) | void OnApplicationQuit()
    method ShowTips (line 107) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnGUI (line 113) | void OnGUI()
    method BindMap (line 119) | void BindMap(LuaState L)

FILE: Assets/ToLua/Examples/10_Enum/AccessingEnum.cs
  class AccessingEnum (line 5) | public class AccessingEnum : MonoBehaviour
    method Start (line 41) | void Start ()
    method OnApplicationQuit (line 64) | void OnApplicationQuit()
    method ShowTips (line 80) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnGUI (line 86) | void OnGUI()

FILE: Assets/ToLua/Examples/11_Delegate/TestDelegate.cs
  class TestDelegate (line 7) | public class TestDelegate: MonoBehaviour
    method Awake (line 115) | void Awake()
    method Bind (line 146) | void Bind(LuaState L)
    method CallLuaFunction (line 159) | void CallLuaFunction(LuaFunction func)
    class TestEventListener_OnClick_Event (line 169) | class TestEventListener_OnClick_Event : LuaDelegate
      method TestEventListener_OnClick_Event (line 171) | public TestEventListener_OnClick_Event(LuaFunction func) : base(func...
      method Call (line 173) | public void Call(UnityEngine.GameObject param0)
    method TestEventListener_OnClick (line 182) | public static TestEventListener.OnClick TestEventListener_OnClick(LuaF...
    class TestEventListener_VoidDelegate_Event (line 196) | class TestEventListener_VoidDelegate_Event : LuaDelegate
      method TestEventListener_VoidDelegate_Event (line 198) | public TestEventListener_VoidDelegate_Event(LuaFunction func) : base...
      method Call (line 200) | public void Call(UnityEngine.GameObject param0)
    method TestEventListener_VoidDelegate (line 209) | public static TestEventListener.VoidDelegate TestEventListener_VoidDel...
    method OnGUI (line 223) | void OnGUI()
    method Update (line 305) | void Update()
    method SafeRelease (line 311) | void SafeRelease(ref LuaFunction luaRef)
    method ShowTips (line 322) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnApplicationQuit (line 328) | void OnApplicationQuit()

FILE: Assets/ToLua/Examples/11_Delegate/TestEventListener.cs
  class TestEventListener (line 6) | public sealed class TestEventListener : MonoBehaviour
    method SetOnFinished (line 16) | public void SetOnFinished(OnClick click)
    method SetOnFinished (line 21) | public void SetOnFinished(VoidDelegate click)
    method OnClickEvent (line 26) | [NoToLuaAttribute]

FILE: Assets/ToLua/Examples/11_Delegate/TestEventListenerWrap.cs
  class TestEventListenerWrap (line 5) | public class TestEventListenerWrap
    method Register (line 7) | public static void Register(LuaState L)
    method SetOnFinished (line 21) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method op_Equality (line 53) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_onClick (line 71) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_TestFunc (line 90) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method get_onClickEvent (line 109) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_onClick (line 116) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_TestFunc (line 135) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_onClickEvent (line 154) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method TestEventListener_OnClick (line 190) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method TestEventListener_VoidDelegate (line 217) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/Examples/12_GameObject/TestGameObject.cs
  class TestGameObject (line 5) | public class TestGameObject: MonoBehaviour
    method Start (line 31) | void Start()
    method Update (line 46) | void Update()
    method ShowTips (line 54) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnApplicationQuit (line 60) | void OnApplicationQuit()
    method OnGUI (line 71) | void OnGUI()

FILE: Assets/ToLua/Examples/13_CustomLoader/TestCustomLoader.cs
  class TestCustomLoader (line 6) | public class TestCustomLoader : LuaClient
    method InitLoader (line 10) | protected override LuaFileUtils InitLoader()
    method CallMain (line 15) | protected override void CallMain()
    method StartMain (line 22) | protected override void StartMain()
    method Awake (line 28) | new void Awake()
    method OnApplicationQuit (line 38) | new void OnApplicationQuit()
    method Logger (line 49) | void Logger(string msg, string stackTrace, LogType type)
    method OnGUI (line 55) | void OnGUI()

FILE: Assets/ToLua/Examples/14_Out/TestOutArg.cs
  class TestOutArg (line 6) | public class TestOutArg : MonoBehaviour
    method Start (line 28) | void Start ()
    method ShowTips (line 43) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnApplicationQuit (line 49) | void OnApplicationQuit()
    method OnGUI (line 58) | private void OnGUI()
    method Update (line 63) | void Update()
    method OnDestroy (line 87) | void OnDestroy()

FILE: Assets/ToLua/Examples/15_ProtoBuffer/TestProtoBuffer.cs
  class Header (line 11) | [ProtoContract]
  class Person (line 21) | [ProtoContract]
  class TestProtoBuffer (line 44) | public class TestProtoBuffer : LuaClient
    method Awake (line 81) | new void Awake()
    method InitLoader (line 91) | protected override LuaFileUtils InitLoader()
    method Bind (line 96) | protected override void Bind()
    method CallMain (line 106) | protected override void CallMain() { }
    method OnLoadFinished (line 108) | protected override void OnLoadFinished()
    method ShowTips (line 152) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnGUI (line 157) | void OnGUI()
    method OnApplicationQuit (line 162) | new void OnApplicationQuit()

FILE: Assets/ToLua/Examples/15_ProtoBuffer/TestProtol.cs
  class TestProtol (line 4) | public static class TestProtol

FILE: Assets/ToLua/Examples/15_ProtoBuffer/TestProtolWrap.cs
  class TestProtolWrap (line 5) | public class TestProtolWrap
    method Register (line 7) | public static void Register(LuaState L)
    method get_data (line 14) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    method set_data (line 28) | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]

FILE: Assets/ToLua/Examples/16_Int64/TestInt64.cs
  class TestInt64 (line 8) | public class TestInt64 : MonoBehaviour
    method Start (line 54) | void Start()
    method ShowTips (line 81) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnDestroy (line 87) | void OnDestroy()
    method OnGUI (line 96) | void OnGUI()

FILE: Assets/ToLua/Examples/17_Inherit/TestInherit.cs
  class TestInherit (line 5) | public class TestInherit : MonoBehaviour
    method Start (line 74) | void Start ()
    method ShowTips (line 104) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnDestroy (line 110) | void OnDestroy()
    method OnGUI (line 119) | void OnGUI()

FILE: Assets/ToLua/Examples/18_Bundle/TestABLoader.cs
  class TestABLoader (line 9) | public class TestABLoader : MonoBehaviour
    method CoLoadBundle (line 14) | IEnumerator CoLoadBundle(string name, string path)
    method LoadFinished (line 38) | IEnumerator LoadFinished()
    method LoadBundles (line 48) | public IEnumerator LoadBundles()
    method Awake (line 85) | void Awake()
    method ShowTips (line 103) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnGUI (line 109) | void OnGUI()
    method OnApplicationQuit (line 114) | void OnApplicationQuit()
    method OnBundleLoad (line 123) | void OnBundleLoad()

FILE: Assets/ToLua/Examples/19_cjson/TestCJson.cs
  class TestCJson (line 5) | public class TestCJson : LuaClient
    method InitLoader (line 17) | protected override LuaFileUtils InitLoader()
    method OpenLibs (line 22) | protected override void OpenLibs()
    method OnLoadFinished (line 28) | protected override void OnLoadFinished()
    method CallMain (line 49) | protected override void CallMain() { }
    method ShowTips (line 53) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnApplicationQuit (line 59) | new void OnApplicationQuit()
    method OnGUI (line 70) | void OnGUI()

FILE: Assets/ToLua/Examples/20_utf8/TestUTF8.cs
  class TestUTF8 (line 4) | public class TestUTF8 : LuaClient
    method InitLoader (line 36) | protected override LuaFileUtils InitLoader()
    method CallMain (line 42) | protected override void CallMain() { }
    method OnLoadFinished (line 44) | protected override void OnLoadFinished()
    method ShowTips (line 61) | void ShowTips(string msg, string stackTrace, LogType type)
    method OnApplicationQuit (line 67) | new void OnApplicationQuit()
    method OnGUI (line 78) | void OnGUI()

FILE: Assets/ToLua/Examples/21_String/TestString.cs
  class TestString (line 8) | public class TestString : LuaClient
    method InitLoader (line 25) | protected override LuaFileUtils InitLoader()
    method CallMain (line 31) | protected override void CallMain() { }
    method OnLoadFinished (line 33) | protected ove
Condensed preview — 842 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,530K chars).
[
  {
    "path": ".gitignore",
    "chars": 605,
    "preview": "[Ll]ibrary/\n[Tt]emp/\n[Oo]bj/\n[Bb]uild/\n\n# Autogenerated VS/MD solution and project files\n*.csproj\n*.unityproj\n*.sln\n*.su"
  },
  {
    "path": "Assets/CSharpLua/Base/BaseScripts.asmdef",
    "chars": 165,
    "preview": "{\n    \"name\": \"Base\",\n    \"references\": [],\n    \"optionalUnityReferences\": [],\n    \"includePlatforms\": [],\n    \"excludeP"
  },
  {
    "path": "Assets/CSharpLua/Base/BaseScripts.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: a74114e4c2e22e5439cffab27da66e88\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "Assets/CSharpLua/Base/CSharpLua/BaseUtility.cs",
    "chars": 348,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
  },
  {
    "path": "Assets/CSharpLua/Base/CSharpLua/BaseUtility.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 926b10807f8340942925508454855bca\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/CSharpLua/Base/CSharpLua/LuaAutoWrapAttribute.cs",
    "chars": 244,
    "preview": "using System;\n\n/// <summary>\n/// 加入此标记,可以自动添加到导出列表\n/// </summary>\n[AttributeUsage(AttributeTargets.Class | AttributeTar"
  },
  {
    "path": "Assets/CSharpLua/Base/CSharpLua/LuaAutoWrapAttribute.cs.meta",
    "chars": 263,
    "preview": "fileFormatVersion: 2\nguid: dafb7d14d4c87b74da4e18fb257c904d\ntimeCreated: 1526898161\nlicenseType: Free\nMonoImporter:\n  se"
  },
  {
    "path": "Assets/CSharpLua/Base/CSharpLua/Settings.cs",
    "chars": 1120,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\n\nusing UnityEngin"
  },
  {
    "path": "Assets/CSharpLua/Base/CSharpLua/Settings.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 3496baf3649572f44b1d70ef854e729f\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/CSharpLua/Base/CSharpLua.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 344556a0bba10b744aceb8f65773392e\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/CSharpLua/Base.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 58354dbb9d958af4399ff1a50246b611\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/CSharpLua/Bridge/BridgeScripts.asmdef",
    "chars": 187,
    "preview": "{\n    \"name\": \"Bridge\",\n    \"references\": [\n        \"Base\"\n    ],\n    \"optionalUnityReferences\": [],\n    \"includePlatfor"
  },
  {
    "path": "Assets/CSharpLua/Bridge/BridgeScripts.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: 4c78da7caad00b44ea75ddb210bf7528\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "Assets/CSharpLua/Bridge/TestUtils.cs",
    "chars": 396,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nusing UnityEngine;\nusing UnityEd"
  },
  {
    "path": "Assets/CSharpLua/Bridge/TestUtils.cs.meta",
    "chars": 263,
    "preview": "fileFormatVersion: 2\nguid: 0f7832487e5e88a47b620e14661a1e00\ntimeCreated: 1528447325\nlicenseType: Free\nMonoImporter:\n  se"
  },
  {
    "path": "Assets/CSharpLua/Bridge.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: d5c23c299d89e9f47a02659740280a56\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/CSharpLua/CSharpLuaClient.cs",
    "chars": 5921,
    "preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nusing "
  },
  {
    "path": "Assets/CSharpLua/CSharpLuaClient.cs.meta",
    "chars": 263,
    "preview": "fileFormatVersion: 2\nguid: 1c379516c224fca4198f4de0962735e4\ntimeCreated: 1528271831\nlicenseType: Free\nMonoImporter:\n  se"
  },
  {
    "path": "Assets/CSharpLua/Compiled/CompiledScripts.asmdef",
    "chars": 173,
    "preview": "{\n  \"name\": \"Compiled\",\n  \"references\": [\n    \"Bridge\"\n  ],\n  \"optionalUnityReferences\": [],\n  \"includePlatforms\": [],\n "
  },
  {
    "path": "Assets/CSharpLua/Compiled/CompiledScripts.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: 55be9d1390aba8646b0237dae609af2e\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Protocol/AutoGen/CommonPrototype.cs",
    "chars": 1247,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code wa"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Protocol/AutoGen/CommonPrototype.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 78debcec0b8758e4b9dbde7b10c1128a\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/CSharpLua/Compiled/Protocol/AutoGen.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: b7e6a6d4681331a47b4a8f5228a03018\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Protocol/CommonPrototype.proto",
    "chars": 238,
    "preview": "package CSharpLua.Project.Protocol;\n\nmessage SettingProto {\n  message ValuePairProto {\n    required string Key = 1;\n    "
  },
  {
    "path": "Assets/CSharpLua/Compiled/Protocol/CommonPrototype.proto.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 07f5e97e19969f74dbd315423dbc49fb\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Protocol/IProtocol.cs",
    "chars": 57,
    "preview": "namespace ProtoBuf {\n  public interface IProtocol {\n  }\n}"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Protocol/IProtocol.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 3e84cedf7f75dd1488cd80392079610f\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/CSharpLua/Compiled/Protocol.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: e27d3b48940561d4b86687784d596098\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Sample/TestCoroutine.cs",
    "chars": 946,
    "preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nusing "
  },
  {
    "path": "Assets/CSharpLua/Compiled/Sample/TestCoroutine.cs.meta",
    "chars": 263,
    "preview": "fileFormatVersion: 2\nguid: 729f6a41b84190a4ea3b9a09e6fa57a7\ntimeCreated: 1528274108\nlicenseType: Free\nMonoImporter:\n  se"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Sample/TestHangingScript.cs",
    "chars": 853,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing UnityEngine;\n\nnamespace Sam"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Sample/TestHangingScript.cs.meta",
    "chars": 263,
    "preview": "fileFormatVersion: 2\nguid: aa1fc193057764b49b4ef3ad042007cd\ntimeCreated: 1528274108\nlicenseType: Free\nMonoImporter:\n  se"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Sample/TestHelloWord.cs",
    "chars": 789,
    "preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\n\nnamesp"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Sample/TestHelloWord.cs.meta",
    "chars": 263,
    "preview": "fileFormatVersion: 2\nguid: d01266a3cb9c65446aff41f37bc14f67\ntimeCreated: 1528274108\nlicenseType: Free\nMonoImporter:\n  se"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Sample/TestProtobuf.cs",
    "chars": 1473,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nus"
  },
  {
    "path": "Assets/CSharpLua/Compiled/Sample/TestProtobuf.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 702d00be8d6fcda448f17c8a3eecd43f\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/CSharpLua/Compiled/Sample.meta",
    "chars": 192,
    "preview": "fileFormatVersion: 2\nguid: c756251f944f45b4f91b0d682a8e5811\nfolderAsset: yes\ntimeCreated: 1528272569\nlicenseType: Free\nD"
  },
  {
    "path": "Assets/CSharpLua/Compiled.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 30775760c22aaf9428e8d40b0574a998\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/CSharpLua/Editor/Compiler.cs",
    "chars": 7633,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Reflection;\nusi"
  },
  {
    "path": "Assets/CSharpLua/Editor/Compiler.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 59c6d8baca17a7146b763b1e4fa394d6\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/CSharpLua/Editor.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 4fe6f8ae96df5fd45bf9bbab5cb9a8e7\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/CSharpLua/Examples/01_HelloWorld/HelloWorld.unity.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 44e8c9b1935171746b04903a251c413d\ntimeCreated: 1526899852\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/CSharpLua/Examples/01_HelloWorld/TestLoader.prefab.meta",
    "chars": 190,
    "preview": "fileFormatVersion: 2\nguid: 20c93afce42002a41a008ca942ccb69d\nNativeFormatImporter:\n  externalObjects: {}\n  mainObjectFile"
  },
  {
    "path": "Assets/CSharpLua/Examples/01_HelloWorld/testText.txt",
    "chars": 10,
    "preview": "hello,word"
  },
  {
    "path": "Assets/CSharpLua/Examples/01_HelloWorld/testText.txt.meta",
    "chars": 158,
    "preview": "fileFormatVersion: 2\nguid: a0ac40db8f690ec43aeb9ee683d170f6\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  ass"
  },
  {
    "path": "Assets/CSharpLua/Examples/01_HelloWorld.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: e64303adce0f8d8438e46552eb0f8b84\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/CSharpLua/Examples.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 19a7a8aa535d0de4ba63cd62704e83f6\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/CSharpLua/UserMonoBehaviourConverter.cs",
    "chars": 17361,
    "preview": "#if UNITY_EDITOR  \nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Diagnostics.C"
  },
  {
    "path": "Assets/CSharpLua/UserMonoBehaviourConverter.cs.meta",
    "chars": 263,
    "preview": "fileFormatVersion: 2\nguid: b7f3e9e39306b8540a8a2420099dec1d\ntimeCreated: 1528353588\nlicenseType: Free\nMonoImporter:\n  se"
  },
  {
    "path": "Assets/CSharpLua.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 25458f95ee0f5374894471ba2a523a15\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Editor/Custom/CustomSettings.cs",
    "chars": 9905,
    "preview": "using UnityEngine;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing LuaInterface;\nusing UnityEd"
  },
  {
    "path": "Assets/Editor/Custom/CustomSettings.cs.meta",
    "chars": 178,
    "preview": "fileFormatVersion: 2\nguid: d68e81cfa02de7e44a2ff558bdc3ac89\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []"
  },
  {
    "path": "Assets/Editor/Custom.meta",
    "chars": 107,
    "preview": "fileFormatVersion: 2\nguid: 327fa85d300c38c48836bfee53f47cb0\nfolderAsset: yes\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Assets/Editor.meta",
    "chars": 107,
    "preview": "fileFormatVersion: 2\nguid: 772338ec68e701847a565d981a690787\nfolderAsset: yes\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Assets/Lua/3rd/pbc/Protocol/CommonPrototype.pb",
    "chars": 210,
    "preview": "\n\u0001\n\u0015CommonPrototype.proto\u0012\u001aCSharpLua.Project.Protocol\"\u0001\n\fSettingProto\u0012G\n\u0006Values\u0018\u0001 \u0003(\u000b27.CSharpLua.Project.Protocol.Setti"
  },
  {
    "path": "Assets/Lua/3rd/pbc/Protocol/CommonPrototype.pb.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 799e7c66ac22f364e9547543461301c4\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/3rd/pbc/Protocol.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: a7200e606f253ed44ad5a8801bf7eae2\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Lua/3rd/pbc/protobuf.lua",
    "chars": 13063,
    "preview": "local c = require \"protobuf.c\"\n\nlocal setmetatable = setmetatable\nlocal type = type\nlocal table = table\nlocal assert = a"
  },
  {
    "path": "Assets/Lua/3rd/pbc/protobuf.lua.meta",
    "chars": 90,
    "preview": "fileFormatVersion: 2\nguid: 1ba29465c7f40ae4aa388cefab41f5e0\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Assets/Lua/3rd/pbc.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 4bf5196cb12726f4a9958b8bbffdaffe\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Lua/3rd.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 0921f818f1bc02e499634048e5c59679\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Lua/Classloader.lua",
    "chars": 1303,
    "preview": "local typeof = typeof\ntoluaSystem = System\nlocal isInstanceOfType = typeof(toluaSystem.Object).IsInstanceOfType\nlocal Ti"
  },
  {
    "path": "Assets/Lua/Classloader.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 896a17f3a9cc84246858465cab87a45a\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/Compiled/Protocol/AutoGen/CommonPrototype.lua",
    "chars": 1283,
    "preview": "-- Generated by CSharp.lua Compiler\n--------------------------------------------------------------------------------\n-- "
  },
  {
    "path": "Assets/Lua/Compiled/Protocol/AutoGen/CommonPrototype.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 4c15c22eddb928345a01a9ff7de17cd5\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/Compiled/Protocol/AutoGen.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 1b33b39ff0a98b243be124e052b89741\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Lua/Compiled/Protocol/IProtocol.lua",
    "chars": 181,
    "preview": "-- Generated by CSharp.lua Compiler\nlocal System = System\nSystem.namespace(\"ProtoBuf\", function (namespace)\n  namespace."
  },
  {
    "path": "Assets/Lua/Compiled/Protocol/IProtocol.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 8955781becf16fc48b8ec217d536653e\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/Compiled/Protocol.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 839f71ef436eef449a8aa098ab4c8008\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Lua/Compiled/Sample/TestCoroutine.lua",
    "chars": 1889,
    "preview": "-- Generated by CSharp.lua Compiler\nlocal System = System\nlocal UnityEngine = UnityEngine\nlocal ListInt32 = System.List("
  },
  {
    "path": "Assets/Lua/Compiled/Sample/TestCoroutine.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: da6a71c38b8b9984c833b5b4ca0e5644\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/Compiled/Sample/TestHangingScript.lua",
    "chars": 1400,
    "preview": "-- Generated by CSharp.lua Compiler\nlocal System = System\nlocal UnityEngine = UnityEngine\nlocal ListInt32 = System.List("
  },
  {
    "path": "Assets/Lua/Compiled/Sample/TestHangingScript.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 1a47e23a7d689fb4c8b535daac4e7506\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/Compiled/Sample/TestHelloWord.lua",
    "chars": 1302,
    "preview": "-- Generated by CSharp.lua Compiler\nlocal System = System\nlocal UnityEngine = UnityEngine\nlocal Sample\nSystem.import(fun"
  },
  {
    "path": "Assets/Lua/Compiled/Sample/TestHelloWord.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: d650d1e86eb0ece4981a48b1b0e95878\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/Compiled/Sample/TestProtobuf.lua",
    "chars": 1260,
    "preview": "-- Generated by CSharp.lua Compiler\nlocal System = System\nlocal UnityEngine = UnityEngine\nlocal CSharpLuaProjectProtocol"
  },
  {
    "path": "Assets/Lua/Compiled/Sample/TestProtobuf.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 73822b2e531795d4d9cca42b4b834d38\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/Compiled/Sample.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: f5664ef679fb2bb4c85569a055f6debd\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Lua/Compiled/manifest.lua",
    "chars": 604,
    "preview": "-- Generated by CSharp.lua Compiler\nreturn function (path)\n  return System.init({\n    path = path,\n    files = {\n      \""
  },
  {
    "path": "Assets/Lua/Compiled/manifest.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: d66a9fc55c5de2a459db4893f0db8279\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/Compiled.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: e7429fd7d84e7a94691ccffa8843d572\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/All.lua",
    "chars": 1504,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/All.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: f7703f768c9abc748b02b74d42ff099c\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Array.lua",
    "chars": 30435,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Array.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: cfb931ea6b78c994aac377dd25e13e3f\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Boolean.lua",
    "chars": 2909,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Boolean.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 1d6746daf7f157440a3bca4ef0d89b5e\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Char.lua",
    "chars": 5937,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Char.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 258f15fe832bc224ea63662b03a89289\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/Dictionary.lua",
    "chars": 19604,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/Dictionary.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 625aaca11aa54a741a84ecf3084a47ad\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/EqualityComparer.lua",
    "chars": 4382,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/EqualityComparer.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 19a630f833902d243b0634c66042bfb3\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/HashSet.lua",
    "chars": 7778,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/HashSet.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: f3fa2f69bd6bf7e498359d7ab15251af\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/LinkedList.lua",
    "chars": 8920,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/LinkedList.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 75ca5de6d7b98f747a64607ed526171e\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/Linq.lua",
    "chars": 37801,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/Linq.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 406172d729eefcd42b2022990679be11\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/List.lua",
    "chars": 2094,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/List.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 7c865abfcba1c6446b184a2b82126f67\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/Queue.lua",
    "chars": 1423,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/Queue.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 50f419f82317ada4ea81ad0a9e9f5d2d\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/SortedSet.lua",
    "chars": 659,
    "preview": "--[[\nCopyright YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou m"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/SortedSet.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: cbb8de3cd60559c4a8569173e08c7914\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/Stack.lua",
    "chars": 1255,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections/Stack.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 440302017e524d742a46d9347f06adbe\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Collections.meta",
    "chars": 192,
    "preview": "fileFormatVersion: 2\nguid: 6c593174ea67b1c49a59b342c76fe211\nfolderAsset: yes\ntimeCreated: 1526899278\nlicenseType: Free\nD"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Console.lua",
    "chars": 1531,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Console.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 4fe1932f201910c4e908b248ec1cd570\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Convert.lua",
    "chars": 21378,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Convert.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 4484884b9aaf34742b746fe8ebf350be\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Core.lua",
    "chars": 35253,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Core.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 87416cb6b5e986a48ba26b5391e32fa3\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/DateTime.lua",
    "chars": 12787,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/DateTime.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 5d0c7552cbae5324c9a33be5db8e6125\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Delegate.lua",
    "chars": 7136,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Delegate.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: dd8640b062a392b408bb4b676a336bec\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Enum.lua",
    "chars": 4570,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Enum.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 81553c3618b10a14a853d14ccff36ef0\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Exception.lua",
    "chars": 10274,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Exception.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 06bacb731a81a8442b212c8972952f18\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/IO/File.lua",
    "chars": 2480,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/IO/File.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 7f24d0b1606f2a14685f4fa7e9121232\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/IO.meta",
    "chars": 192,
    "preview": "fileFormatVersion: 2\nguid: 8dbc6ed8a3af14d448e678d22a14d94d\nfolderAsset: yes\ntimeCreated: 1526899278\nlicenseType: Free\nD"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Interfaces.lua",
    "chars": 2583,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Interfaces.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 1c03169af44be8445afa781e14cd3d47\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Math.lua",
    "chars": 3237,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Math.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 1af4aec83bd8a5e46a73731c06f0d5ca\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Number.lua",
    "chars": 10029,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Number.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 2eecf846c651b94499eb8d2a1eab202a\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Random.lua",
    "chars": 5065,
    "preview": "-- Compiled from https://github.com/dotnet/corefx/blob/master/src/Common/src/CoreLib/System/Random.cs\n-- Generated by CS"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Random.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: cd34ae8a3389fae4cbf545d1d2d997b2\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Reflection/Assembly.lua",
    "chars": 26377,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Reflection/Assembly.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: c05cd872a9424a24ca906af0a900fbdd\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Reflection.meta",
    "chars": 192,
    "preview": "fileFormatVersion: 2\nguid: a35613a01cc419e4d80e4f2a08931462\nfolderAsset: yes\ntimeCreated: 1526899278\nlicenseType: Free\nD"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/String.lua",
    "chars": 19574,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/String.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 2df704fc85793bd4fb8aa99961168c75\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Text/StringBuilder.lua",
    "chars": 5605,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Text/StringBuilder.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 064061fdecc8f34428c91d8c361b02d0\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Text.meta",
    "chars": 192,
    "preview": "fileFormatVersion: 2\nguid: 89aaeb8f66fbcee4d96bac4f042d8c99\nfolderAsset: yes\ntimeCreated: 1526899278\nlicenseType: Free\nD"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Threading/Task.lua",
    "chars": 25450,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Threading/Task.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: b511ea33303bc1846b6900af803a85fc\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Threading/Thread.lua",
    "chars": 5247,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Threading/Thread.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 879d7ccf94cad2a4abafc063a63417ee\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Threading/Timer.lua",
    "chars": 6119,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Threading/Timer.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: bdc40b5bf02c0e2418211c3ea4fa4b8e\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Threading.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: e91b659d8aba50548b8f6d890ff7e573\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Threads.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: d1d009652a7b2644eaf9ca2d19663fa9\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/TimeSpan.lua",
    "chars": 7988,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/TimeSpan.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 8d3b7ec8b56191547ab3ab10d026b51b\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Type.lua",
    "chars": 12047,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Type.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: e04c3d45c30677947a46f7bae4c7aadd\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Utilities.lua",
    "chars": 5267,
    "preview": "--[[\nCopyright 2017 YANG Huan (sy.yanghuan@gmail.com).\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem/Utilities.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 78d6ea4ba4295854389822aa7fb53ca5\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/CoreSystem.meta",
    "chars": 192,
    "preview": "fileFormatVersion: 2\nguid: 2138a9006de9313498422cd95a8c4124\nfolderAsset: yes\ntimeCreated: 1526899278\nlicenseType: Free\nD"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/Sample/test.lua",
    "chars": 10093,
    "preview": "require('mobdebug').coro()\nrequire(\"strict\")\nlocal socket = require(\"socket\")\n\nlocal now = 0\nlocal timeoutQueue\n\nlocal c"
  },
  {
    "path": "Assets/Lua/CoreSystemLua/Sample/test.lua.meta",
    "chars": 175,
    "preview": "fileFormatVersion: 2\nguid: 629a921622d88ad4592c0de841bdb4cb\ntimeCreated: 1526899278\nlicenseType: Free\nDefaultImporter:\n "
  },
  {
    "path": "Assets/Lua/CoreSystemLua/Sample.meta",
    "chars": 192,
    "preview": "fileFormatVersion: 2\nguid: 1888b99286c3c2f48af9dee1c96c1581\nfolderAsset: yes\ntimeCreated: 1526899278\nlicenseType: Free\nD"
  },
  {
    "path": "Assets/Lua/CoreSystemLua.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 473f2c916afc7094d96142fec01bf9a9\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Lua/Main.lua",
    "chars": 230,
    "preview": "require(\"Classloader\")\n\n--主入口函数。从这里开始lua逻辑\nfunction Main()\t\t\t\t\t\n\tprint(\"logic start\")\t \t\t\nend\n\n--场景切换通知\nfunction OnLevel"
  },
  {
    "path": "Assets/Lua/Main.lua.meta",
    "chars": 90,
    "preview": "fileFormatVersion: 2\nguid: 091b02c3490daac4f8ed8cd5b62090b1\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Assets/Lua/ProtobufAdapter.lua",
    "chars": 1471,
    "preview": "require(\"3rd.pbc.protobuf\")\n\nlocal protobuf = protobuf\nlocal pairs = pairs\nlocal ipairs = ipairs\nlocal protobuf = protob"
  },
  {
    "path": "Assets/Lua/ProtobufAdapter.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 3b3987b905cf20f43ab7c46782a49808\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua/UnityAdapter.Lua",
    "chars": 31802,
    "preview": "local System = System\nlocal throw = System.throw\nlocal emptyFn = System.emptyFn\nlocal getClass = System.getClass\nlocal i"
  },
  {
    "path": "Assets/Lua/UnityAdapter.Lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: d6dad4765632b864f8a13b8a7e96eddc\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Lua.meta",
    "chars": 107,
    "preview": "fileFormatVersion: 2\nguid: 379b0ef2d43e1bd4fa5da0ccdf1f8bbd\nfolderAsset: yes\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Assets/Plugins/3rd/protobuf-net.dll.meta",
    "chars": 611,
    "preview": "fileFormatVersion: 2\nguid: ca3ef49e23838bb4a9371c975ff18748\ntimeCreated: 1517916505\nlicenseType: Free\nPluginImporter:\n  "
  },
  {
    "path": "Assets/Plugins/3rd.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 60b870ca8c7b92f49bf9ccd5243a1a74\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Plugins/Android/libs/arm64-v8a/libtolua.so.meta",
    "chars": 548,
    "preview": "fileFormatVersion: 2\nguid: 2b0ac09514a9a424daeda08c003864b0\nPluginImporter:\n  externalObjects: {}\n  serializedVersion: 2"
  },
  {
    "path": "Assets/Plugins/Android/libs/arm64-v8a.meta",
    "chars": 191,
    "preview": "fileFormatVersion: 2\nguid: 0aad78b86e3fe134db823a509dd8971e\nfolderAsset: yes\ntimeCreated: 1557889915\nlicenseType: Pro\nDe"
  },
  {
    "path": "Assets/Plugins/Android/libs/armeabi-v7a/libtolua.so.meta",
    "chars": 548,
    "preview": "fileFormatVersion: 2\nguid: 4fb9a29f65e536b4293f7f9affd19158\nPluginImporter:\n  externalObjects: {}\n  serializedVersion: 2"
  },
  {
    "path": "Assets/Plugins/Android/libs/armeabi-v7a.meta",
    "chars": 107,
    "preview": "fileFormatVersion: 2\nguid: 034154e518117d842b99fd1f19efa3a3\nfolderAsset: yes\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Assets/Plugins/Android/libs/x86/libtolua.so.meta",
    "chars": 546,
    "preview": "fileFormatVersion: 2\nguid: 3bf04aa9e8715d047898e94157e2decd\nPluginImporter:\n  externalObjects: {}\n  serializedVersion: 2"
  },
  {
    "path": "Assets/Plugins/Android/libs/x86.meta",
    "chars": 107,
    "preview": "fileFormatVersion: 2\nguid: d76e3311efeac224996b0cb7a06a7a3a\nfolderAsset: yes\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Assets/Plugins/Android/libs.meta",
    "chars": 107,
    "preview": "fileFormatVersion: 2\nguid: 72b436146481b3f40b05eb161ca7f39c\nfolderAsset: yes\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Assets/Plugins/Android.meta",
    "chars": 107,
    "preview": "fileFormatVersion: 2\nguid: 729c01aec7bba814d88608249c8a170b\nfolderAsset: yes\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Assets/Plugins/CString.dll.meta",
    "chars": 569,
    "preview": "fileFormatVersion: 2\nguid: 4f630c0f54674a246a65918d24eeab8a\nPluginImporter:\n  externalObjects: {}\n  serializedVersion: 2"
  },
  {
    "path": "Assets/Plugins/Debugger.dll.meta",
    "chars": 569,
    "preview": "fileFormatVersion: 2\nguid: c33668af923d0aa4ebd48ebe80ef943a\nPluginImporter:\n  externalObjects: {}\n  serializedVersion: 2"
  },
  {
    "path": "Assets/Plugins/iOS/libtolua.a.meta",
    "chars": 1680,
    "preview": "fileFormatVersion: 2\nguid: 8492849dccfbfce4485d383c0ce84651\nPluginImporter:\n  externalObjects: {}\n  serializedVersion: 2"
  },
  {
    "path": "Assets/Plugins/iOS.meta",
    "chars": 107,
    "preview": "fileFormatVersion: 2\nguid: 48e42b60abfb25b488c56d81b63e4646\nfolderAsset: yes\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Info.plist",
    "chars": 1795,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Info.plist.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: c70484778b37241228e041d528df2f81\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/MacOS/tolua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 3ad2d3f39b17a4505951dcdc9ef15320\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/MacOS.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 9bd8f6fa32a614c10b4789e20b57ff8f\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/LICENSE",
    "chars": 1080,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2014 codingnow.com\n\nPermission is hereby granted, free of charge, to any person obt"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/LICENSE.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 686e4b0c52e6bc54a8c42c0477db291c\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/README.md",
    "chars": 13916,
    "preview": "Introduction\n======\n\nSproto is an efficient serialization library for C, and focuses on lua binding. It's like Google pr"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/README.md.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 67caed6d2702fdb4684d0884268df1c1\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/print_r.lua",
    "chars": 790,
    "preview": "local print = print\nlocal tconcat = table.concat\nlocal tinsert = table.insert\nlocal srep = string.rep\nlocal type = type\n"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/print_r.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 39f7f75a80c0f32498f199fdb0da24a5\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/sproto.lua",
    "chars": 5663,
    "preview": "local core = require \"sproto.core\"\nlocal assert = assert\n\nlocal sproto = {}\nlocal host = {}\n\nlocal weak_mt = { __mode = "
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/sproto.lua.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 4fb76b30430c9454c9a05c22fc014d63\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/sproto.new/LICENSE",
    "chars": 1080,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2014 codingnow.com\n\nPermission is hereby granted, free of charge, to any person obt"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/sproto.new/LICENSE.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 0b6dfee1e673bca4eae9a6d22a86a4a7\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/sproto.new/Makefile",
    "chars": 421,
    "preview": ".PHONY : all win clean\n\nall : linux\nwin : sproto.dll\n\n# For Linux\nlinux:\n\tmake sproto.so \"DLLFLAGS = -shared -fPIC\"\n# Fo"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/sproto.new/Makefile.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: d5ac1a9b0e7cf2e40b29b7e6fe75a1a2\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/sproto.new/README.md",
    "chars": 13916,
    "preview": "Introduction\n======\n\nSproto is an efficient serialization library for C, and focuses on lua binding. It's like Google pr"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/sproto.new/README.md.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: eea3f95ffce580c488d1c0da8487c18b\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "Assets/Plugins/tolua.bundle/Contents/Resources/sproto.new/lsproto.c",
    "chars": 16807,
    "preview": "#define LUA_LIB\n\n#include <string.h>\n#include <stdlib.h>\n#include \"msvcint.h\"\n\n#include \"lua.h\"\n#include \"lauxlib.h\"\n#in"
  }
]

// ... and 642 more files (download for full content)

About this extraction

This page contains the full source code of the yanghuan/CSharpLuaForUnity GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 842 files (3.1 MB), approximately 859.0k tokens, and a symbol index with 2732 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!