public static bool IsArray(this LuaTable table, out LuaTableType tableType)
        {
            var i = 0;

            foreach (var tableKey in table.Keys)
            {
                if (tableKey is long j)
                {
                    if (j != ++i)
                    {
                        var keys = table.Keys.Cast <object>().Select(k => $"({k.GetType().GetFriendlyName()}){k}");
                        throw new Exception($"Possible a none one-based array? keys: {string.Join(", ", keys)}");
                        // return false;
                    }
                }
                else
                {
                    if (i != 0)
                    {
                        // var keys = table.Keys.Cast<object>().Select(k => k.ToString());
                        // Console.WriteLine($"Hybrid Lua Array Table Found! count: {i}; keys: {string.Join(", ", keys)}");
                        tableType = LuaTableType.Hybrid;
                    }
                    else
                    {
                        tableType = LuaTableType.Class;
                    }

                    return(false);
                }
            }

            tableType = LuaTableType.Array;
            return(true);
        }
 public ILuaTableReader this[LuaTableType t]
 {
     get
     {
         if (mDataReader.ContainsKey((byte)t))
         {
             return(mDataReader[(byte)t]);
         }
         return(null);
     }
 }