```ts type LuaIterable<T> = Iterable<T> & { __luaIterable: never }; type LuaTuple<T extends any[]> = T & { __luaTuple: never }; ``` Solution for #579. Also could simplify implementation.