>>8
A = {X = 10}
B = {}
setmetatable(B,{
__index = function(t,k)
if k=="X" then return A.X+10 end
end,
__newindex = function(t,k,v)
rawset(t,k,v)
if k=="X" then A.X = t[k] - 10 end
end})

print(A.X,B.X) -- 10 20
A.X = A.X + 1
print(A.X,B.X) -- 11 21
B.X = B.X + 1
print(A.X,B.X) -- 12 22