static int StopCoroutine(IntPtr L)
    {
        int count = LuaDLL.lua_gettop(L);

        Type[] types0 = { typeof(FSMBase), typeof(Coroutine) };
        Type[] types1 = { typeof(FSMBase), typeof(IEnumerator) };
        Type[] types2 = { typeof(FSMBase), typeof(string) };

        if (count == 2 && LuaScriptMgr.CheckTypes(L, types0, 1))
        {
            FSMBase   obj  = LuaScriptMgr.GetNetObject <FSMBase>(L, 1);
            Coroutine arg0 = LuaScriptMgr.GetNetObject <Coroutine>(L, 2);
            obj.StopCoroutine(arg0);
            return(0);
        }
        else if (count == 2 && LuaScriptMgr.CheckTypes(L, types1, 1))
        {
            FSMBase     obj  = LuaScriptMgr.GetNetObject <FSMBase>(L, 1);
            IEnumerator arg0 = LuaScriptMgr.GetNetObject <IEnumerator>(L, 2);
            obj.StopCoroutine(arg0);
            return(0);
        }
        else if (count == 2 && LuaScriptMgr.CheckTypes(L, types2, 1))
        {
            FSMBase obj  = LuaScriptMgr.GetNetObject <FSMBase>(L, 1);
            string  arg0 = LuaScriptMgr.GetString(L, 2);
            obj.StopCoroutine(arg0);
            return(0);
        }
        else
        {
            LuaDLL.luaL_error(L, "invalid arguments to method: FSMBase.StopCoroutine");
        }

        return(0);
    }