Code:
function Slot:is_a()
adds the method to the table when it is "built". Later when you call Slot:_init()
Code:
local s = Slot(1,1)
overwrites the function(method) with the string causing
Code:
DEFAULT_CHAT_FRAME:AddMessage( s:is_a() )
to try and run it as a method when it's now a string.