local array_methods = {};
local array_mt = { __index = array_methods, __tostring = function (array) return array:concat(", "); end };
-local function new_array(_, t)
+local function new_array(self, t, _s, _var)
+ if type(t) == "function" then -- Assume iterator
+ t = self.collect(t, _s, _var);
+ end
return setmetatable(t or {}, array_mt);
end