public static int constructor(IntPtr l)
    {
        int result;

        try
        {
            TinyCorutineHelper o = new TinyCorutineHelper();
            LuaObject.pushValue(l, true);
            LuaObject.pushValue(l, o);
            result = 2;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
    public static int Tick(IntPtr l)
    {
        int result;

        try
        {
            TinyCorutineHelper tinyCorutineHelper = (TinyCorutineHelper)LuaObject.checkSelf(l);
            tinyCorutineHelper.Tick();
            LuaObject.pushValue(l, true);
            result = 1;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
    public static int StartLuaCoroutine(IntPtr l)
    {
        int result;

        try
        {
            TinyCorutineHelper tinyCorutineHelper = (TinyCorutineHelper)LuaObject.checkSelf(l);
            LuaFunction        func;
            LuaObject.checkType(l, 2, out func);
            tinyCorutineHelper.StartLuaCoroutine(func);
            LuaObject.pushValue(l, true);
            result = 1;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
    public static int MoveNext_s(IntPtr l)
    {
        int result;

        try
        {
            IEnumerator iter;
            LuaObject.checkType <IEnumerator>(l, 1, out iter);
            bool b = TinyCorutineHelper.MoveNext(iter);
            LuaObject.pushValue(l, true);
            LuaObject.pushValue(l, b);
            result = 2;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
    public static int StartCorutine(IntPtr l)
    {
        int result;

        try
        {
            int total = LuaDLL.lua_gettop(l);
            if (LuaObject.matchType(l, total, 2, typeof(Func <IEnumerator>)))
            {
                TinyCorutineHelper tinyCorutineHelper = (TinyCorutineHelper)LuaObject.checkSelf(l);
                Func <IEnumerator> corutine;
                LuaObject.checkDelegate <Func <IEnumerator> >(l, 2, out corutine);
                tinyCorutineHelper.StartCorutine(corutine);
                LuaObject.pushValue(l, true);
                result = 1;
            }
            else if (LuaObject.matchType(l, total, 2, typeof(IEnumerator)))
            {
                TinyCorutineHelper tinyCorutineHelper2 = (TinyCorutineHelper)LuaObject.checkSelf(l);
                IEnumerator        corutine2;
                LuaObject.checkType <IEnumerator>(l, 2, out corutine2);
                tinyCorutineHelper2.StartCorutine(corutine2);
                LuaObject.pushValue(l, true);
                result = 1;
            }
            else
            {
                LuaObject.pushValue(l, false);
                LuaDLL.lua_pushstring(l, "No matched override function StartCorutine to call");
                result = 2;
            }
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }