internal Array TableToArray(object luaParamValue, Type paramArrayType) { Array array; if (luaParamValue is LuaTable) { LuaTable luaTable = (LuaTable)luaParamValue; IDictionaryEnumerator enumerator = luaTable.GetEnumerator(); enumerator.Reset(); array = Array.CreateInstance(paramArrayType, luaTable.Values.get_Count()); int num = 0; while (enumerator.MoveNext()) { object obj = enumerator.get_Value(); if (paramArrayType == typeof(object) && obj != null && obj.GetType() == typeof(double) && MetaFunctions.IsInteger((double)obj)) { obj = Convert.ToInt32((double)obj); } array.SetValue(Convert.ChangeType(obj, paramArrayType), num); num++; } } else { array = Array.CreateInstance(paramArrayType, 1); array.SetValue(luaParamValue, 0); } return(array); }