CStringW DebugBasicSerialize( LuaObject& obj )
{
	if ( obj.Type() == LUA_TNUMBER )
	{
		CStringW str;
		str.Format( L"%.16g", obj.GetNumber() );
		return str;
	}

	else if ( obj.Type() == LUA_TBOOLEAN )
	{
		return obj.GetBoolean() ? L"true" : L"false";
	}

	else if (obj.Type() == LUA_TSTRING)
	{
		CString str = obj.GetString();
		if ( str == "!!!NIL!!!" )
			return L"nil";
		else if ( str == "!!!FUNCTION!!!" )
			return L"{function}";
		else if ( str == "!!!CFUNCTION!!!" )
			return L"{cfunction}";
		else if ( str == "!!!USERDATA!!!" )
			return L"{userdata}";
		else if ( str == "!!!TABLE!!!" )
			return L"{table}";
		return CStringW(str);
	}
#if LUA_WIDESTRING
	else if (obj.Type() == LUA_TWSTRING)
	{
		return CStringW((wchar_t*)obj.GetWString());
	}
#endif // LUA_WIDESTRING

	else
		return _T("Unknown");
}