--[[
	deviation: printable function not present in upstream
	Function that determines if an object is printable i.e. if the object
	doesn't have tostring output that is its memory address
]]

local function printable(obj)
	if typeof(obj) == "table" then
		return tostring(obj):find("table: 0x") == nil
	elseif typeof(obj) == "function" then
		return tostring(obj):find("function: 0x") == nil
	elseif typeof(obj) == "userdata" then
		return tostring(obj):find("userdata: 0x") == nil
	elseif typeof(obj) == "thread" then
		return tostring(obj):find("thread: 0x") == nil
	end

	return true
end
