local mytable = {} local mt = {} function mt.__newindex(t,k,new_value) local previous_value = mt[k] rawset(mt,k,new_value) if previous_value and new_value == nil then print "__remove() triggered" end end mt.__index = mt setmetatable(mytable, mt) mytable.key = 123 print(mytable.key) mytable.key = nil print(mytable.key) -- your code goes here