/* games-collection.c generated by valac 0.56.19, the Vala compiler
 * generated from games-collection.vala, do not modify */

#include "protonplus_core.h"
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <glib-object.h>
#include <glib/gstdio.h>
#include <glib/gi18n-lib.h>
#include <gee.h>
#include <gio/gio.h>
#include <gtk/gtk.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif

enum  {
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_0_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_GAME_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_NORMALIZED_NAME_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NATIVE_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NON_STEAM_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_INSTALL_DIRECTORY_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_PREFIX_DIRECTORY_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_PREFIX_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_TOOL_TITLE_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_SELECTED_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_NUM_PROPERTIES
};
static GParamSpec* proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
typedef struct _Block42Data Block42Data;
enum  {
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_0_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STORE_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_FILTERED_MODEL_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SORTED_MODEL_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SELECTION_MODEL_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_NAME_SORTER_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_PREFIX_SORTER_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_TOOL_SORTER_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_GENERATION_PROPERTY,
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_NUM_PROPERTIES
};
static GParamSpec* proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_NUM_PROPERTIES];
typedef struct _Block43Data Block43Data;
enum  {
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STATE_CHANGED_SIGNAL,
	PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_NUM_SIGNALS
};
static guint proton_plus_widgets_games_game_collection_signals[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_NUM_SIGNALS] = {0};

struct _ProtonPlusWidgetsGamesGameListItemPrivate {
	ProtonPlusModelsGame* _game;
	gchar* _normalized_name;
	gboolean _is_native;
	gboolean _is_non_steam;
	gboolean _has_install_directory;
	gboolean _has_prefix_directory;
	guint _prefix;
	gchar* _tool_title;
	gboolean _selected;
	gulong compatibility_tool_handler;
	gulong native_handler;
};

struct _Block42Data {
	int _ref_count_;
	ProtonPlusWidgetsGamesGameListItem* self;
	ProtonPlusModelsGame* game;
};

struct _ProtonPlusWidgetsGamesGameCollectionPrivate {
	GListStore* _store;
	GtkFilterListModel* _filtered_model;
	GtkSortListModel* _sorted_model;
	GtkMultiSelection* _selection_model;
	GtkStringSorter* _name_sorter;
	GtkNumericSorter* _prefix_sorter;
	GtkSorter* _tool_sorter;
	guint64 _generation;
	GtkCustomFilter* filter;
	GtkSorter* sorter;
	GeeHashMap* selection_handlers;
	GeeHashMap* sort_value_handlers;
	gulong sorter_changed_handler;
	gchar* query;
	ProtonPlusWidgetsGamesGameFilterMode filter_mode;
};

struct _Block43Data {
	int _ref_count_;
	ProtonPlusWidgetsGamesGameCollection* self;
	ProtonPlusWidgetsGamesGameListItem* item;
};

static gint ProtonPlusWidgetsGamesGameListItem_private_offset;
static gpointer proton_plus_widgets_games_game_list_item_parent_class = NULL;
static gint ProtonPlusWidgetsGamesGameCollection_private_offset;
static gpointer proton_plus_widgets_games_game_collection_parent_class = NULL;

static Block42Data* block42_data_ref (Block42Data* _data42_);
static void block42_data_unref (void * _userdata_);
static void proton_plus_widgets_games_game_list_item_set_normalized_name (ProtonPlusWidgetsGamesGameListItem* self,
                                                                   const gchar* value);
static void proton_plus_widgets_games_game_list_item_set_is_native (ProtonPlusWidgetsGamesGameListItem* self,
                                                             gboolean value);
static void proton_plus_widgets_games_game_list_item_set_is_non_steam (ProtonPlusWidgetsGamesGameListItem* self,
                                                                gboolean value);
static void proton_plus_widgets_games_game_list_item_set_has_install_directory (ProtonPlusWidgetsGamesGameListItem* self,
                                                                         gboolean value);
static void proton_plus_widgets_games_game_list_item_set_has_prefix_directory (ProtonPlusWidgetsGamesGameListItem* self,
                                                                        gboolean value);
static void proton_plus_widgets_games_game_list_item_set_prefix (ProtonPlusWidgetsGamesGameListItem* self,
                                                          guint value);
static gchar* proton_plus_widgets_games_game_list_item_resolve_tool_title (ProtonPlusWidgetsGamesGameListItem* self);
static void proton_plus_widgets_games_game_list_item_set_tool_title (ProtonPlusWidgetsGamesGameListItem* self,
                                                              const gchar* value);
static void _proton_plus_widgets_games_game_list_item_refresh_tool_title_g_object_notify (GObject* _sender,
                                                                                   GParamSpec* pspec,
                                                                                   gpointer self);
static void __lambda175_ (Block42Data* _data42_);
static void ___lambda175__g_object_notify (GObject* _sender,
                                    GParamSpec* pspec,
                                    gpointer self);
static void proton_plus_widgets_games_game_list_item_real_dispose (GObject* base);
static void proton_plus_widgets_games_game_list_item_finalize (GObject * obj);
static GType proton_plus_widgets_games_game_list_item_get_type_once (void);
static void _vala_proton_plus_widgets_games_game_list_item_get_property (GObject * object,
                                                                  guint property_id,
                                                                  GValue * value,
                                                                  GParamSpec * pspec);
static void _vala_proton_plus_widgets_games_game_list_item_set_property (GObject * object,
                                                                  guint property_id,
                                                                  const GValue * value,
                                                                  GParamSpec * pspec);
static void proton_plus_widgets_games_game_collection_set_store (ProtonPlusWidgetsGamesGameCollection* self,
                                                          GListStore* value);
static gboolean __lambda182_ (ProtonPlusWidgetsGamesGameCollection* self,
                       GObject* object);
static gboolean ___lambda182__gtk_custom_filter_func (GObject* item,
                                               gpointer self);
static void proton_plus_widgets_games_game_collection_set_filtered_model (ProtonPlusWidgetsGamesGameCollection* self,
                                                                   GtkFilterListModel* value);
static void proton_plus_widgets_games_game_collection_set_name_sorter (ProtonPlusWidgetsGamesGameCollection* self,
                                                                GtkStringSorter* value);
static void proton_plus_widgets_games_game_collection_set_prefix_sorter (ProtonPlusWidgetsGamesGameCollection* self,
                                                                  GtkNumericSorter* value);
static gint __lambda183_ (ProtonPlusWidgetsGamesGameCollection* self,
                   gconstpointer object_a,
                   gconstpointer object_b);
static gint ___lambda183__gcompare_data_func (gconstpointer a,
                                       gconstpointer b,
                                       gpointer self);
static void proton_plus_widgets_games_game_collection_set_tool_sorter (ProtonPlusWidgetsGamesGameCollection* self,
                                                                GtkSorter* value);
static void proton_plus_widgets_games_game_collection_set_sorted_model (ProtonPlusWidgetsGamesGameCollection* self,
                                                                 GtkSortListModel* value);
static void proton_plus_widgets_games_game_collection_set_selection_model (ProtonPlusWidgetsGamesGameCollection* self,
                                                                    GtkMultiSelection* value);
static void proton_plus_widgets_games_game_collection_connect_sorter (ProtonPlusWidgetsGamesGameCollection* self);
static Block43Data* block43_data_ref (Block43Data* _data43_);
static void block43_data_unref (void * _userdata_);
static void ____lambda185_ (Block43Data* _data43_);
static void proton_plus_widgets_games_game_collection_sync_item_selection (ProtonPlusWidgetsGamesGameCollection* self,
                                                                    ProtonPlusWidgetsGamesGameListItem* item);
static void _____lambda185__g_object_notify (GObject* _sender,
                                      GParamSpec* pspec,
                                      gpointer self);
static void ____lambda186_ (ProtonPlusWidgetsGamesGameCollection* self);
static void _____lambda186__g_object_notify (GObject* _sender,
                                      GParamSpec* pspec,
                                      gpointer self);
static void proton_plus_widgets_games_game_collection_set_generation (ProtonPlusWidgetsGamesGameCollection* self,
                                                               guint64 value);
static void proton_plus_widgets_games_game_collection_sync_visible_selection (ProtonPlusWidgetsGamesGameCollection* self);
static gint __lambda187_ (ProtonPlusWidgetsGamesGameCollection* self,
                   ProtonPlusWidgetsGamesGameListItem* a,
                   ProtonPlusWidgetsGamesGameListItem* b);
static gint ___lambda187__gcompare_data_func (gconstpointer a,
                                       gconstpointer b,
                                       gpointer self);
static void __lambda184_ (ProtonPlusWidgetsGamesGameCollection* self);
static void ___lambda184__gtk_sorter_changed (GtkSorter* _sender,
                                       GtkSorterChange change,
                                       gpointer self);
static void proton_plus_widgets_games_game_collection_real_dispose (GObject* base);
static void proton_plus_widgets_games_game_collection_finalize (GObject * obj);
static GType proton_plus_widgets_games_game_collection_get_type_once (void);
static void _vala_proton_plus_widgets_games_game_collection_get_property (GObject * object,
                                                                   guint property_id,
                                                                   GValue * value,
                                                                   GParamSpec * pspec);
static void _vala_proton_plus_widgets_games_game_collection_set_property (GObject * object,
                                                                   guint property_id,
                                                                   const GValue * value,
                                                                   GParamSpec * pspec);

static GType
proton_plus_widgets_games_game_filter_mode_get_type_once (void)
{
	static const GEnumValue values[] = {{PROTON_PLUS_WIDGETS_GAMES_GAME_FILTER_MODE_ALL, "PROTON_PLUS_WIDGETS_GAMES_GAME_FILTER_MODE_ALL", "all"}, {PROTON_PLUS_WIDGETS_GAMES_GAME_FILTER_MODE_NATIVE, "PROTON_PLUS_WIDGETS_GAMES_GAME_FILTER_MODE_NATIVE", "native"}, {PROTON_PLUS_WIDGETS_GAMES_GAME_FILTER_MODE_NON_STEAM, "PROTON_PLUS_WIDGETS_GAMES_GAME_FILTER_MODE_NON_STEAM", "non-steam"}, {0, NULL, NULL}};
	GType proton_plus_widgets_games_game_filter_mode_type_id;
	proton_plus_widgets_games_game_filter_mode_type_id = g_enum_register_static ("ProtonPlusWidgetsGamesGameFilterMode", values);
	return proton_plus_widgets_games_game_filter_mode_type_id;
}

GType
proton_plus_widgets_games_game_filter_mode_get_type (void)
{
	static volatile gsize proton_plus_widgets_games_game_filter_mode_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_widgets_games_game_filter_mode_type_id__once)) {
		GType proton_plus_widgets_games_game_filter_mode_type_id;
		proton_plus_widgets_games_game_filter_mode_type_id = proton_plus_widgets_games_game_filter_mode_get_type_once ();
		g_once_init_leave (&proton_plus_widgets_games_game_filter_mode_type_id__once, proton_plus_widgets_games_game_filter_mode_type_id);
	}
	return proton_plus_widgets_games_game_filter_mode_type_id__once;
}

static inline gpointer
proton_plus_widgets_games_game_list_item_get_instance_private (ProtonPlusWidgetsGamesGameListItem* self)
{
	return G_STRUCT_MEMBER_P (self, ProtonPlusWidgetsGamesGameListItem_private_offset);
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

static Block42Data*
block42_data_ref (Block42Data* _data42_)
{
	g_atomic_int_inc (&_data42_->_ref_count_);
	return _data42_;
}

static void
block42_data_unref (void * _userdata_)
{
	Block42Data* _data42_;
	_data42_ = (Block42Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data42_->_ref_count_)) {
		ProtonPlusWidgetsGamesGameListItem* self;
		self = _data42_->self;
		_g_object_unref0 (_data42_->game);
		_g_object_unref0 (self);
		g_slice_free (Block42Data, _data42_);
	}
}

static void
_proton_plus_widgets_games_game_list_item_refresh_tool_title_g_object_notify (GObject* _sender,
                                                                              GParamSpec* pspec,
                                                                              gpointer self)
{
	proton_plus_widgets_games_game_list_item_refresh_tool_title ((ProtonPlusWidgetsGamesGameListItem*) self);
}

static void
__lambda175_ (Block42Data* _data42_)
{
	ProtonPlusWidgetsGamesGameListItem* self;
	gboolean _tmp0_;
	gboolean _tmp1_;
	self = _data42_->self;
	_tmp0_ = proton_plus_models_game_get_is_native (_data42_->game);
	_tmp1_ = _tmp0_;
	proton_plus_widgets_games_game_list_item_set_is_native (self, _tmp1_);
	g_object_notify ((GObject*) self, "is-native");
	proton_plus_widgets_games_game_list_item_refresh_tool_title (self);
}

static void
___lambda175__g_object_notify (GObject* _sender,
                               GParamSpec* pspec,
                               gpointer self)
{
	__lambda175_ (self);
}

ProtonPlusWidgetsGamesGameListItem*
proton_plus_widgets_games_game_list_item_construct (GType object_type,
                                                    ProtonPlusModelsGame* game)
{
	ProtonPlusWidgetsGamesGameListItem * self = NULL;
	Block42Data* _data42_;
	ProtonPlusModelsGame* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gboolean _tmp5_;
	gboolean _tmp6_;
	gboolean _tmp7_ = FALSE;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	guint _tmp14_;
	guint _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	gulong _tmp18_;
	gulong _tmp19_;
	g_return_val_if_fail (game != NULL, NULL);
	_data42_ = g_slice_new0 (Block42Data);
	_data42_->_ref_count_ = 1;
	_tmp0_ = _g_object_ref0 (game);
	_g_object_unref0 (_data42_->game);
	_data42_->game = _tmp0_;
	self = (ProtonPlusWidgetsGamesGameListItem*) g_object_new (object_type, "game", _data42_->game, NULL);
	_data42_->self = g_object_ref (self);
	_tmp1_ = proton_plus_models_game_get_name (_data42_->game);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_utf8_strdown (_tmp2_, (gssize) -1);
	_tmp4_ = _tmp3_;
	proton_plus_widgets_games_game_list_item_set_normalized_name (self, _tmp4_);
	_g_free0 (_tmp4_);
	_tmp5_ = proton_plus_models_game_get_is_native (_data42_->game);
	_tmp6_ = _tmp5_;
	proton_plus_widgets_games_game_list_item_set_is_native (self, _tmp6_);
	if (PROTON_PLUS_MODELS_GAMES_IS_STEAM (_data42_->game)) {
		gboolean _tmp8_;
		gboolean _tmp9_;
		_tmp8_ = proton_plus_models_games_steam_get_is_non_steam (G_TYPE_CHECK_INSTANCE_CAST (_data42_->game, PROTON_PLUS_MODELS_GAMES_TYPE_STEAM, ProtonPlusModelsGamesSteam));
		_tmp9_ = _tmp8_;
		_tmp7_ = _tmp9_;
	} else {
		_tmp7_ = FALSE;
	}
	proton_plus_widgets_games_game_list_item_set_is_non_steam (self, _tmp7_);
	_tmp10_ = proton_plus_models_game_get_installdir (_data42_->game);
	_tmp11_ = _tmp10_;
	proton_plus_widgets_games_game_list_item_set_has_install_directory (self, g_file_test (_tmp11_, G_FILE_TEST_IS_DIR));
	_tmp12_ = proton_plus_models_game_get_prefixdir (_data42_->game);
	_tmp13_ = _tmp12_;
	proton_plus_widgets_games_game_list_item_set_has_prefix_directory (self, g_file_test (_tmp13_, G_FILE_TEST_IS_DIR));
	_tmp14_ = proton_plus_models_game_get_prefix (_data42_->game);
	_tmp15_ = _tmp14_;
	proton_plus_widgets_games_game_list_item_set_prefix (self, _tmp15_);
	_tmp16_ = proton_plus_widgets_games_game_list_item_resolve_tool_title (self);
	_tmp17_ = _tmp16_;
	proton_plus_widgets_games_game_list_item_set_tool_title (self, _tmp17_);
	_g_free0 (_tmp17_);
	_tmp18_ = g_signal_connect_object ((GObject*) _data42_->game, "notify::compatibility-tool", (GCallback) _proton_plus_widgets_games_game_list_item_refresh_tool_title_g_object_notify, self, 0);
	self->priv->compatibility_tool_handler = _tmp18_;
	_tmp19_ = g_signal_connect_data ((GObject*) _data42_->game, "notify::is-native", (GCallback) ___lambda175__g_object_notify, block42_data_ref (_data42_), (GClosureNotify) block42_data_unref, 0);
	self->priv->native_handler = _tmp19_;
	block42_data_unref (_data42_);
	_data42_ = NULL;
	return self;
}

ProtonPlusWidgetsGamesGameListItem*
proton_plus_widgets_games_game_list_item_new (ProtonPlusModelsGame* game)
{
	return proton_plus_widgets_games_game_list_item_construct (PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, game);
}

static gboolean
string_contains (const gchar* self,
                 const gchar* needle)
{
	gchar* _tmp0_;
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (needle != NULL, FALSE);
	_tmp0_ = strstr ((gchar*) self, (gchar*) needle);
	result = _tmp0_ != NULL;
	return result;
}

gboolean
proton_plus_widgets_games_game_list_item_matches (ProtonPlusWidgetsGamesGameListItem* self,
                                                  const gchar* query,
                                                  ProtonPlusWidgetsGamesGameFilterMode mode)
{
	const gchar* _tmp0_;
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (query != NULL, FALSE);
	_tmp0_ = self->priv->_normalized_name;
	if (!string_contains (_tmp0_, query)) {
		result = FALSE;
		return result;
	}
	switch (mode) {
		case PROTON_PLUS_WIDGETS_GAMES_GAME_FILTER_MODE_NATIVE:
		{
			gboolean _tmp1_;
			_tmp1_ = self->priv->_is_native;
			result = _tmp1_;
			return result;
		}
		case PROTON_PLUS_WIDGETS_GAMES_GAME_FILTER_MODE_NON_STEAM:
		{
			gboolean _tmp2_;
			_tmp2_ = self->priv->_is_non_steam;
			result = _tmp2_;
			return result;
		}
		default:
		{
			result = TRUE;
			return result;
		}
	}
}

void
proton_plus_widgets_games_game_list_item_refresh_tool_title (ProtonPlusWidgetsGamesGameListItem* self)
{
	gchar* title = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	g_return_if_fail (self != NULL);
	_tmp0_ = proton_plus_widgets_games_game_list_item_resolve_tool_title (self);
	title = _tmp0_;
	_tmp1_ = self->priv->_tool_title;
	_tmp2_ = title;
	if (g_strcmp0 (_tmp1_, _tmp2_) == 0) {
		_g_free0 (title);
		return;
	}
	_tmp3_ = title;
	proton_plus_widgets_games_game_list_item_set_tool_title (self, _tmp3_);
	g_object_notify ((GObject*) self, "tool-title");
	_g_free0 (title);
}

static gchar*
proton_plus_widgets_games_game_list_item_resolve_tool_title (ProtonPlusWidgetsGamesGameListItem* self)
{
	gboolean _tmp0_ = FALSE;
	ProtonPlusModelsGame* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp29_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp1_ = self->priv->_game;
	_tmp2_ = proton_plus_models_game_get_compatibility_tool (_tmp1_);
	_tmp3_ = _tmp2_;
	if (g_strcmp0 (_tmp3_, "Default") == 0) {
		ProtonPlusModelsGame* _tmp4_;
		gboolean _tmp5_;
		gboolean _tmp6_;
		_tmp4_ = self->priv->_game;
		_tmp5_ = proton_plus_models_game_get_is_native (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp0_ = _tmp6_;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		gchar* _tmp7_;
		_tmp7_ = g_strdup (_ ("Native"));
		result = _tmp7_;
		return result;
	}
	{
		GeeLinkedList* _tool_list = NULL;
		ProtonPlusModelsGame* _tmp8_;
		ProtonPlusModelsLauncher* _tmp9_;
		ProtonPlusModelsLauncher* _tmp10_;
		GeeLinkedList* _tmp11_;
		gint _tool_size = 0;
		GeeLinkedList* _tmp12_;
		gint _tmp13_;
		gint _tmp14_;
		gint _tool_index = 0;
		_tmp8_ = self->priv->_game;
		_tmp9_ = proton_plus_models_game_get_launcher (_tmp8_);
		_tmp10_ = _tmp9_;
		_tmp11_ = _tmp10_->compatibility_tools;
		_tool_list = _tmp11_;
		_tmp12_ = _tool_list;
		_tmp13_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp12_);
		_tmp14_ = _tmp13_;
		_tool_size = _tmp14_;
		_tool_index = -1;
		while (TRUE) {
			gint _tmp15_;
			gint _tmp16_;
			ProtonPlusModelsCompatibilityTool* tool = NULL;
			GeeLinkedList* _tmp17_;
			gpointer _tmp18_;
			ProtonPlusModelsCompatibilityTool* _tmp19_;
			const gchar* _tmp20_;
			const gchar* _tmp21_;
			ProtonPlusModelsGame* _tmp22_;
			const gchar* _tmp23_;
			const gchar* _tmp24_;
			_tool_index = _tool_index + 1;
			_tmp15_ = _tool_index;
			_tmp16_ = _tool_size;
			if (!(_tmp15_ < _tmp16_)) {
				break;
			}
			_tmp17_ = _tool_list;
			_tmp18_ = gee_abstract_list_get ((GeeAbstractList*) _tmp17_, _tool_index);
			tool = (ProtonPlusModelsCompatibilityTool*) _tmp18_;
			_tmp19_ = tool;
			_tmp20_ = proton_plus_models_compatibility_tool_get_internal_title (_tmp19_);
			_tmp21_ = _tmp20_;
			_tmp22_ = self->priv->_game;
			_tmp23_ = proton_plus_models_game_get_compatibility_tool (_tmp22_);
			_tmp24_ = _tmp23_;
			if (g_strcmp0 (_tmp21_, _tmp24_) == 0) {
				ProtonPlusModelsCompatibilityTool* _tmp25_;
				const gchar* _tmp26_;
				const gchar* _tmp27_;
				gchar* _tmp28_;
				_tmp25_ = tool;
				_tmp26_ = proton_plus_models_compatibility_tool_get_display_title (_tmp25_);
				_tmp27_ = _tmp26_;
				_tmp28_ = g_strdup (_tmp27_);
				result = _tmp28_;
				_g_object_unref0 (tool);
				return result;
			}
			_g_object_unref0 (tool);
		}
	}
	_tmp29_ = g_strdup (_ ("Default"));
	result = _tmp29_;
	return result;
}

static void
proton_plus_widgets_games_game_list_item_real_dispose (GObject* base)
{
	ProtonPlusWidgetsGamesGameListItem * self;
	self = (ProtonPlusWidgetsGamesGameListItem*) base;
	if (self->priv->compatibility_tool_handler != ((gulong) 0)) {
		ProtonPlusModelsGame* _tmp0_;
		_tmp0_ = self->priv->_game;
		g_signal_handler_disconnect ((GObject*) _tmp0_, self->priv->compatibility_tool_handler);
		self->priv->compatibility_tool_handler = (gulong) 0;
	}
	if (self->priv->native_handler != ((gulong) 0)) {
		ProtonPlusModelsGame* _tmp1_;
		_tmp1_ = self->priv->_game;
		g_signal_handler_disconnect ((GObject*) _tmp1_, self->priv->native_handler);
		self->priv->native_handler = (gulong) 0;
	}
	G_OBJECT_CLASS (proton_plus_widgets_games_game_list_item_parent_class)->dispose (G_TYPE_CHECK_INSTANCE_CAST (self, G_TYPE_OBJECT, GObject));
}

ProtonPlusModelsGame*
proton_plus_widgets_games_game_list_item_get_game (ProtonPlusWidgetsGamesGameListItem* self)
{
	ProtonPlusModelsGame* result;
	ProtonPlusModelsGame* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_game;
	result = _tmp0_;
	return result;
}

static void
proton_plus_widgets_games_game_list_item_set_game (ProtonPlusWidgetsGamesGameListItem* self,
                                                   ProtonPlusModelsGame* value)
{
	ProtonPlusModelsGame* old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_list_item_get_game (self);
	if (old_value != value) {
		ProtonPlusModelsGame* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_game);
		self->priv->_game = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_GAME_PROPERTY]);
	}
}

const gchar*
proton_plus_widgets_games_game_list_item_get_normalized_name (ProtonPlusWidgetsGamesGameListItem* self)
{
	const gchar* result;
	const gchar* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_normalized_name;
	result = _tmp0_;
	return result;
}

static void
proton_plus_widgets_games_game_list_item_set_normalized_name (ProtonPlusWidgetsGamesGameListItem* self,
                                                              const gchar* value)
{
	gchar* old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_list_item_get_normalized_name (self);
	if (g_strcmp0 (value, old_value) != 0) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (value);
		_g_free0 (self->priv->_normalized_name);
		self->priv->_normalized_name = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_NORMALIZED_NAME_PROPERTY]);
	}
}

gboolean
proton_plus_widgets_games_game_list_item_get_is_native (ProtonPlusWidgetsGamesGameListItem* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_is_native;
	return result;
}

static void
proton_plus_widgets_games_game_list_item_set_is_native (ProtonPlusWidgetsGamesGameListItem* self,
                                                        gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_list_item_get_is_native (self);
	if (old_value != value) {
		self->priv->_is_native = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NATIVE_PROPERTY]);
	}
}

gboolean
proton_plus_widgets_games_game_list_item_get_is_non_steam (ProtonPlusWidgetsGamesGameListItem* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_is_non_steam;
	return result;
}

static void
proton_plus_widgets_games_game_list_item_set_is_non_steam (ProtonPlusWidgetsGamesGameListItem* self,
                                                           gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_list_item_get_is_non_steam (self);
	if (old_value != value) {
		self->priv->_is_non_steam = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NON_STEAM_PROPERTY]);
	}
}

gboolean
proton_plus_widgets_games_game_list_item_get_has_install_directory (ProtonPlusWidgetsGamesGameListItem* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_has_install_directory;
	return result;
}

static void
proton_plus_widgets_games_game_list_item_set_has_install_directory (ProtonPlusWidgetsGamesGameListItem* self,
                                                                    gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_list_item_get_has_install_directory (self);
	if (old_value != value) {
		self->priv->_has_install_directory = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_INSTALL_DIRECTORY_PROPERTY]);
	}
}

gboolean
proton_plus_widgets_games_game_list_item_get_has_prefix_directory (ProtonPlusWidgetsGamesGameListItem* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_has_prefix_directory;
	return result;
}

static void
proton_plus_widgets_games_game_list_item_set_has_prefix_directory (ProtonPlusWidgetsGamesGameListItem* self,
                                                                   gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_list_item_get_has_prefix_directory (self);
	if (old_value != value) {
		self->priv->_has_prefix_directory = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_PREFIX_DIRECTORY_PROPERTY]);
	}
}

guint
proton_plus_widgets_games_game_list_item_get_prefix (ProtonPlusWidgetsGamesGameListItem* self)
{
	guint result;
	g_return_val_if_fail (self != NULL, 0U);
	result = self->priv->_prefix;
	return result;
}

static void
proton_plus_widgets_games_game_list_item_set_prefix (ProtonPlusWidgetsGamesGameListItem* self,
                                                     guint value)
{
	guint old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_list_item_get_prefix (self);
	if (old_value != value) {
		self->priv->_prefix = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_PREFIX_PROPERTY]);
	}
}

const gchar*
proton_plus_widgets_games_game_list_item_get_tool_title (ProtonPlusWidgetsGamesGameListItem* self)
{
	const gchar* result;
	const gchar* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_tool_title;
	result = _tmp0_;
	return result;
}

static void
proton_plus_widgets_games_game_list_item_set_tool_title (ProtonPlusWidgetsGamesGameListItem* self,
                                                         const gchar* value)
{
	gchar* old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_list_item_get_tool_title (self);
	if (g_strcmp0 (value, old_value) != 0) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (value);
		_g_free0 (self->priv->_tool_title);
		self->priv->_tool_title = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_TOOL_TITLE_PROPERTY]);
	}
}

gboolean
proton_plus_widgets_games_game_list_item_get_selected (ProtonPlusWidgetsGamesGameListItem* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_selected;
	return result;
}

void
proton_plus_widgets_games_game_list_item_set_selected (ProtonPlusWidgetsGamesGameListItem* self,
                                                       gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_list_item_get_selected (self);
	if (old_value != value) {
		self->priv->_selected = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_SELECTED_PROPERTY]);
	}
}

static void
proton_plus_widgets_games_game_list_item_class_init (ProtonPlusWidgetsGamesGameListItemClass * klass,
                                                     gpointer klass_data)
{
	proton_plus_widgets_games_game_list_item_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ProtonPlusWidgetsGamesGameListItem_private_offset);
	((GObjectClass *) klass)->dispose = (void (*) (GObject*)) proton_plus_widgets_games_game_list_item_real_dispose;
	G_OBJECT_CLASS (klass)->get_property = _vala_proton_plus_widgets_games_game_list_item_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_proton_plus_widgets_games_game_list_item_set_property;
	G_OBJECT_CLASS (klass)->finalize = proton_plus_widgets_games_game_list_item_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_GAME_PROPERTY, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_GAME_PROPERTY] = g_param_spec_object ("game", "game", "game", PROTON_PLUS_MODELS_TYPE_GAME, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_NORMALIZED_NAME_PROPERTY, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_NORMALIZED_NAME_PROPERTY] = g_param_spec_string ("normalized-name", "normalized-name", "normalized-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NATIVE_PROPERTY, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NATIVE_PROPERTY] = g_param_spec_boolean ("is-native", "is-native", "is-native", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NON_STEAM_PROPERTY, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NON_STEAM_PROPERTY] = g_param_spec_boolean ("is-non-steam", "is-non-steam", "is-non-steam", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_INSTALL_DIRECTORY_PROPERTY, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_INSTALL_DIRECTORY_PROPERTY] = g_param_spec_boolean ("has-install-directory", "has-install-directory", "has-install-directory", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_PREFIX_DIRECTORY_PROPERTY, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_PREFIX_DIRECTORY_PROPERTY] = g_param_spec_boolean ("has-prefix-directory", "has-prefix-directory", "has-prefix-directory", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_PREFIX_PROPERTY, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_PREFIX_PROPERTY] = g_param_spec_uint ("prefix", "prefix", "prefix", 0, G_MAXUINT, 0U, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_TOOL_TITLE_PROPERTY, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_TOOL_TITLE_PROPERTY] = g_param_spec_string ("tool-title", "tool-title", "tool-title", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_SELECTED_PROPERTY, proton_plus_widgets_games_game_list_item_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_SELECTED_PROPERTY] = g_param_spec_boolean ("selected", "selected", "selected", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
}

static void
proton_plus_widgets_games_game_list_item_instance_init (ProtonPlusWidgetsGamesGameListItem * self,
                                                        gpointer klass)
{
	self->priv = proton_plus_widgets_games_game_list_item_get_instance_private (self);
	self->priv->_selected = FALSE;
	self->priv->compatibility_tool_handler = (gulong) 0;
	self->priv->native_handler = (gulong) 0;
}

static void
proton_plus_widgets_games_game_list_item_finalize (GObject * obj)
{
	ProtonPlusWidgetsGamesGameListItem * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem);
	_g_object_unref0 (self->priv->_game);
	_g_free0 (self->priv->_normalized_name);
	_g_free0 (self->priv->_tool_title);
	G_OBJECT_CLASS (proton_plus_widgets_games_game_list_item_parent_class)->finalize (obj);
}

static GType
proton_plus_widgets_games_game_list_item_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusWidgetsGamesGameListItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_widgets_games_game_list_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusWidgetsGamesGameListItem), 0, (GInstanceInitFunc) proton_plus_widgets_games_game_list_item_instance_init, NULL };
	GType proton_plus_widgets_games_game_list_item_type_id;
	proton_plus_widgets_games_game_list_item_type_id = g_type_register_static (G_TYPE_OBJECT, "ProtonPlusWidgetsGamesGameListItem", &g_define_type_info, 0);
	ProtonPlusWidgetsGamesGameListItem_private_offset = g_type_add_instance_private (proton_plus_widgets_games_game_list_item_type_id, sizeof (ProtonPlusWidgetsGamesGameListItemPrivate));
	return proton_plus_widgets_games_game_list_item_type_id;
}

GType
proton_plus_widgets_games_game_list_item_get_type (void)
{
	static volatile gsize proton_plus_widgets_games_game_list_item_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_widgets_games_game_list_item_type_id__once)) {
		GType proton_plus_widgets_games_game_list_item_type_id;
		proton_plus_widgets_games_game_list_item_type_id = proton_plus_widgets_games_game_list_item_get_type_once ();
		g_once_init_leave (&proton_plus_widgets_games_game_list_item_type_id__once, proton_plus_widgets_games_game_list_item_type_id);
	}
	return proton_plus_widgets_games_game_list_item_type_id__once;
}

static void
_vala_proton_plus_widgets_games_game_list_item_get_property (GObject * object,
                                                             guint property_id,
                                                             GValue * value,
                                                             GParamSpec * pspec)
{
	ProtonPlusWidgetsGamesGameListItem * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem);
	switch (property_id) {
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_GAME_PROPERTY:
		g_value_set_object (value, proton_plus_widgets_games_game_list_item_get_game (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_NORMALIZED_NAME_PROPERTY:
		g_value_set_string (value, proton_plus_widgets_games_game_list_item_get_normalized_name (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NATIVE_PROPERTY:
		g_value_set_boolean (value, proton_plus_widgets_games_game_list_item_get_is_native (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NON_STEAM_PROPERTY:
		g_value_set_boolean (value, proton_plus_widgets_games_game_list_item_get_is_non_steam (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_INSTALL_DIRECTORY_PROPERTY:
		g_value_set_boolean (value, proton_plus_widgets_games_game_list_item_get_has_install_directory (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_PREFIX_DIRECTORY_PROPERTY:
		g_value_set_boolean (value, proton_plus_widgets_games_game_list_item_get_has_prefix_directory (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_PREFIX_PROPERTY:
		g_value_set_uint (value, proton_plus_widgets_games_game_list_item_get_prefix (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_TOOL_TITLE_PROPERTY:
		g_value_set_string (value, proton_plus_widgets_games_game_list_item_get_tool_title (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_SELECTED_PROPERTY:
		g_value_set_boolean (value, proton_plus_widgets_games_game_list_item_get_selected (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_proton_plus_widgets_games_game_list_item_set_property (GObject * object,
                                                             guint property_id,
                                                             const GValue * value,
                                                             GParamSpec * pspec)
{
	ProtonPlusWidgetsGamesGameListItem * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem);
	switch (property_id) {
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_GAME_PROPERTY:
		proton_plus_widgets_games_game_list_item_set_game (self, g_value_get_object (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_NORMALIZED_NAME_PROPERTY:
		proton_plus_widgets_games_game_list_item_set_normalized_name (self, g_value_get_string (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NATIVE_PROPERTY:
		proton_plus_widgets_games_game_list_item_set_is_native (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_IS_NON_STEAM_PROPERTY:
		proton_plus_widgets_games_game_list_item_set_is_non_steam (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_INSTALL_DIRECTORY_PROPERTY:
		proton_plus_widgets_games_game_list_item_set_has_install_directory (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_HAS_PREFIX_DIRECTORY_PROPERTY:
		proton_plus_widgets_games_game_list_item_set_has_prefix_directory (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_PREFIX_PROPERTY:
		proton_plus_widgets_games_game_list_item_set_prefix (self, g_value_get_uint (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_TOOL_TITLE_PROPERTY:
		proton_plus_widgets_games_game_list_item_set_tool_title (self, g_value_get_string (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_LIST_ITEM_SELECTED_PROPERTY:
		proton_plus_widgets_games_game_list_item_set_selected (self, g_value_get_boolean (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static inline gpointer
proton_plus_widgets_games_game_collection_get_instance_private (ProtonPlusWidgetsGamesGameCollection* self)
{
	return G_STRUCT_MEMBER_P (self, ProtonPlusWidgetsGamesGameCollection_private_offset);
}

static gboolean
__lambda182_ (ProtonPlusWidgetsGamesGameCollection* self,
              GObject* object)
{
	ProtonPlusWidgetsGamesGameListItem* item = NULL;
	ProtonPlusWidgetsGamesGameListItem* _tmp0_;
	gboolean _tmp1_ = FALSE;
	ProtonPlusWidgetsGamesGameListItem* _tmp2_;
	gboolean result;
	g_return_val_if_fail (object != NULL, FALSE);
	_tmp0_ = _g_object_ref0 (PROTON_PLUS_WIDGETS_GAMES_IS_GAME_LIST_ITEM (object) ? ((ProtonPlusWidgetsGamesGameListItem*) object) : NULL);
	item = _tmp0_;
	_tmp2_ = item;
	if (_tmp2_ != NULL) {
		ProtonPlusWidgetsGamesGameListItem* _tmp3_;
		const gchar* _tmp4_;
		_tmp3_ = item;
		_tmp4_ = self->priv->query;
		_tmp1_ = proton_plus_widgets_games_game_list_item_matches (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem), _tmp4_, self->priv->filter_mode);
	} else {
		_tmp1_ = FALSE;
	}
	result = _tmp1_;
	_g_object_unref0 (item);
	return result;
}

static gboolean
___lambda182__gtk_custom_filter_func (GObject* item,
                                      gpointer self)
{
	gboolean result;
	result = __lambda182_ ((ProtonPlusWidgetsGamesGameCollection*) self, item);
	return result;
}

static gint
__lambda183_ (ProtonPlusWidgetsGamesGameCollection* self,
              gconstpointer object_a,
              gconstpointer object_b)
{
	gint _result_ = 0;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	gint _tmp8_;
	gint result;
	_tmp0_ = proton_plus_widgets_games_game_list_item_get_tool_title (G_TYPE_CHECK_INSTANCE_CAST (object_a, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem));
	_tmp1_ = _tmp0_;
	_tmp2_ = g_utf8_casefold (_tmp1_, (gssize) -1);
	_tmp3_ = _tmp2_;
	_tmp4_ = proton_plus_widgets_games_game_list_item_get_tool_title (G_TYPE_CHECK_INSTANCE_CAST (object_b, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem));
	_tmp5_ = _tmp4_;
	_tmp6_ = g_utf8_casefold (_tmp5_, (gssize) -1);
	_tmp7_ = _tmp6_;
	_tmp8_ = g_utf8_collate (_tmp3_, _tmp7_);
	_g_free0 (_tmp7_);
	_g_free0 (_tmp3_);
	_result_ = _tmp8_;
	if (_result_ < 0) {
		result = (gint) GTK_ORDERING_SMALLER;
		return result;
	}
	if (_result_ > 0) {
		result = (gint) GTK_ORDERING_LARGER;
		return result;
	}
	result = (gint) GTK_ORDERING_EQUAL;
	return result;
}

static gint
___lambda183__gcompare_data_func (gconstpointer a,
                                  gconstpointer b,
                                  gpointer self)
{
	gint result;
	result = __lambda183_ ((ProtonPlusWidgetsGamesGameCollection*) self, a, b);
	return result;
}

ProtonPlusWidgetsGamesGameCollection*
proton_plus_widgets_games_game_collection_construct (GType object_type)
{
	ProtonPlusWidgetsGamesGameCollection * self = NULL;
	GListStore* _tmp0_;
	GListStore* _tmp1_;
	GtkCustomFilter* _tmp2_;
	GListStore* _tmp3_;
	GListModel* _tmp4_;
	GtkCustomFilter* _tmp5_;
	GtkFilter* _tmp6_;
	GtkFilterListModel* _tmp7_;
	GtkFilterListModel* _tmp8_;
	GtkPropertyExpression* _tmp9_;
	GtkStringSorter* _tmp10_;
	GtkStringSorter* _tmp11_;
	GtkPropertyExpression* _tmp12_;
	GtkNumericSorter* _tmp13_;
	GtkNumericSorter* _tmp14_;
	GtkCustomSorter* _tmp15_;
	GtkCustomSorter* _tmp16_;
	GtkStringSorter* _tmp17_;
	GtkSorter* _tmp18_;
	GtkFilterListModel* _tmp19_;
	GListModel* _tmp20_;
	GtkSorter* _tmp21_;
	GtkSorter* _tmp22_;
	GtkSortListModel* _tmp23_;
	GtkSortListModel* _tmp24_;
	GtkSortListModel* _tmp25_;
	GListModel* _tmp26_;
	GtkMultiSelection* _tmp27_;
	GtkMultiSelection* _tmp28_;
	GeeHashMap* _tmp29_;
	GeeHashMap* _tmp30_;
	self = (ProtonPlusWidgetsGamesGameCollection*) g_object_new (object_type, NULL);
	_tmp0_ = g_list_store_new (PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM);
	_tmp1_ = _tmp0_;
	proton_plus_widgets_games_game_collection_set_store (self, _tmp1_);
	_g_object_unref0 (_tmp1_);
	_tmp2_ = gtk_custom_filter_new (___lambda182__gtk_custom_filter_func, g_object_ref (self), g_object_unref);
	_g_object_unref0 (self->priv->filter);
	self->priv->filter = _tmp2_;
	_tmp3_ = self->priv->_store;
	_tmp4_ = _g_object_ref0 ((GListModel*) _tmp3_);
	_tmp5_ = self->priv->filter;
	_tmp6_ = _g_object_ref0 ((GtkFilter*) _tmp5_);
	_tmp7_ = gtk_filter_list_model_new (_tmp4_, _tmp6_);
	_tmp8_ = _tmp7_;
	proton_plus_widgets_games_game_collection_set_filtered_model (self, _tmp8_);
	_g_object_unref0 (_tmp8_);
	_tmp9_ = (GtkPropertyExpression*) gtk_property_expression_new (PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, NULL, "normalized-name");
	_tmp10_ = gtk_string_sorter_new ((GtkExpression*) _tmp9_);
	_tmp11_ = _tmp10_;
	proton_plus_widgets_games_game_collection_set_name_sorter (self, _tmp11_);
	_g_object_unref0 (_tmp11_);
	_tmp12_ = (GtkPropertyExpression*) gtk_property_expression_new (PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, NULL, "prefix");
	_tmp13_ = gtk_numeric_sorter_new ((GtkExpression*) _tmp12_);
	_tmp14_ = _tmp13_;
	proton_plus_widgets_games_game_collection_set_prefix_sorter (self, _tmp14_);
	_g_object_unref0 (_tmp14_);
	_tmp15_ = gtk_custom_sorter_new (___lambda183__gcompare_data_func, g_object_ref (self), g_object_unref);
	_tmp16_ = _tmp15_;
	proton_plus_widgets_games_game_collection_set_tool_sorter (self, (GtkSorter*) _tmp16_);
	_g_object_unref0 (_tmp16_);
	_tmp17_ = self->priv->_name_sorter;
	_tmp18_ = _g_object_ref0 ((GtkSorter*) _tmp17_);
	_g_object_unref0 (self->priv->sorter);
	self->priv->sorter = _tmp18_;
	_tmp19_ = self->priv->_filtered_model;
	_tmp20_ = _g_object_ref0 ((GListModel*) _tmp19_);
	_tmp21_ = self->priv->sorter;
	_tmp22_ = _g_object_ref0 (_tmp21_);
	_tmp23_ = gtk_sort_list_model_new (_tmp20_, _tmp22_);
	_tmp24_ = _tmp23_;
	proton_plus_widgets_games_game_collection_set_sorted_model (self, _tmp24_);
	_g_object_unref0 (_tmp24_);
	_tmp25_ = self->priv->_sorted_model;
	_tmp26_ = _g_object_ref0 ((GListModel*) _tmp25_);
	_tmp27_ = gtk_multi_selection_new (_tmp26_);
	_tmp28_ = _tmp27_;
	proton_plus_widgets_games_game_collection_set_selection_model (self, _tmp28_);
	_g_object_unref0 (_tmp28_);
	_tmp29_ = gee_hash_map_new (PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, G_TYPE_ULONG, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
	_g_object_unref0 (self->priv->selection_handlers);
	self->priv->selection_handlers = _tmp29_;
	_tmp30_ = gee_hash_map_new (PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, G_TYPE_ULONG, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
	_g_object_unref0 (self->priv->sort_value_handlers);
	self->priv->sort_value_handlers = _tmp30_;
	proton_plus_widgets_games_game_collection_connect_sorter (self);
	return self;
}

ProtonPlusWidgetsGamesGameCollection*
proton_plus_widgets_games_game_collection_new (void)
{
	return proton_plus_widgets_games_game_collection_construct (PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_COLLECTION);
}

static Block43Data*
block43_data_ref (Block43Data* _data43_)
{
	g_atomic_int_inc (&_data43_->_ref_count_);
	return _data43_;
}

static void
block43_data_unref (void * _userdata_)
{
	Block43Data* _data43_;
	_data43_ = (Block43Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data43_->_ref_count_)) {
		ProtonPlusWidgetsGamesGameCollection* self;
		self = _data43_->self;
		_g_object_unref0 (_data43_->item);
		_g_object_unref0 (self);
		g_slice_free (Block43Data, _data43_);
	}
}

static void
____lambda185_ (Block43Data* _data43_)
{
	ProtonPlusWidgetsGamesGameCollection* self;
	ProtonPlusWidgetsGamesGameListItem* _tmp0_;
	self = _data43_->self;
	_tmp0_ = _data43_->item;
	proton_plus_widgets_games_game_collection_sync_item_selection (self, _tmp0_);
	g_signal_emit (self, proton_plus_widgets_games_game_collection_signals[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STATE_CHANGED_SIGNAL], 0);
}

static void
_____lambda185__g_object_notify (GObject* _sender,
                                 GParamSpec* pspec,
                                 gpointer self)
{
	____lambda185_ (self);
}

static void
____lambda186_ (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkSorter* _tmp0_;
	_tmp0_ = self->priv->_tool_sorter;
	gtk_sorter_changed (_tmp0_, GTK_SORTER_CHANGE_DIFFERENT);
}

static void
_____lambda186__g_object_notify (GObject* _sender,
                                 GParamSpec* pspec,
                                 gpointer self)
{
	____lambda186_ ((ProtonPlusWidgetsGamesGameCollection*) self);
}

void
proton_plus_widgets_games_game_collection_replace (ProtonPlusWidgetsGamesGameCollection* self,
                                                   GList* games)
{
	GeeHashMap* _tmp15_;
	GeeHashMap* _tmp31_;
	GtkMultiSelection* _tmp32_;
	GListStore* _tmp33_;
	guint64 _tmp47_;
	g_return_if_fail (self != NULL);
	{
		GeeIterator* _entry_it = NULL;
		GeeHashMap* _tmp0_;
		GeeSet* _tmp1_;
		GeeSet* _tmp2_;
		GeeSet* _tmp3_;
		GeeIterator* _tmp4_;
		GeeIterator* _tmp5_;
		_tmp0_ = self->priv->selection_handlers;
		_tmp1_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _tmp0_);
		_tmp2_ = _tmp1_;
		_tmp3_ = _tmp2_;
		_tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
		_tmp5_ = _tmp4_;
		_g_object_unref0 (_tmp3_);
		_entry_it = _tmp5_;
		while (TRUE) {
			GeeIterator* _tmp6_;
			GeeMapEntry* entry = NULL;
			GeeIterator* _tmp7_;
			gpointer _tmp8_;
			GeeMapEntry* _tmp9_;
			gconstpointer _tmp10_;
			gconstpointer _tmp11_;
			GeeMapEntry* _tmp12_;
			gconstpointer _tmp13_;
			gconstpointer _tmp14_;
			_tmp6_ = _entry_it;
			if (!gee_iterator_next (_tmp6_)) {
				break;
			}
			_tmp7_ = _entry_it;
			_tmp8_ = gee_iterator_get (_tmp7_);
			entry = (GeeMapEntry*) _tmp8_;
			_tmp9_ = entry;
			_tmp10_ = gee_map_entry_get_key (_tmp9_);
			_tmp11_ = _tmp10_;
			_tmp12_ = entry;
			_tmp13_ = gee_map_entry_get_value (_tmp12_);
			_tmp14_ = _tmp13_;
			g_signal_handler_disconnect ((GObject*) ((ProtonPlusWidgetsGamesGameListItem*) _tmp11_), (gulong) ((guintptr) _tmp14_));
			_g_object_unref0 (entry);
		}
		_g_object_unref0 (_entry_it);
	}
	_tmp15_ = self->priv->selection_handlers;
	gee_abstract_map_clear ((GeeAbstractMap*) _tmp15_);
	{
		GeeIterator* _entry_it = NULL;
		GeeHashMap* _tmp16_;
		GeeSet* _tmp17_;
		GeeSet* _tmp18_;
		GeeSet* _tmp19_;
		GeeIterator* _tmp20_;
		GeeIterator* _tmp21_;
		_tmp16_ = self->priv->sort_value_handlers;
		_tmp17_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = _tmp18_;
		_tmp20_ = gee_iterable_iterator ((GeeIterable*) _tmp19_);
		_tmp21_ = _tmp20_;
		_g_object_unref0 (_tmp19_);
		_entry_it = _tmp21_;
		while (TRUE) {
			GeeIterator* _tmp22_;
			GeeMapEntry* entry = NULL;
			GeeIterator* _tmp23_;
			gpointer _tmp24_;
			GeeMapEntry* _tmp25_;
			gconstpointer _tmp26_;
			gconstpointer _tmp27_;
			GeeMapEntry* _tmp28_;
			gconstpointer _tmp29_;
			gconstpointer _tmp30_;
			_tmp22_ = _entry_it;
			if (!gee_iterator_next (_tmp22_)) {
				break;
			}
			_tmp23_ = _entry_it;
			_tmp24_ = gee_iterator_get (_tmp23_);
			entry = (GeeMapEntry*) _tmp24_;
			_tmp25_ = entry;
			_tmp26_ = gee_map_entry_get_key (_tmp25_);
			_tmp27_ = _tmp26_;
			_tmp28_ = entry;
			_tmp29_ = gee_map_entry_get_value (_tmp28_);
			_tmp30_ = _tmp29_;
			g_signal_handler_disconnect ((GObject*) ((ProtonPlusWidgetsGamesGameListItem*) _tmp27_), (gulong) ((guintptr) _tmp30_));
			_g_object_unref0 (entry);
		}
		_g_object_unref0 (_entry_it);
	}
	_tmp31_ = self->priv->sort_value_handlers;
	gee_abstract_map_clear ((GeeAbstractMap*) _tmp31_);
	_tmp32_ = self->priv->_selection_model;
	gtk_selection_model_unselect_all ((GtkSelectionModel*) _tmp32_);
	_tmp33_ = self->priv->_store;
	g_list_store_remove_all (_tmp33_);
	{
		GList* game_collection = NULL;
		GList* game_it = NULL;
		game_collection = games;
		for (game_it = game_collection; game_it != NULL; game_it = game_it->next) {
			ProtonPlusModelsGame* _tmp34_;
			ProtonPlusModelsGame* game = NULL;
			_tmp34_ = _g_object_ref0 ((ProtonPlusModelsGame*) game_it->data);
			game = _tmp34_;
			{
				Block43Data* _data43_;
				ProtonPlusModelsGame* _tmp35_;
				ProtonPlusWidgetsGamesGameListItem* _tmp36_;
				gulong handler_id = 0UL;
				ProtonPlusWidgetsGamesGameListItem* _tmp37_;
				gulong _tmp38_;
				GeeHashMap* _tmp39_;
				ProtonPlusWidgetsGamesGameListItem* _tmp40_;
				gulong sort_handler_id = 0UL;
				ProtonPlusWidgetsGamesGameListItem* _tmp41_;
				gulong _tmp42_;
				GeeHashMap* _tmp43_;
				ProtonPlusWidgetsGamesGameListItem* _tmp44_;
				GListStore* _tmp45_;
				ProtonPlusWidgetsGamesGameListItem* _tmp46_;
				_data43_ = g_slice_new0 (Block43Data);
				_data43_->_ref_count_ = 1;
				_data43_->self = g_object_ref (self);
				_tmp35_ = game;
				_tmp36_ = proton_plus_widgets_games_game_list_item_new (_tmp35_);
				_data43_->item = _tmp36_;
				_tmp37_ = _data43_->item;
				_tmp38_ = g_signal_connect_data ((GObject*) _tmp37_, "notify::selected", (GCallback) _____lambda185__g_object_notify, block43_data_ref (_data43_), (GClosureNotify) block43_data_unref, 0);
				handler_id = _tmp38_;
				_tmp39_ = self->priv->selection_handlers;
				_tmp40_ = _data43_->item;
				gee_abstract_map_set ((GeeAbstractMap*) _tmp39_, _tmp40_, (gpointer) ((guintptr) handler_id));
				_tmp41_ = _data43_->item;
				_tmp42_ = g_signal_connect_object ((GObject*) _tmp41_, "notify::tool-title", (GCallback) _____lambda186__g_object_notify, self, 0);
				sort_handler_id = _tmp42_;
				_tmp43_ = self->priv->sort_value_handlers;
				_tmp44_ = _data43_->item;
				gee_abstract_map_set ((GeeAbstractMap*) _tmp43_, _tmp44_, (gpointer) ((guintptr) sort_handler_id));
				_tmp45_ = self->priv->_store;
				_tmp46_ = _data43_->item;
				g_list_store_append (_tmp45_, (GObject*) _tmp46_);
				_g_object_unref0 (game);
				block43_data_unref (_data43_);
				_data43_ = NULL;
			}
		}
	}
	_tmp47_ = self->priv->_generation;
	proton_plus_widgets_games_game_collection_set_generation (self, _tmp47_ + 1);
	proton_plus_widgets_games_game_collection_sync_visible_selection (self);
	g_signal_emit (self, proton_plus_widgets_games_game_collection_signals[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STATE_CHANGED_SIGNAL], 0);
}

void
proton_plus_widgets_games_game_collection_set_sorter (ProtonPlusWidgetsGamesGameCollection* self,
                                                      GtkSorter* sorter)
{
	GtkSorter* _tmp0_;
	GtkSorter* _tmp2_;
	GtkSortListModel* _tmp3_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (sorter != NULL);
	_tmp0_ = self->priv->sorter;
	if (_tmp0_ == sorter) {
		return;
	}
	if (self->priv->sorter_changed_handler != ((gulong) 0)) {
		GtkSorter* _tmp1_;
		_tmp1_ = self->priv->sorter;
		g_signal_handler_disconnect ((GObject*) _tmp1_, self->priv->sorter_changed_handler);
		self->priv->sorter_changed_handler = (gulong) 0;
	}
	_tmp2_ = _g_object_ref0 (sorter);
	_g_object_unref0 (self->priv->sorter);
	self->priv->sorter = _tmp2_;
	_tmp3_ = self->priv->_sorted_model;
	gtk_sort_list_model_set_sorter (_tmp3_, sorter);
	proton_plus_widgets_games_game_collection_connect_sorter (self);
	proton_plus_widgets_games_game_collection_sync_visible_selection (self);
	g_signal_emit (self, proton_plus_widgets_games_game_collection_signals[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STATE_CHANGED_SIGNAL], 0);
}

void
proton_plus_widgets_games_game_collection_set_filter (ProtonPlusWidgetsGamesGameCollection* self,
                                                      const gchar* query,
                                                      ProtonPlusWidgetsGamesGameFilterMode mode)
{
	gchar* _tmp0_;
	GtkCustomFilter* _tmp1_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (query != NULL);
	_tmp0_ = g_strdup (query);
	_g_free0 (self->priv->query);
	self->priv->query = _tmp0_;
	self->priv->filter_mode = mode;
	_tmp1_ = self->priv->filter;
	gtk_filter_changed ((GtkFilter*) _tmp1_, GTK_FILTER_CHANGE_DIFFERENT);
	proton_plus_widgets_games_game_collection_sync_visible_selection (self);
	g_signal_emit (self, proton_plus_widgets_games_game_collection_signals[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STATE_CHANGED_SIGNAL], 0);
}

guint
proton_plus_widgets_games_game_collection_visible_count (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkSortListModel* _tmp0_;
	guint result;
	g_return_val_if_fail (self != NULL, 0U);
	_tmp0_ = self->priv->_sorted_model;
	result = g_list_model_get_n_items ((GListModel*) _tmp0_);
	return result;
}

guint
proton_plus_widgets_games_game_collection_selected_visible_count (ProtonPlusWidgetsGamesGameCollection* self)
{
	guint count = 0U;
	guint result;
	g_return_val_if_fail (self != NULL, 0U);
	count = (guint) 0;
	{
		guint i = 0U;
		i = (guint) 0;
		{
			gboolean _tmp0_ = FALSE;
			_tmp0_ = TRUE;
			while (TRUE) {
				GtkSortListModel* _tmp2_;
				ProtonPlusWidgetsGamesGameListItem* item = NULL;
				GtkSortListModel* _tmp3_;
				GObject* _tmp4_;
				ProtonPlusWidgetsGamesGameListItem* _tmp5_;
				gboolean _tmp6_ = FALSE;
				ProtonPlusWidgetsGamesGameListItem* _tmp7_;
				if (!_tmp0_) {
					guint _tmp1_;
					_tmp1_ = i;
					i = _tmp1_ + 1;
				}
				_tmp0_ = FALSE;
				_tmp2_ = self->priv->_sorted_model;
				if (!(i < g_list_model_get_n_items ((GListModel*) _tmp2_))) {
					break;
				}
				_tmp3_ = self->priv->_sorted_model;
				_tmp4_ = g_list_model_get_item ((GListModel*) _tmp3_, i);
				_tmp5_ = PROTON_PLUS_WIDGETS_GAMES_IS_GAME_LIST_ITEM (_tmp4_) ? ((ProtonPlusWidgetsGamesGameListItem*) _tmp4_) : NULL;
				if (_tmp5_ == NULL) {
					_g_object_unref0 (_tmp4_);
				}
				item = _tmp5_;
				_tmp7_ = item;
				if (_tmp7_ != NULL) {
					ProtonPlusWidgetsGamesGameListItem* _tmp8_;
					gboolean _tmp9_;
					gboolean _tmp10_;
					_tmp8_ = item;
					_tmp9_ = proton_plus_widgets_games_game_list_item_get_selected (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem));
					_tmp10_ = _tmp9_;
					_tmp6_ = _tmp10_;
				} else {
					_tmp6_ = FALSE;
				}
				if (_tmp6_) {
					guint _tmp11_;
					_tmp11_ = count;
					count = _tmp11_ + 1;
				}
				_g_object_unref0 (item);
			}
		}
	}
	result = count;
	return result;
}

guint
proton_plus_widgets_games_game_collection_selected_count (ProtonPlusWidgetsGamesGameCollection* self)
{
	guint count = 0U;
	guint result;
	g_return_val_if_fail (self != NULL, 0U);
	count = (guint) 0;
	{
		guint i = 0U;
		i = (guint) 0;
		{
			gboolean _tmp0_ = FALSE;
			_tmp0_ = TRUE;
			while (TRUE) {
				GListStore* _tmp2_;
				ProtonPlusWidgetsGamesGameListItem* item = NULL;
				GListStore* _tmp3_;
				GObject* _tmp4_;
				ProtonPlusWidgetsGamesGameListItem* _tmp5_;
				gboolean _tmp6_ = FALSE;
				ProtonPlusWidgetsGamesGameListItem* _tmp7_;
				if (!_tmp0_) {
					guint _tmp1_;
					_tmp1_ = i;
					i = _tmp1_ + 1;
				}
				_tmp0_ = FALSE;
				_tmp2_ = self->priv->_store;
				if (!(i < g_list_model_get_n_items ((GListModel*) _tmp2_))) {
					break;
				}
				_tmp3_ = self->priv->_store;
				_tmp4_ = g_list_model_get_item ((GListModel*) _tmp3_, i);
				_tmp5_ = PROTON_PLUS_WIDGETS_GAMES_IS_GAME_LIST_ITEM (_tmp4_) ? ((ProtonPlusWidgetsGamesGameListItem*) _tmp4_) : NULL;
				if (_tmp5_ == NULL) {
					_g_object_unref0 (_tmp4_);
				}
				item = _tmp5_;
				_tmp7_ = item;
				if (_tmp7_ != NULL) {
					ProtonPlusWidgetsGamesGameListItem* _tmp8_;
					gboolean _tmp9_;
					gboolean _tmp10_;
					_tmp8_ = item;
					_tmp9_ = proton_plus_widgets_games_game_list_item_get_selected (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem));
					_tmp10_ = _tmp9_;
					_tmp6_ = _tmp10_;
				} else {
					_tmp6_ = FALSE;
				}
				if (_tmp6_) {
					guint _tmp11_;
					_tmp11_ = count;
					count = _tmp11_ + 1;
				}
				_g_object_unref0 (item);
			}
		}
	}
	result = count;
	return result;
}

static gint
__lambda187_ (ProtonPlusWidgetsGamesGameCollection* self,
              ProtonPlusWidgetsGamesGameListItem* a,
              ProtonPlusWidgetsGamesGameListItem* b)
{
	GCompareFunc _tmp0_;
	ProtonPlusModelsGame* _tmp1_;
	ProtonPlusModelsGame* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	ProtonPlusModelsGame* _tmp5_;
	ProtonPlusModelsGame* _tmp6_;
	const gchar* _tmp7_;
	const gchar* _tmp8_;
	gint result;
	g_return_val_if_fail (a != NULL, -1);
	g_return_val_if_fail (b != NULL, -1);
	_tmp0_ = ((GCompareFunc) g_strcmp0);
	_tmp1_ = proton_plus_widgets_games_game_list_item_get_game (a);
	_tmp2_ = _tmp1_;
	_tmp3_ = proton_plus_models_game_get_name (_tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = proton_plus_widgets_games_game_list_item_get_game (b);
	_tmp6_ = _tmp5_;
	_tmp7_ = proton_plus_models_game_get_name (_tmp6_);
	_tmp8_ = _tmp7_;
	result = _tmp0_ (_tmp4_, _tmp8_);
	return result;
}

static gint
___lambda187__gcompare_data_func (gconstpointer a,
                                  gconstpointer b,
                                  gpointer self)
{
	gint result;
	result = __lambda187_ ((ProtonPlusWidgetsGamesGameCollection*) self, (ProtonPlusWidgetsGamesGameListItem*) a, (ProtonPlusWidgetsGamesGameListItem*) b);
	return result;
}

ProtonPlusWidgetsGamesGameListItem**
proton_plus_widgets_games_game_collection_selected_items (ProtonPlusWidgetsGamesGameCollection* self,
                                                          gint* result_length1)
{
	GeeArrayList* selected = NULL;
	GeeArrayList* _tmp0_;
	GeeArrayList* _tmp14_;
	GeeArrayList* _tmp15_;
	gint _tmp16_ = 0;
	gpointer* _tmp17_;
	ProtonPlusWidgetsGamesGameListItem** _tmp18_;
	gint _tmp18__length1;
	ProtonPlusWidgetsGamesGameListItem** result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = gee_array_list_new (PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
	selected = _tmp0_;
	{
		guint i = 0U;
		i = (guint) 0;
		{
			gboolean _tmp1_ = FALSE;
			_tmp1_ = TRUE;
			while (TRUE) {
				GListStore* _tmp3_;
				ProtonPlusWidgetsGamesGameListItem* item = NULL;
				GListStore* _tmp4_;
				GObject* _tmp5_;
				ProtonPlusWidgetsGamesGameListItem* _tmp6_;
				gboolean _tmp7_ = FALSE;
				ProtonPlusWidgetsGamesGameListItem* _tmp8_;
				if (!_tmp1_) {
					guint _tmp2_;
					_tmp2_ = i;
					i = _tmp2_ + 1;
				}
				_tmp1_ = FALSE;
				_tmp3_ = self->priv->_store;
				if (!(i < g_list_model_get_n_items ((GListModel*) _tmp3_))) {
					break;
				}
				_tmp4_ = self->priv->_store;
				_tmp5_ = g_list_model_get_item ((GListModel*) _tmp4_, i);
				_tmp6_ = PROTON_PLUS_WIDGETS_GAMES_IS_GAME_LIST_ITEM (_tmp5_) ? ((ProtonPlusWidgetsGamesGameListItem*) _tmp5_) : NULL;
				if (_tmp6_ == NULL) {
					_g_object_unref0 (_tmp5_);
				}
				item = _tmp6_;
				_tmp8_ = item;
				if (_tmp8_ != NULL) {
					ProtonPlusWidgetsGamesGameListItem* _tmp9_;
					gboolean _tmp10_;
					gboolean _tmp11_;
					_tmp9_ = item;
					_tmp10_ = proton_plus_widgets_games_game_list_item_get_selected (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem));
					_tmp11_ = _tmp10_;
					_tmp7_ = _tmp11_;
				} else {
					_tmp7_ = FALSE;
				}
				if (_tmp7_) {
					GeeArrayList* _tmp12_;
					ProtonPlusWidgetsGamesGameListItem* _tmp13_;
					_tmp12_ = selected;
					_tmp13_ = item;
					gee_abstract_collection_add ((GeeAbstractCollection*) _tmp12_, G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem));
				}
				_g_object_unref0 (item);
			}
		}
	}
	_tmp14_ = selected;
	gee_list_sort ((GeeList*) _tmp14_, ___lambda187__gcompare_data_func, g_object_ref (self), g_object_unref);
	_tmp15_ = selected;
	_tmp17_ = gee_collection_to_array ((GeeCollection*) _tmp15_, &_tmp16_);
	_tmp18_ = _tmp17_;
	_tmp18__length1 = _tmp16_;
	if (result_length1) {
		*result_length1 = _tmp18__length1;
	}
	result = _tmp18_;
	_g_object_unref0 (selected);
	return result;
}

void
proton_plus_widgets_games_game_collection_select_all_visible (ProtonPlusWidgetsGamesGameCollection* self,
                                                              gboolean selected)
{
	g_return_if_fail (self != NULL);
	{
		guint i = 0U;
		i = (guint) 0;
		{
			gboolean _tmp0_ = FALSE;
			_tmp0_ = TRUE;
			while (TRUE) {
				GtkSortListModel* _tmp2_;
				ProtonPlusWidgetsGamesGameListItem* item = NULL;
				GtkSortListModel* _tmp3_;
				GObject* _tmp4_;
				ProtonPlusWidgetsGamesGameListItem* _tmp5_;
				ProtonPlusWidgetsGamesGameListItem* _tmp6_;
				if (!_tmp0_) {
					guint _tmp1_;
					_tmp1_ = i;
					i = _tmp1_ + 1;
				}
				_tmp0_ = FALSE;
				_tmp2_ = self->priv->_sorted_model;
				if (!(i < g_list_model_get_n_items ((GListModel*) _tmp2_))) {
					break;
				}
				_tmp3_ = self->priv->_sorted_model;
				_tmp4_ = g_list_model_get_item ((GListModel*) _tmp3_, i);
				_tmp5_ = PROTON_PLUS_WIDGETS_GAMES_IS_GAME_LIST_ITEM (_tmp4_) ? ((ProtonPlusWidgetsGamesGameListItem*) _tmp4_) : NULL;
				if (_tmp5_ == NULL) {
					_g_object_unref0 (_tmp4_);
				}
				item = _tmp5_;
				_tmp6_ = item;
				if (_tmp6_ != NULL) {
					ProtonPlusWidgetsGamesGameListItem* _tmp7_;
					_tmp7_ = item;
					proton_plus_widgets_games_game_list_item_set_selected (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem), selected);
				}
				_g_object_unref0 (item);
			}
		}
	}
	proton_plus_widgets_games_game_collection_sync_visible_selection (self);
	g_signal_emit (self, proton_plus_widgets_games_game_collection_signals[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STATE_CHANGED_SIGNAL], 0);
}

void
proton_plus_widgets_games_game_collection_clear_selection (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkMultiSelection* _tmp8_;
	g_return_if_fail (self != NULL);
	{
		guint i = 0U;
		i = (guint) 0;
		{
			gboolean _tmp0_ = FALSE;
			_tmp0_ = TRUE;
			while (TRUE) {
				GListStore* _tmp2_;
				ProtonPlusWidgetsGamesGameListItem* item = NULL;
				GListStore* _tmp3_;
				GObject* _tmp4_;
				ProtonPlusWidgetsGamesGameListItem* _tmp5_;
				ProtonPlusWidgetsGamesGameListItem* _tmp6_;
				if (!_tmp0_) {
					guint _tmp1_;
					_tmp1_ = i;
					i = _tmp1_ + 1;
				}
				_tmp0_ = FALSE;
				_tmp2_ = self->priv->_store;
				if (!(i < g_list_model_get_n_items ((GListModel*) _tmp2_))) {
					break;
				}
				_tmp3_ = self->priv->_store;
				_tmp4_ = g_list_model_get_item ((GListModel*) _tmp3_, i);
				_tmp5_ = PROTON_PLUS_WIDGETS_GAMES_IS_GAME_LIST_ITEM (_tmp4_) ? ((ProtonPlusWidgetsGamesGameListItem*) _tmp4_) : NULL;
				if (_tmp5_ == NULL) {
					_g_object_unref0 (_tmp4_);
				}
				item = _tmp5_;
				_tmp6_ = item;
				if (_tmp6_ != NULL) {
					ProtonPlusWidgetsGamesGameListItem* _tmp7_;
					_tmp7_ = item;
					proton_plus_widgets_games_game_list_item_set_selected (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem), FALSE);
				}
				_g_object_unref0 (item);
			}
		}
	}
	_tmp8_ = self->priv->_selection_model;
	gtk_selection_model_unselect_all ((GtkSelectionModel*) _tmp8_);
	g_signal_emit (self, proton_plus_widgets_games_game_collection_signals[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STATE_CHANGED_SIGNAL], 0);
}

gint
proton_plus_widgets_games_game_collection_position_of (ProtonPlusWidgetsGamesGameCollection* self,
                                                       ProtonPlusWidgetsGamesGameListItem* expected)
{
	gint result;
	g_return_val_if_fail (self != NULL, -1);
	g_return_val_if_fail (expected != NULL, -1);
	{
		guint i = 0U;
		i = (guint) 0;
		{
			gboolean _tmp0_ = FALSE;
			_tmp0_ = TRUE;
			while (TRUE) {
				GtkSortListModel* _tmp2_;
				GtkSortListModel* _tmp3_;
				GObject* _tmp4_;
				GObject* _tmp5_;
				gboolean _tmp6_;
				if (!_tmp0_) {
					guint _tmp1_;
					_tmp1_ = i;
					i = _tmp1_ + 1;
				}
				_tmp0_ = FALSE;
				_tmp2_ = self->priv->_sorted_model;
				if (!(i < g_list_model_get_n_items ((GListModel*) _tmp2_))) {
					break;
				}
				_tmp3_ = self->priv->_sorted_model;
				_tmp4_ = g_list_model_get_item ((GListModel*) _tmp3_, i);
				_tmp5_ = _tmp4_;
				_tmp6_ = _tmp5_ == G_TYPE_CHECK_INSTANCE_CAST (expected, G_TYPE_OBJECT, GObject);
				_g_object_unref0 (_tmp5_);
				if (_tmp6_) {
					result = (gint) i;
					return result;
				}
			}
		}
	}
	result = -1;
	return result;
}

ProtonPlusWidgetsGamesGameListItem*
proton_plus_widgets_games_game_collection_item_at (ProtonPlusWidgetsGamesGameCollection* self,
                                                   guint position)
{
	GtkSortListModel* _tmp0_;
	GObject* _tmp1_;
	ProtonPlusWidgetsGamesGameListItem* _tmp2_;
	ProtonPlusWidgetsGamesGameListItem* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_sorted_model;
	_tmp1_ = g_list_model_get_item ((GListModel*) _tmp0_, position);
	_tmp2_ = PROTON_PLUS_WIDGETS_GAMES_IS_GAME_LIST_ITEM (_tmp1_) ? ((ProtonPlusWidgetsGamesGameListItem*) _tmp1_) : NULL;
	if (_tmp2_ == NULL) {
		_g_object_unref0 (_tmp1_);
	}
	result = _tmp2_;
	return result;
}

static void
proton_plus_widgets_games_game_collection_sync_item_selection (ProtonPlusWidgetsGamesGameCollection* self,
                                                               ProtonPlusWidgetsGamesGameListItem* item)
{
	gint position = 0;
	gboolean _tmp0_;
	gboolean _tmp1_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (item != NULL);
	position = proton_plus_widgets_games_game_collection_position_of (self, item);
	if (position < 0) {
		return;
	}
	_tmp0_ = proton_plus_widgets_games_game_list_item_get_selected (item);
	_tmp1_ = _tmp0_;
	if (_tmp1_) {
		GtkMultiSelection* _tmp2_;
		_tmp2_ = self->priv->_selection_model;
		gtk_selection_model_select_item ((GtkSelectionModel*) _tmp2_, (guint) position, FALSE);
	} else {
		GtkMultiSelection* _tmp3_;
		_tmp3_ = self->priv->_selection_model;
		gtk_selection_model_unselect_item ((GtkSelectionModel*) _tmp3_, (guint) position);
	}
}

static void
proton_plus_widgets_games_game_collection_sync_visible_selection (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkMultiSelection* _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->_selection_model;
	gtk_selection_model_unselect_all ((GtkSelectionModel*) _tmp0_);
	{
		guint i = 0U;
		i = (guint) 0;
		{
			gboolean _tmp1_ = FALSE;
			_tmp1_ = TRUE;
			while (TRUE) {
				GtkSortListModel* _tmp3_;
				ProtonPlusWidgetsGamesGameListItem* item = NULL;
				GtkSortListModel* _tmp4_;
				GObject* _tmp5_;
				ProtonPlusWidgetsGamesGameListItem* _tmp6_;
				gboolean _tmp7_ = FALSE;
				ProtonPlusWidgetsGamesGameListItem* _tmp8_;
				if (!_tmp1_) {
					guint _tmp2_;
					_tmp2_ = i;
					i = _tmp2_ + 1;
				}
				_tmp1_ = FALSE;
				_tmp3_ = self->priv->_sorted_model;
				if (!(i < g_list_model_get_n_items ((GListModel*) _tmp3_))) {
					break;
				}
				_tmp4_ = self->priv->_sorted_model;
				_tmp5_ = g_list_model_get_item ((GListModel*) _tmp4_, i);
				_tmp6_ = PROTON_PLUS_WIDGETS_GAMES_IS_GAME_LIST_ITEM (_tmp5_) ? ((ProtonPlusWidgetsGamesGameListItem*) _tmp5_) : NULL;
				if (_tmp6_ == NULL) {
					_g_object_unref0 (_tmp5_);
				}
				item = _tmp6_;
				_tmp8_ = item;
				if (_tmp8_ != NULL) {
					ProtonPlusWidgetsGamesGameListItem* _tmp9_;
					gboolean _tmp10_;
					gboolean _tmp11_;
					_tmp9_ = item;
					_tmp10_ = proton_plus_widgets_games_game_list_item_get_selected (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_LIST_ITEM, ProtonPlusWidgetsGamesGameListItem));
					_tmp11_ = _tmp10_;
					_tmp7_ = _tmp11_;
				} else {
					_tmp7_ = FALSE;
				}
				if (_tmp7_) {
					GtkMultiSelection* _tmp12_;
					_tmp12_ = self->priv->_selection_model;
					gtk_selection_model_select_item ((GtkSelectionModel*) _tmp12_, i, FALSE);
				}
				_g_object_unref0 (item);
			}
		}
	}
}

static void
__lambda184_ (ProtonPlusWidgetsGamesGameCollection* self)
{
	proton_plus_widgets_games_game_collection_sync_visible_selection (self);
	g_signal_emit (self, proton_plus_widgets_games_game_collection_signals[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STATE_CHANGED_SIGNAL], 0);
}

static void
___lambda184__gtk_sorter_changed (GtkSorter* _sender,
                                  GtkSorterChange change,
                                  gpointer self)
{
	__lambda184_ ((ProtonPlusWidgetsGamesGameCollection*) self);
}

static void
proton_plus_widgets_games_game_collection_connect_sorter (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkSorter* _tmp0_;
	gulong _tmp1_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->sorter;
	_tmp1_ = g_signal_connect_object (_tmp0_, "changed", (GCallback) ___lambda184__gtk_sorter_changed, self, 0);
	self->priv->sorter_changed_handler = _tmp1_;
}

static void
proton_plus_widgets_games_game_collection_real_dispose (GObject* base)
{
	ProtonPlusWidgetsGamesGameCollection * self;
	GeeHashMap* _tmp15_;
	GeeHashMap* _tmp31_;
	self = (ProtonPlusWidgetsGamesGameCollection*) base;
	{
		GeeIterator* _entry_it = NULL;
		GeeHashMap* _tmp0_;
		GeeSet* _tmp1_;
		GeeSet* _tmp2_;
		GeeSet* _tmp3_;
		GeeIterator* _tmp4_;
		GeeIterator* _tmp5_;
		_tmp0_ = self->priv->selection_handlers;
		_tmp1_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _tmp0_);
		_tmp2_ = _tmp1_;
		_tmp3_ = _tmp2_;
		_tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
		_tmp5_ = _tmp4_;
		_g_object_unref0 (_tmp3_);
		_entry_it = _tmp5_;
		while (TRUE) {
			GeeIterator* _tmp6_;
			GeeMapEntry* entry = NULL;
			GeeIterator* _tmp7_;
			gpointer _tmp8_;
			GeeMapEntry* _tmp9_;
			gconstpointer _tmp10_;
			gconstpointer _tmp11_;
			GeeMapEntry* _tmp12_;
			gconstpointer _tmp13_;
			gconstpointer _tmp14_;
			_tmp6_ = _entry_it;
			if (!gee_iterator_next (_tmp6_)) {
				break;
			}
			_tmp7_ = _entry_it;
			_tmp8_ = gee_iterator_get (_tmp7_);
			entry = (GeeMapEntry*) _tmp8_;
			_tmp9_ = entry;
			_tmp10_ = gee_map_entry_get_key (_tmp9_);
			_tmp11_ = _tmp10_;
			_tmp12_ = entry;
			_tmp13_ = gee_map_entry_get_value (_tmp12_);
			_tmp14_ = _tmp13_;
			g_signal_handler_disconnect ((GObject*) ((ProtonPlusWidgetsGamesGameListItem*) _tmp11_), (gulong) ((guintptr) _tmp14_));
			_g_object_unref0 (entry);
		}
		_g_object_unref0 (_entry_it);
	}
	_tmp15_ = self->priv->selection_handlers;
	gee_abstract_map_clear ((GeeAbstractMap*) _tmp15_);
	{
		GeeIterator* _entry_it = NULL;
		GeeHashMap* _tmp16_;
		GeeSet* _tmp17_;
		GeeSet* _tmp18_;
		GeeSet* _tmp19_;
		GeeIterator* _tmp20_;
		GeeIterator* _tmp21_;
		_tmp16_ = self->priv->sort_value_handlers;
		_tmp17_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = _tmp18_;
		_tmp20_ = gee_iterable_iterator ((GeeIterable*) _tmp19_);
		_tmp21_ = _tmp20_;
		_g_object_unref0 (_tmp19_);
		_entry_it = _tmp21_;
		while (TRUE) {
			GeeIterator* _tmp22_;
			GeeMapEntry* entry = NULL;
			GeeIterator* _tmp23_;
			gpointer _tmp24_;
			GeeMapEntry* _tmp25_;
			gconstpointer _tmp26_;
			gconstpointer _tmp27_;
			GeeMapEntry* _tmp28_;
			gconstpointer _tmp29_;
			gconstpointer _tmp30_;
			_tmp22_ = _entry_it;
			if (!gee_iterator_next (_tmp22_)) {
				break;
			}
			_tmp23_ = _entry_it;
			_tmp24_ = gee_iterator_get (_tmp23_);
			entry = (GeeMapEntry*) _tmp24_;
			_tmp25_ = entry;
			_tmp26_ = gee_map_entry_get_key (_tmp25_);
			_tmp27_ = _tmp26_;
			_tmp28_ = entry;
			_tmp29_ = gee_map_entry_get_value (_tmp28_);
			_tmp30_ = _tmp29_;
			g_signal_handler_disconnect ((GObject*) ((ProtonPlusWidgetsGamesGameListItem*) _tmp27_), (gulong) ((guintptr) _tmp30_));
			_g_object_unref0 (entry);
		}
		_g_object_unref0 (_entry_it);
	}
	_tmp31_ = self->priv->sort_value_handlers;
	gee_abstract_map_clear ((GeeAbstractMap*) _tmp31_);
	if (self->priv->sorter_changed_handler != ((gulong) 0)) {
		GtkSorter* _tmp32_;
		_tmp32_ = self->priv->sorter;
		g_signal_handler_disconnect ((GObject*) _tmp32_, self->priv->sorter_changed_handler);
		self->priv->sorter_changed_handler = (gulong) 0;
	}
	G_OBJECT_CLASS (proton_plus_widgets_games_game_collection_parent_class)->dispose (G_TYPE_CHECK_INSTANCE_CAST (self, G_TYPE_OBJECT, GObject));
}

GListStore*
proton_plus_widgets_games_game_collection_get_store (ProtonPlusWidgetsGamesGameCollection* self)
{
	GListStore* result;
	GListStore* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_store;
	result = _tmp0_;
	return result;
}

static void
proton_plus_widgets_games_game_collection_set_store (ProtonPlusWidgetsGamesGameCollection* self,
                                                     GListStore* value)
{
	GListStore* old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_collection_get_store (self);
	if (old_value != value) {
		GListStore* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_store);
		self->priv->_store = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STORE_PROPERTY]);
	}
}

GtkFilterListModel*
proton_plus_widgets_games_game_collection_get_filtered_model (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkFilterListModel* result;
	GtkFilterListModel* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_filtered_model;
	result = _tmp0_;
	return result;
}

static void
proton_plus_widgets_games_game_collection_set_filtered_model (ProtonPlusWidgetsGamesGameCollection* self,
                                                              GtkFilterListModel* value)
{
	GtkFilterListModel* old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_collection_get_filtered_model (self);
	if (old_value != value) {
		GtkFilterListModel* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_filtered_model);
		self->priv->_filtered_model = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_FILTERED_MODEL_PROPERTY]);
	}
}

GtkSortListModel*
proton_plus_widgets_games_game_collection_get_sorted_model (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkSortListModel* result;
	GtkSortListModel* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_sorted_model;
	result = _tmp0_;
	return result;
}

static void
proton_plus_widgets_games_game_collection_set_sorted_model (ProtonPlusWidgetsGamesGameCollection* self,
                                                            GtkSortListModel* value)
{
	GtkSortListModel* old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_collection_get_sorted_model (self);
	if (old_value != value) {
		GtkSortListModel* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_sorted_model);
		self->priv->_sorted_model = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SORTED_MODEL_PROPERTY]);
	}
}

GtkMultiSelection*
proton_plus_widgets_games_game_collection_get_selection_model (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkMultiSelection* result;
	GtkMultiSelection* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_selection_model;
	result = _tmp0_;
	return result;
}

static void
proton_plus_widgets_games_game_collection_set_selection_model (ProtonPlusWidgetsGamesGameCollection* self,
                                                               GtkMultiSelection* value)
{
	GtkMultiSelection* old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_collection_get_selection_model (self);
	if (old_value != value) {
		GtkMultiSelection* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_selection_model);
		self->priv->_selection_model = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SELECTION_MODEL_PROPERTY]);
	}
}

GtkStringSorter*
proton_plus_widgets_games_game_collection_get_name_sorter (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkStringSorter* result;
	GtkStringSorter* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_name_sorter;
	result = _tmp0_;
	return result;
}

static void
proton_plus_widgets_games_game_collection_set_name_sorter (ProtonPlusWidgetsGamesGameCollection* self,
                                                           GtkStringSorter* value)
{
	GtkStringSorter* old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_collection_get_name_sorter (self);
	if (old_value != value) {
		GtkStringSorter* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_name_sorter);
		self->priv->_name_sorter = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_NAME_SORTER_PROPERTY]);
	}
}

GtkNumericSorter*
proton_plus_widgets_games_game_collection_get_prefix_sorter (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkNumericSorter* result;
	GtkNumericSorter* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_prefix_sorter;
	result = _tmp0_;
	return result;
}

static void
proton_plus_widgets_games_game_collection_set_prefix_sorter (ProtonPlusWidgetsGamesGameCollection* self,
                                                             GtkNumericSorter* value)
{
	GtkNumericSorter* old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_collection_get_prefix_sorter (self);
	if (old_value != value) {
		GtkNumericSorter* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_prefix_sorter);
		self->priv->_prefix_sorter = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_PREFIX_SORTER_PROPERTY]);
	}
}

GtkSorter*
proton_plus_widgets_games_game_collection_get_tool_sorter (ProtonPlusWidgetsGamesGameCollection* self)
{
	GtkSorter* result;
	GtkSorter* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_tool_sorter;
	result = _tmp0_;
	return result;
}

static void
proton_plus_widgets_games_game_collection_set_tool_sorter (ProtonPlusWidgetsGamesGameCollection* self,
                                                           GtkSorter* value)
{
	GtkSorter* old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_collection_get_tool_sorter (self);
	if (old_value != value) {
		GtkSorter* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_tool_sorter);
		self->priv->_tool_sorter = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_TOOL_SORTER_PROPERTY]);
	}
}

guint64
proton_plus_widgets_games_game_collection_get_generation (ProtonPlusWidgetsGamesGameCollection* self)
{
	guint64 result;
	g_return_val_if_fail (self != NULL, 0ULL);
	result = self->priv->_generation;
	return result;
}

static void
proton_plus_widgets_games_game_collection_set_generation (ProtonPlusWidgetsGamesGameCollection* self,
                                                          guint64 value)
{
	guint64 old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_widgets_games_game_collection_get_generation (self);
	if (old_value != value) {
		self->priv->_generation = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_GENERATION_PROPERTY]);
	}
}

static void
proton_plus_widgets_games_game_collection_class_init (ProtonPlusWidgetsGamesGameCollectionClass * klass,
                                                      gpointer klass_data)
{
	proton_plus_widgets_games_game_collection_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ProtonPlusWidgetsGamesGameCollection_private_offset);
	((GObjectClass *) klass)->dispose = (void (*) (GObject*)) proton_plus_widgets_games_game_collection_real_dispose;
	G_OBJECT_CLASS (klass)->get_property = _vala_proton_plus_widgets_games_game_collection_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_proton_plus_widgets_games_game_collection_set_property;
	G_OBJECT_CLASS (klass)->finalize = proton_plus_widgets_games_game_collection_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STORE_PROPERTY, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STORE_PROPERTY] = g_param_spec_object ("store", "store", "store", g_list_store_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_FILTERED_MODEL_PROPERTY, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_FILTERED_MODEL_PROPERTY] = g_param_spec_object ("filtered-model", "filtered-model", "filtered-model", gtk_filter_list_model_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SORTED_MODEL_PROPERTY, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SORTED_MODEL_PROPERTY] = g_param_spec_object ("sorted-model", "sorted-model", "sorted-model", gtk_sort_list_model_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SELECTION_MODEL_PROPERTY, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SELECTION_MODEL_PROPERTY] = g_param_spec_object ("selection-model", "selection-model", "selection-model", gtk_multi_selection_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_NAME_SORTER_PROPERTY, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_NAME_SORTER_PROPERTY] = g_param_spec_object ("name-sorter", "name-sorter", "name-sorter", gtk_string_sorter_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_PREFIX_SORTER_PROPERTY, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_PREFIX_SORTER_PROPERTY] = g_param_spec_object ("prefix-sorter", "prefix-sorter", "prefix-sorter", gtk_numeric_sorter_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_TOOL_SORTER_PROPERTY, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_TOOL_SORTER_PROPERTY] = g_param_spec_object ("tool-sorter", "tool-sorter", "tool-sorter", gtk_sorter_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_GENERATION_PROPERTY, proton_plus_widgets_games_game_collection_properties[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_GENERATION_PROPERTY] = g_param_spec_uint64 ("generation", "generation", "generation", 0, G_MAXUINT64, (guint64) 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	proton_plus_widgets_games_game_collection_signals[PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STATE_CHANGED_SIGNAL] = g_signal_new ("state-changed", PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_COLLECTION, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
}

static void
proton_plus_widgets_games_game_collection_instance_init (ProtonPlusWidgetsGamesGameCollection * self,
                                                         gpointer klass)
{
	gchar* _tmp0_;
	self->priv = proton_plus_widgets_games_game_collection_get_instance_private (self);
	self->priv->_generation = (guint64) 0;
	self->priv->sorter_changed_handler = (gulong) 0;
	_tmp0_ = g_strdup ("");
	self->priv->query = _tmp0_;
	self->priv->filter_mode = PROTON_PLUS_WIDGETS_GAMES_GAME_FILTER_MODE_ALL;
}

static void
proton_plus_widgets_games_game_collection_finalize (GObject * obj)
{
	ProtonPlusWidgetsGamesGameCollection * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_COLLECTION, ProtonPlusWidgetsGamesGameCollection);
	_g_object_unref0 (self->priv->_store);
	_g_object_unref0 (self->priv->_filtered_model);
	_g_object_unref0 (self->priv->_sorted_model);
	_g_object_unref0 (self->priv->_selection_model);
	_g_object_unref0 (self->priv->_name_sorter);
	_g_object_unref0 (self->priv->_prefix_sorter);
	_g_object_unref0 (self->priv->_tool_sorter);
	_g_object_unref0 (self->priv->filter);
	_g_object_unref0 (self->priv->sorter);
	_g_object_unref0 (self->priv->selection_handlers);
	_g_object_unref0 (self->priv->sort_value_handlers);
	_g_free0 (self->priv->query);
	G_OBJECT_CLASS (proton_plus_widgets_games_game_collection_parent_class)->finalize (obj);
}

static GType
proton_plus_widgets_games_game_collection_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusWidgetsGamesGameCollectionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_widgets_games_game_collection_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusWidgetsGamesGameCollection), 0, (GInstanceInitFunc) proton_plus_widgets_games_game_collection_instance_init, NULL };
	GType proton_plus_widgets_games_game_collection_type_id;
	proton_plus_widgets_games_game_collection_type_id = g_type_register_static (G_TYPE_OBJECT, "ProtonPlusWidgetsGamesGameCollection", &g_define_type_info, 0);
	ProtonPlusWidgetsGamesGameCollection_private_offset = g_type_add_instance_private (proton_plus_widgets_games_game_collection_type_id, sizeof (ProtonPlusWidgetsGamesGameCollectionPrivate));
	return proton_plus_widgets_games_game_collection_type_id;
}

GType
proton_plus_widgets_games_game_collection_get_type (void)
{
	static volatile gsize proton_plus_widgets_games_game_collection_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_widgets_games_game_collection_type_id__once)) {
		GType proton_plus_widgets_games_game_collection_type_id;
		proton_plus_widgets_games_game_collection_type_id = proton_plus_widgets_games_game_collection_get_type_once ();
		g_once_init_leave (&proton_plus_widgets_games_game_collection_type_id__once, proton_plus_widgets_games_game_collection_type_id);
	}
	return proton_plus_widgets_games_game_collection_type_id__once;
}

static void
_vala_proton_plus_widgets_games_game_collection_get_property (GObject * object,
                                                              guint property_id,
                                                              GValue * value,
                                                              GParamSpec * pspec)
{
	ProtonPlusWidgetsGamesGameCollection * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_COLLECTION, ProtonPlusWidgetsGamesGameCollection);
	switch (property_id) {
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STORE_PROPERTY:
		g_value_set_object (value, proton_plus_widgets_games_game_collection_get_store (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_FILTERED_MODEL_PROPERTY:
		g_value_set_object (value, proton_plus_widgets_games_game_collection_get_filtered_model (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SORTED_MODEL_PROPERTY:
		g_value_set_object (value, proton_plus_widgets_games_game_collection_get_sorted_model (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SELECTION_MODEL_PROPERTY:
		g_value_set_object (value, proton_plus_widgets_games_game_collection_get_selection_model (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_NAME_SORTER_PROPERTY:
		g_value_set_object (value, proton_plus_widgets_games_game_collection_get_name_sorter (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_PREFIX_SORTER_PROPERTY:
		g_value_set_object (value, proton_plus_widgets_games_game_collection_get_prefix_sorter (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_TOOL_SORTER_PROPERTY:
		g_value_set_object (value, proton_plus_widgets_games_game_collection_get_tool_sorter (self));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_GENERATION_PROPERTY:
		g_value_set_uint64 (value, proton_plus_widgets_games_game_collection_get_generation (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_proton_plus_widgets_games_game_collection_set_property (GObject * object,
                                                              guint property_id,
                                                              const GValue * value,
                                                              GParamSpec * pspec)
{
	ProtonPlusWidgetsGamesGameCollection * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_WIDGETS_GAMES_TYPE_GAME_COLLECTION, ProtonPlusWidgetsGamesGameCollection);
	switch (property_id) {
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_STORE_PROPERTY:
		proton_plus_widgets_games_game_collection_set_store (self, g_value_get_object (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_FILTERED_MODEL_PROPERTY:
		proton_plus_widgets_games_game_collection_set_filtered_model (self, g_value_get_object (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SORTED_MODEL_PROPERTY:
		proton_plus_widgets_games_game_collection_set_sorted_model (self, g_value_get_object (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_SELECTION_MODEL_PROPERTY:
		proton_plus_widgets_games_game_collection_set_selection_model (self, g_value_get_object (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_NAME_SORTER_PROPERTY:
		proton_plus_widgets_games_game_collection_set_name_sorter (self, g_value_get_object (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_PREFIX_SORTER_PROPERTY:
		proton_plus_widgets_games_game_collection_set_prefix_sorter (self, g_value_get_object (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_TOOL_SORTER_PROPERTY:
		proton_plus_widgets_games_game_collection_set_tool_sorter (self, g_value_get_object (value));
		break;
		case PROTON_PLUS_WIDGETS_GAMES_GAME_COLLECTION_GENERATION_PROPERTY:
		proton_plus_widgets_games_game_collection_set_generation (self, g_value_get_uint64 (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

