local mt = { __index = function (self,key) if key == 1 then return self._obj:X() elseif key == 2 then return self._obj:Y() elseif key == "Sum" then return function (self) return self:X() + self:Y() end else return nil end end } local p = Point:new(2,3) local t = tolua.getpeertable(p) t._obj = p setmetatable(t,mt) assert(p[1]+p[2] == p:Sum()) local x, y = p:gets() assert(x==p[1] and y==p[2]) print("Peer test OK")