/* SortedList.c generated by valac 0.40.4, the Vala compiler
 * generated from SortedList.vala, do not modify */

/* Copyright 2016 Software Freedom Conservancy Inc.
 *
 * This software is licensed under the GNU LGPL (version 2.1 or later).
 * See the COPYING file in this distribution.
 */


#include <glib.h>
#include <glib-object.h>
#include <gee.h>


#define TYPE_SORTED_LIST (sorted_list_get_type ())
#define SORTED_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SORTED_LIST, SortedList))
#define SORTED_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SORTED_LIST, SortedListClass))
#define IS_SORTED_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SORTED_LIST))
#define IS_SORTED_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SORTED_LIST))
#define SORTED_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SORTED_LIST, SortedListClass))

typedef struct _SortedList SortedList;
typedef struct _SortedListClass SortedListClass;
typedef struct _SortedListPrivate SortedListPrivate;
enum  {
	SORTED_LIST_0_PROPERTY,
	SORTED_LIST_G_TYPE,
	SORTED_LIST_G_DUP_FUNC,
	SORTED_LIST_G_DESTROY_FUNC,
	SORTED_LIST_ELEMENT_TYPE_PROPERTY,
	SORTED_LIST_READ_ONLY_PROPERTY,
	SORTED_LIST_IS_EMPTY_PROPERTY,
	SORTED_LIST_SIZE_PROPERTY,
	SORTED_LIST_READ_ONLY_VIEW_PROPERTY,
	SORTED_LIST_READ_ONLY_VIEW_AS_LIST_PROPERTY,
	SORTED_LIST_NUM_PROPERTIES
};
static GParamSpec* sorted_list_properties[SORTED_LIST_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);

typedef gint64 (*Comparator) (void* a, void* b, void* user_data);
struct _SortedList {
	GObject parent_instance;
	SortedListPrivate * priv;
};

struct _SortedListClass {
	GObjectClass parent_class;
};

struct _SortedListPrivate {
	GType g_type;
	GBoxedCopyFunc g_dup_func;
	GDestroyNotify g_destroy_func;
	GeeArrayList* list;
	Comparator cmp;
	gpointer cmp_target;
};


static gpointer sorted_list_parent_class = NULL;
static GeeTraversableIface * sorted_list_gee_traversable_parent_iface = NULL;
static GeeIterableIface * sorted_list_gee_iterable_parent_iface = NULL;
static GeeCollectionIface * sorted_list_gee_collection_parent_iface = NULL;

GType sorted_list_get_type (void) G_GNUC_CONST;
#define SORTED_LIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SORTED_LIST, SortedListPrivate))
SortedList* sorted_list_new (GType g_type,
                             GBoxedCopyFunc g_dup_func,
                             GDestroyNotify g_destroy_func,
                             Comparator cmp,
                             void* cmp_target);
SortedList* sorted_list_construct (GType object_type,
                                   GType g_type,
                                   GBoxedCopyFunc g_dup_func,
                                   GDestroyNotify g_destroy_func,
                                   Comparator cmp,
                                   void* cmp_target);
static GeeIterator* sorted_list_real_iterator (GeeIterable* base);
static gboolean sorted_list_real_foreach (GeeTraversable* base,
                                   GeeForallFunc f,
                                   void* f_target);
static gboolean sorted_list_real_add (GeeCollection* base,
                               gconstpointer item);
static gint sorted_list_get_sorted_insert_pos (SortedList* self,
                                        gconstpointer item);
static gboolean sorted_list_real_add_all (GeeCollection* base,
                                   GeeCollection* collection);
gboolean sorted_list_add_list (SortedList* self,
                               GeeList* items);
static gboolean sorted_list_merge_sort (SortedList* self,
                                 GeeList* add);
static void sorted_list_real_clear (GeeCollection* base);
static gboolean sorted_list_real_contains (GeeCollection* base,
                                    gconstpointer item);
static gboolean sorted_list_real_contains_all (GeeCollection* base,
                                        GeeCollection* collection);
static gboolean sorted_list_real_remove (GeeCollection* base,
                                  gconstpointer item);
static gboolean sorted_list_real_remove_all (GeeCollection* base,
                                      GeeCollection* collection);
static gboolean sorted_list_real_retain_all (GeeCollection* base,
                                      GeeCollection* collection);
gint sorted_list_get_count (SortedList* self);
gpointer sorted_list_get_at (SortedList* self,
                             gint index);
static gint sorted_list_binary_search (SortedList* self,
                                gconstpointer search,
                                GEqualFunc equal_func);
gint sorted_list_index_of (SortedList* self,
                           gconstpointer search);
gint sorted_list_locate (SortedList* self,
                         gconstpointer search,
                         gboolean altered,
                         GEqualFunc equal_func);
gpointer sorted_list_remove_at (SortedList* self,
                                gint index);
static gpointer* sorted_list_real_to_array (GeeCollection* base,
                                     int* result_length1);
void sorted_list_resort (SortedList* self,
                         Comparator new_cmp,
                         void* new_cmp_target);
gboolean sorted_list_resort_item (SortedList* self,
                                  gconstpointer item);
SortedList* sorted_list_copy (SortedList* self);
static void _sorted_list_merge_sort (SortedList* self,
                              gpointer* array,
                              int array_length1,
                              gpointer* scratch,
                              int scratch_length1,
                              gint start_index,
                              gint end_index);
static void sorted_list_merge (SortedList* self,
                        gpointer* array,
                        int array_length1,
                        gpointer* scratch,
                        int scratch_length1,
                        gint start_index,
                        gint middle_index,
                        gint end_index);
GeeList* sorted_list_get_read_only_view_as_list (SortedList* self);
static void sorted_list_finalize (GObject * obj);
static void _vala_sorted_list_get_property (GObject * object,
                                     guint property_id,
                                     GValue * value,
                                     GParamSpec * pspec);
static void _vala_sorted_list_set_property (GObject * object,
                                     guint property_id,
                                     const GValue * value,
                                     GParamSpec * pspec);
static void _vala_array_destroy (gpointer array,
                          gint array_length,
                          GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array,
                       gint array_length,
                       GDestroyNotify destroy_func);


SortedList*
sorted_list_construct (GType object_type,
                       GType g_type,
                       GBoxedCopyFunc g_dup_func,
                       GDestroyNotify g_destroy_func,
                       Comparator cmp,
                       void* cmp_target)
{
	SortedList * self = NULL;
	GeeArrayList* _tmp0_;
#line 13 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = (SortedList*) g_object_new (object_type, NULL);
#line 13 "/home/jens/Source/shotwell/src/SortedList.vala"
	self->priv->g_type = g_type;
#line 13 "/home/jens/Source/shotwell/src/SortedList.vala"
	self->priv->g_dup_func = g_dup_func;
#line 13 "/home/jens/Source/shotwell/src/SortedList.vala"
	self->priv->g_destroy_func = g_destroy_func;
#line 14 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = gee_array_list_new (g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func, NULL, NULL, NULL);
#line 14 "/home/jens/Source/shotwell/src/SortedList.vala"
	_g_object_unref0 (self->priv->list);
#line 14 "/home/jens/Source/shotwell/src/SortedList.vala"
	self->priv->list = _tmp0_;
#line 15 "/home/jens/Source/shotwell/src/SortedList.vala"
	self->priv->cmp = cmp;
#line 15 "/home/jens/Source/shotwell/src/SortedList.vala"
	self->priv->cmp_target = cmp_target;
#line 13 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self;
#line 195 "SortedList.c"
}


SortedList*
sorted_list_new (GType g_type,
                 GBoxedCopyFunc g_dup_func,
                 GDestroyNotify g_destroy_func,
                 Comparator cmp,
                 void* cmp_target)
{
#line 13 "/home/jens/Source/shotwell/src/SortedList.vala"
	return sorted_list_construct (TYPE_SORTED_LIST, g_type, g_dup_func, g_destroy_func, cmp, cmp_target);
#line 208 "SortedList.c"
}


static GeeIterator*
sorted_list_real_iterator (GeeIterable* base)
{
	SortedList * self;
	GeeIterator* result = NULL;
	GeeArrayList* _tmp0_;
	GeeIterator* _tmp1_;
#line 26 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 27 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 27 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 27 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = _tmp1_;
#line 27 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 229 "SortedList.c"
}


static gboolean
sorted_list_real_foreach (GeeTraversable* base,
                          GeeForallFunc f,
                          void* f_target)
{
	SortedList * self;
	gboolean result = FALSE;
	GeeArrayList* _tmp0_;
#line 30 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 31 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 31 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = gee_abstract_collection_foreach (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), f, f_target);
#line 31 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 249 "SortedList.c"
}


static gboolean
sorted_list_real_add (GeeCollection* base,
                      gconstpointer item)
{
	SortedList * self;
	gboolean result = FALSE;
	Comparator _tmp0_;
	void* _tmp0__target;
#line 34 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 35 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->cmp;
#line 35 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0__target = self->priv->cmp_target;
#line 35 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp0_ == NULL) {
#line 269 "SortedList.c"
		GeeArrayList* _tmp1_;
#line 36 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp1_ = self->priv->list;
#line 36 "/home/jens/Source/shotwell/src/SortedList.vala"
		gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), item);
#line 275 "SortedList.c"
	} else {
		GeeArrayList* _tmp2_;
#line 38 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp2_ = self->priv->list;
#line 38 "/home/jens/Source/shotwell/src/SortedList.vala"
		gee_abstract_list_insert (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), sorted_list_get_sorted_insert_pos (self, item), item);
#line 282 "SortedList.c"
	}
#line 44 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = TRUE;
#line 44 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 288 "SortedList.c"
}


static gpointer
_g_object_ref0 (gpointer self)
{
#line 51 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self ? g_object_ref (self) : NULL;
#line 297 "SortedList.c"
}


static gboolean
sorted_list_real_add_all (GeeCollection* base,
                          GeeCollection* collection)
{
	SortedList * self;
	gboolean result = FALSE;
	gint _tmp0_;
	gint _tmp1_;
	GeeList* as_list = NULL;
	GeeList* _tmp2_;
	GeeList* _tmp3_;
	Comparator _tmp5_;
	void* _tmp5__target;
	gboolean changed = FALSE;
	gint _tmp7_;
	gint _tmp8_;
#line 47 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 47 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (GEE_IS_COLLECTION (collection), FALSE);
#line 48 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = gee_collection_get_size (collection);
#line 48 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = _tmp0_;
#line 48 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp1_ == 0) {
#line 49 "/home/jens/Source/shotwell/src/SortedList.vala"
		result = FALSE;
#line 49 "/home/jens/Source/shotwell/src/SortedList.vala"
		return result;
#line 331 "SortedList.c"
	}
#line 51 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (collection, GEE_TYPE_LIST) ? ((GeeList*) collection) : NULL);
#line 51 "/home/jens/Source/shotwell/src/SortedList.vala"
	as_list = _tmp2_;
#line 52 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp3_ = as_list;
#line 52 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp3_ != NULL) {
#line 341 "SortedList.c"
		GeeList* _tmp4_;
#line 53 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp4_ = as_list;
#line 53 "/home/jens/Source/shotwell/src/SortedList.vala"
		result = sorted_list_add_list (self, _tmp4_);
#line 53 "/home/jens/Source/shotwell/src/SortedList.vala"
		_g_object_unref0 (as_list);
#line 53 "/home/jens/Source/shotwell/src/SortedList.vala"
		return result;
#line 351 "SortedList.c"
	}
#line 55 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp5_ = self->priv->cmp;
#line 55 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp5__target = self->priv->cmp_target;
#line 55 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp5_ == NULL) {
#line 359 "SortedList.c"
		GeeArrayList* _tmp6_;
#line 56 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp6_ = self->priv->list;
#line 56 "/home/jens/Source/shotwell/src/SortedList.vala"
		result = gee_array_list_add_all (_tmp6_, collection);
#line 56 "/home/jens/Source/shotwell/src/SortedList.vala"
		_g_object_unref0 (as_list);
#line 56 "/home/jens/Source/shotwell/src/SortedList.vala"
		return result;
#line 369 "SortedList.c"
	}
#line 58 "/home/jens/Source/shotwell/src/SortedList.vala"
	changed = FALSE;
#line 59 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp7_ = gee_collection_get_size (collection);
#line 59 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp8_ = _tmp7_;
#line 59 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp8_ == 1) {
#line 379 "SortedList.c"
		GeeIterator* iter = NULL;
		GeeIterator* _tmp9_;
		GeeIterator* _tmp10_;
		gpointer item = NULL;
		GeeIterator* _tmp11_;
		gpointer _tmp12_;
		GeeArrayList* _tmp13_;
		gconstpointer _tmp14_;
		gconstpointer _tmp15_;
#line 60 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp9_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (collection, GEE_TYPE_ITERABLE, GeeIterable));
#line 60 "/home/jens/Source/shotwell/src/SortedList.vala"
		iter = _tmp9_;
#line 61 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp10_ = iter;
#line 61 "/home/jens/Source/shotwell/src/SortedList.vala"
		gee_iterator_next (_tmp10_);
#line 62 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp11_ = iter;
#line 62 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp12_ = gee_iterator_get (_tmp11_);
#line 62 "/home/jens/Source/shotwell/src/SortedList.vala"
		item = _tmp12_;
#line 64 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp13_ = self->priv->list;
#line 64 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp14_ = item;
#line 64 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp15_ = item;
#line 64 "/home/jens/Source/shotwell/src/SortedList.vala"
		gee_abstract_list_insert (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), sorted_list_get_sorted_insert_pos (self, _tmp14_), _tmp15_);
#line 65 "/home/jens/Source/shotwell/src/SortedList.vala"
		changed = TRUE;
#line 59 "/home/jens/Source/shotwell/src/SortedList.vala"
		((item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (item = (self->priv->g_destroy_func (item), NULL));
#line 59 "/home/jens/Source/shotwell/src/SortedList.vala"
		_g_object_unref0 (iter);
#line 417 "SortedList.c"
	} else {
		GeeList* items = NULL;
		GeeArrayList* _tmp16_;
		GeeList* _tmp17_;
		GeeList* _tmp18_;
#line 67 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp16_ = gee_array_list_new (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, (GDestroyNotify) self->priv->g_destroy_func, NULL, NULL, NULL);
#line 67 "/home/jens/Source/shotwell/src/SortedList.vala"
		items = G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, GEE_TYPE_LIST, GeeList);
#line 68 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp17_ = items;
#line 68 "/home/jens/Source/shotwell/src/SortedList.vala"
		gee_collection_add_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, GEE_TYPE_COLLECTION, GeeCollection), collection);
#line 70 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp18_ = items;
#line 70 "/home/jens/Source/shotwell/src/SortedList.vala"
		changed = sorted_list_merge_sort (self, _tmp18_);
#line 59 "/home/jens/Source/shotwell/src/SortedList.vala"
		_g_object_unref0 (items);
#line 437 "SortedList.c"
	}
#line 76 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = changed;
#line 76 "/home/jens/Source/shotwell/src/SortedList.vala"
	_g_object_unref0 (as_list);
#line 76 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 445 "SortedList.c"
}


gboolean
sorted_list_add_list (SortedList* self,
                      GeeList* items)
{
	gboolean result = FALSE;
	gboolean added = FALSE;
	gint _tmp0_;
	gint _tmp1_;
#line 79 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), FALSE);
#line 79 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (GEE_IS_LIST (items), FALSE);
#line 80 "/home/jens/Source/shotwell/src/SortedList.vala"
	added = FALSE;
#line 81 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (items, GEE_TYPE_COLLECTION, GeeCollection));
#line 81 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = _tmp0_;
#line 81 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp1_ == 0) {
#line 469 "SortedList.c"
	} else {
		Comparator _tmp2_;
		void* _tmp2__target;
#line 83 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp2_ = self->priv->cmp;
#line 83 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp2__target = self->priv->cmp_target;
#line 83 "/home/jens/Source/shotwell/src/SortedList.vala"
		if (_tmp2_ != NULL) {
#line 479 "SortedList.c"
			gint _tmp3_;
			gint _tmp4_;
#line 86 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp3_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (items, GEE_TYPE_COLLECTION, GeeCollection));
#line 86 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp4_ = _tmp3_;
#line 86 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (_tmp4_ == 1) {
#line 488 "SortedList.c"
				GeeArrayList* _tmp5_;
				gpointer _tmp6_;
				gpointer _tmp7_;
				gpointer _tmp8_;
				gpointer _tmp9_;
#line 87 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp5_ = self->priv->list;
#line 87 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp6_ = gee_list_get (items, 0);
#line 87 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp7_ = _tmp6_;
#line 87 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp8_ = gee_list_get (items, 0);
#line 87 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp9_ = _tmp8_;
#line 87 "/home/jens/Source/shotwell/src/SortedList.vala"
				gee_abstract_list_insert (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), sorted_list_get_sorted_insert_pos (self, _tmp7_), _tmp9_);
#line 87 "/home/jens/Source/shotwell/src/SortedList.vala"
				((_tmp9_ == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp9_ = (self->priv->g_destroy_func (_tmp9_), NULL));
#line 87 "/home/jens/Source/shotwell/src/SortedList.vala"
				((_tmp7_ == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp7_ = (self->priv->g_destroy_func (_tmp7_), NULL));
#line 88 "/home/jens/Source/shotwell/src/SortedList.vala"
				added = TRUE;
#line 512 "SortedList.c"
			} else {
#line 90 "/home/jens/Source/shotwell/src/SortedList.vala"
				added = sorted_list_merge_sort (self, items);
#line 516 "SortedList.c"
			}
		} else {
			GeeArrayList* _tmp10_;
#line 93 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp10_ = self->priv->list;
#line 93 "/home/jens/Source/shotwell/src/SortedList.vala"
			added = gee_array_list_add_all (_tmp10_, G_TYPE_CHECK_INSTANCE_CAST (items, GEE_TYPE_COLLECTION, GeeCollection));
#line 524 "SortedList.c"
		}
	}
#line 100 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = added;
#line 100 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 531 "SortedList.c"
}


static void
sorted_list_real_clear (GeeCollection* base)
{
	SortedList * self;
	GeeArrayList* _tmp0_;
#line 103 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 104 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 104 "/home/jens/Source/shotwell/src/SortedList.vala"
	gee_abstract_collection_clear (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 546 "SortedList.c"
}


static gboolean
sorted_list_real_contains (GeeCollection* base,
                           gconstpointer item)
{
	SortedList * self;
	gboolean result = FALSE;
	GeeArrayList* _tmp0_;
#line 107 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 108 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 108 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = gee_abstract_collection_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), item);
#line 108 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 565 "SortedList.c"
}


static gboolean
sorted_list_real_contains_all (GeeCollection* base,
                               GeeCollection* collection)
{
	SortedList * self;
	gboolean result = FALSE;
	GeeArrayList* _tmp0_;
#line 111 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 111 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (GEE_IS_COLLECTION (collection), FALSE);
#line 112 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 112 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = gee_collection_contains_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_COLLECTION, GeeCollection), collection);
#line 112 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 586 "SortedList.c"
}


static gboolean
sorted_list_real_remove (GeeCollection* base,
                         gconstpointer item)
{
	SortedList * self;
	gboolean result = FALSE;
	GeeArrayList* _tmp0_;
#line 121 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 122 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 122 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = gee_abstract_collection_remove (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), item);
#line 122 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 605 "SortedList.c"
}


static gboolean
sorted_list_real_remove_all (GeeCollection* base,
                             GeeCollection* collection)
{
	SortedList * self;
	gboolean result = FALSE;
	GeeArrayList* _tmp0_;
#line 125 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 125 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (GEE_IS_COLLECTION (collection), FALSE);
#line 126 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 126 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = gee_collection_remove_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_COLLECTION, GeeCollection), collection);
#line 126 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 626 "SortedList.c"
}


static gboolean
sorted_list_real_retain_all (GeeCollection* base,
                             GeeCollection* collection)
{
	SortedList * self;
	gboolean result = FALSE;
	GeeArrayList* _tmp0_;
#line 129 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 129 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (GEE_IS_COLLECTION (collection), FALSE);
#line 130 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 130 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = gee_collection_retain_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_COLLECTION, GeeCollection), collection);
#line 130 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 647 "SortedList.c"
}


inline gint
sorted_list_get_count (SortedList* self)
{
	gint result = 0;
	GeeArrayList* _tmp0_;
	gint _tmp1_;
	gint _tmp2_;
#line 137 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), 0);
#line 138 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 138 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 138 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = _tmp1_;
#line 138 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = _tmp2_;
#line 138 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 670 "SortedList.c"
}


gpointer
sorted_list_get_at (SortedList* self,
                    gint index)
{
	gpointer result = NULL;
	GeeArrayList* _tmp0_;
	gpointer _tmp1_;
#line 141 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), NULL);
#line 142 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 142 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), index);
#line 142 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = _tmp1_;
#line 142 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 691 "SortedList.c"
}


static gint
sorted_list_binary_search (SortedList* self,
                           gconstpointer search,
                           GEqualFunc equal_func)
{
	gint result = 0;
	Comparator _tmp0_;
	void* _tmp0__target;
	gint min = 0;
	gint max = 0;
	GeeArrayList* _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
#line 145 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), 0);
#line 146 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->cmp;
#line 146 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0__target = self->priv->cmp_target;
#line 146 "/home/jens/Source/shotwell/src/SortedList.vala"
	_vala_assert (_tmp0_ != NULL, "cmp != null");
#line 148 "/home/jens/Source/shotwell/src/SortedList.vala"
	min = 0;
#line 149 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = self->priv->list;
#line 149 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 149 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp3_ = _tmp2_;
#line 149 "/home/jens/Source/shotwell/src/SortedList.vala"
	max = _tmp3_;
#line 726 "SortedList.c"
	{
		gboolean _tmp4_ = FALSE;
#line 150 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp4_ = TRUE;
#line 150 "/home/jens/Source/shotwell/src/SortedList.vala"
		while (TRUE) {
#line 733 "SortedList.c"
			gint mid = 0;
			gint _tmp5_;
			gint _tmp6_;
			gint _tmp7_;
			gpointer item = NULL;
			GeeArrayList* _tmp8_;
			gint _tmp9_;
			gpointer _tmp10_;
			gboolean _tmp11_ = FALSE;
			gint64 compare = 0LL;
			Comparator _tmp13_;
			void* _tmp13__target;
			gconstpointer _tmp14_;
			gint64 _tmp15_;
			gint _tmp19_;
			gint _tmp20_;
#line 150 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (!_tmp4_) {
#line 752 "SortedList.c"
			}
#line 150 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp4_ = FALSE;
#line 151 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp5_ = min;
#line 151 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp6_ = max;
#line 151 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp7_ = min;
#line 151 "/home/jens/Source/shotwell/src/SortedList.vala"
			mid = _tmp5_ + ((_tmp6_ - _tmp7_) / 2);
#line 152 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp8_ = self->priv->list;
#line 152 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp9_ = mid;
#line 152 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp10_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp9_);
#line 152 "/home/jens/Source/shotwell/src/SortedList.vala"
			item = _tmp10_;
#line 154 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (equal_func != NULL) {
#line 774 "SortedList.c"
				gconstpointer _tmp12_;
#line 154 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp12_ = item;
#line 154 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp11_ = equal_func (_tmp12_, search);
#line 780 "SortedList.c"
			} else {
#line 154 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp11_ = FALSE;
#line 784 "SortedList.c"
			}
#line 154 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (_tmp11_) {
#line 155 "/home/jens/Source/shotwell/src/SortedList.vala"
				result = mid;
#line 155 "/home/jens/Source/shotwell/src/SortedList.vala"
				((item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (item = (self->priv->g_destroy_func (item), NULL));
#line 155 "/home/jens/Source/shotwell/src/SortedList.vala"
				return result;
#line 794 "SortedList.c"
			}
#line 157 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp13_ = self->priv->cmp;
#line 157 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp13__target = self->priv->cmp_target;
#line 157 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp14_ = item;
#line 157 "/home/jens/Source/shotwell/src/SortedList.vala"
			compare = _tmp13_ (_tmp14_, search, _tmp13__target);
#line 158 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp15_ = compare;
#line 158 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (_tmp15_ == ((gint64) 0)) {
#line 159 "/home/jens/Source/shotwell/src/SortedList.vala"
				result = mid;
#line 159 "/home/jens/Source/shotwell/src/SortedList.vala"
				((item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (item = (self->priv->g_destroy_func (item), NULL));
#line 159 "/home/jens/Source/shotwell/src/SortedList.vala"
				return result;
#line 814 "SortedList.c"
			} else {
				gint64 _tmp16_;
#line 160 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp16_ = compare;
#line 160 "/home/jens/Source/shotwell/src/SortedList.vala"
				if (_tmp16_ > ((gint64) 0)) {
#line 821 "SortedList.c"
					gint _tmp17_;
#line 161 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp17_ = mid;
#line 161 "/home/jens/Source/shotwell/src/SortedList.vala"
					max = _tmp17_ - 1;
#line 827 "SortedList.c"
				} else {
					gint _tmp18_;
#line 163 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp18_ = mid;
#line 163 "/home/jens/Source/shotwell/src/SortedList.vala"
					min = _tmp18_ + 1;
#line 834 "SortedList.c"
				}
			}
#line 165 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp19_ = min;
#line 165 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp20_ = max;
#line 165 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (_tmp19_ > _tmp20_) {
#line 166 "/home/jens/Source/shotwell/src/SortedList.vala"
				((item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (item = (self->priv->g_destroy_func (item), NULL));
#line 166 "/home/jens/Source/shotwell/src/SortedList.vala"
				break;
#line 847 "SortedList.c"
			}
#line 150 "/home/jens/Source/shotwell/src/SortedList.vala"
			((item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (item = (self->priv->g_destroy_func (item), NULL));
#line 851 "SortedList.c"
		}
	}
#line 169 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = -1;
#line 169 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 858 "SortedList.c"
}


gint
sorted_list_index_of (SortedList* self,
                      gconstpointer search)
{
	gint result = 0;
	gint _tmp0_ = 0;
	Comparator _tmp1_;
	void* _tmp1__target;
#line 179 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), 0);
#line 180 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = self->priv->cmp;
#line 180 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1__target = self->priv->cmp_target;
#line 180 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp1_ != NULL) {
#line 180 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp0_ = sorted_list_binary_search (self, search, NULL);
#line 880 "SortedList.c"
	} else {
		GEqualFunc _tmp2_;
#line 180 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp2_ = g_direct_equal;
#line 180 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp0_ = sorted_list_locate (self, search, FALSE, _tmp2_);
#line 887 "SortedList.c"
	}
#line 180 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = _tmp0_;
#line 180 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 893 "SortedList.c"
}


gint
sorted_list_locate (SortedList* self,
                    gconstpointer search,
                    gboolean altered,
                    GEqualFunc equal_func)
{
	gint result = 0;
	gboolean _tmp0_ = FALSE;
	Comparator _tmp1_;
	void* _tmp1__target;
#line 184 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), 0);
#line 185 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = self->priv->cmp;
#line 185 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1__target = self->priv->cmp_target;
#line 185 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp1_ == NULL) {
#line 185 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp0_ = TRUE;
#line 917 "SortedList.c"
	} else {
#line 185 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp0_ = altered;
#line 921 "SortedList.c"
	}
#line 185 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp0_) {
#line 925 "SortedList.c"
		gint count = 0;
		GeeArrayList* _tmp2_;
		gint _tmp3_;
		gint _tmp4_;
#line 186 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp2_ = self->priv->list;
#line 186 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp3_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 186 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp4_ = _tmp3_;
#line 186 "/home/jens/Source/shotwell/src/SortedList.vala"
		count = _tmp4_;
#line 938 "SortedList.c"
		{
			gint ctr = 0;
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
			ctr = 0;
#line 943 "SortedList.c"
			{
				gboolean _tmp5_ = FALSE;
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp5_ = TRUE;
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
				while (TRUE) {
#line 950 "SortedList.c"
					gint _tmp7_;
					gint _tmp8_;
					GeeArrayList* _tmp9_;
					gint _tmp10_;
					gpointer _tmp11_;
					gpointer _tmp12_;
					gboolean _tmp13_;
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
					if (!_tmp5_) {
#line 960 "SortedList.c"
						gint _tmp6_;
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
						_tmp6_ = ctr;
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
						ctr = _tmp6_ + 1;
#line 966 "SortedList.c"
					}
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp5_ = FALSE;
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp7_ = ctr;
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp8_ = count;
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
					if (!(_tmp7_ < _tmp8_)) {
#line 187 "/home/jens/Source/shotwell/src/SortedList.vala"
						break;
#line 978 "SortedList.c"
					}
#line 188 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp9_ = self->priv->list;
#line 188 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp10_ = ctr;
#line 188 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp11_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp10_);
#line 188 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp12_ = _tmp11_;
#line 188 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp13_ = equal_func (_tmp12_, search);
#line 188 "/home/jens/Source/shotwell/src/SortedList.vala"
					((_tmp12_ == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp12_ = (self->priv->g_destroy_func (_tmp12_), NULL));
#line 188 "/home/jens/Source/shotwell/src/SortedList.vala"
					if (_tmp13_) {
#line 189 "/home/jens/Source/shotwell/src/SortedList.vala"
						result = ctr;
#line 189 "/home/jens/Source/shotwell/src/SortedList.vala"
						return result;
#line 998 "SortedList.c"
					}
				}
			}
		}
#line 192 "/home/jens/Source/shotwell/src/SortedList.vala"
		result = -1;
#line 192 "/home/jens/Source/shotwell/src/SortedList.vala"
		return result;
#line 1007 "SortedList.c"
	}
#line 195 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = sorted_list_binary_search (self, search, equal_func);
#line 195 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 1013 "SortedList.c"
}


gpointer
sorted_list_remove_at (SortedList* self,
                       gint index)
{
	gpointer result = NULL;
	GeeArrayList* _tmp0_;
	gpointer _tmp1_;
#line 210 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), NULL);
#line 211 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 211 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = gee_abstract_list_remove_at (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), index);
#line 211 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = _tmp1_;
#line 211 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 1034 "SortedList.c"
}


static gpointer*
sorted_list_real_to_array (GeeCollection* base,
                           int* result_length1)
{
	SortedList * self;
	gpointer* result = NULL;
	GeeArrayList* _tmp0_;
	gint _tmp1_;
	gpointer* _tmp2_;
	gpointer* _tmp3_;
	gint _tmp3__length1;
#line 214 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 215 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 215 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = gee_collection_to_array (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_COLLECTION, GeeCollection), &_tmp1_);
#line 215 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp3_ = _tmp2_;
#line 215 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp3__length1 = _tmp1_;
#line 215 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (result_length1) {
#line 215 "/home/jens/Source/shotwell/src/SortedList.vala"
		*result_length1 = _tmp3__length1;
#line 1063 "SortedList.c"
	}
#line 215 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = _tmp3_;
#line 215 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 1069 "SortedList.c"
}


void
sorted_list_resort (SortedList* self,
                    Comparator new_cmp,
                    void* new_cmp_target)
{
#line 218 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_if_fail (IS_SORTED_LIST (self));
#line 219 "/home/jens/Source/shotwell/src/SortedList.vala"
	self->priv->cmp = new_cmp;
#line 219 "/home/jens/Source/shotwell/src/SortedList.vala"
	self->priv->cmp_target = new_cmp_target;
#line 221 "/home/jens/Source/shotwell/src/SortedList.vala"
	sorted_list_merge_sort (self, NULL);
#line 1086 "SortedList.c"
}


gboolean
sorted_list_resort_item (SortedList* self,
                         gconstpointer item)
{
	gboolean result = FALSE;
	gint index = 0;
	GEqualFunc _tmp0_;
	gint _tmp1_;
	gint new_index = 0;
	gint _tmp2_;
	gint _tmp3_;
	gint _tmp4_;
	gint _tmp5_;
#line 229 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), FALSE);
#line 230 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = g_direct_equal;
#line 230 "/home/jens/Source/shotwell/src/SortedList.vala"
	index = sorted_list_locate (self, item, TRUE, _tmp0_);
#line 231 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = index;
#line 231 "/home/jens/Source/shotwell/src/SortedList.vala"
	_vala_assert (_tmp1_ >= 0, "index >= 0");
#line 233 "/home/jens/Source/shotwell/src/SortedList.vala"
	new_index = sorted_list_get_sorted_insert_pos (self, item);
#line 235 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = index;
#line 235 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp3_ = new_index;
#line 235 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp2_ == _tmp3_) {
#line 236 "/home/jens/Source/shotwell/src/SortedList.vala"
		result = FALSE;
#line 236 "/home/jens/Source/shotwell/src/SortedList.vala"
		return result;
#line 1125 "SortedList.c"
	}
#line 240 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp4_ = new_index;
#line 240 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp5_ = index;
#line 240 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp4_ > _tmp5_) {
#line 1133 "SortedList.c"
		GeeArrayList* _tmp6_;
		gint _tmp7_;
		gpointer removed_item = NULL;
		GeeArrayList* _tmp8_;
		gint _tmp9_;
		gpointer _tmp10_;
		gconstpointer _tmp11_;
#line 241 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp6_ = self->priv->list;
#line 241 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp7_ = new_index;
#line 241 "/home/jens/Source/shotwell/src/SortedList.vala"
		gee_abstract_list_insert (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp7_, item);
#line 242 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp8_ = self->priv->list;
#line 242 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp9_ = index;
#line 242 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp10_ = gee_abstract_list_remove_at (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp9_);
#line 242 "/home/jens/Source/shotwell/src/SortedList.vala"
		removed_item = _tmp10_;
#line 243 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp11_ = removed_item;
#line 243 "/home/jens/Source/shotwell/src/SortedList.vala"
		_vala_assert (item == _tmp11_, "item == removed_item");
#line 240 "/home/jens/Source/shotwell/src/SortedList.vala"
		((removed_item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (removed_item = (self->priv->g_destroy_func (removed_item), NULL));
#line 1161 "SortedList.c"
	} else {
		gpointer removed_item = NULL;
		GeeArrayList* _tmp12_;
		gint _tmp13_;
		gpointer _tmp14_;
		gconstpointer _tmp15_;
		GeeArrayList* _tmp16_;
		gint _tmp17_;
#line 245 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp12_ = self->priv->list;
#line 245 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp13_ = index;
#line 245 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp14_ = gee_abstract_list_remove_at (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp13_);
#line 245 "/home/jens/Source/shotwell/src/SortedList.vala"
		removed_item = _tmp14_;
#line 246 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp15_ = removed_item;
#line 246 "/home/jens/Source/shotwell/src/SortedList.vala"
		_vala_assert (item == _tmp15_, "item == removed_item");
#line 247 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp16_ = self->priv->list;
#line 247 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp17_ = new_index;
#line 247 "/home/jens/Source/shotwell/src/SortedList.vala"
		gee_abstract_list_insert (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp17_, item);
#line 240 "/home/jens/Source/shotwell/src/SortedList.vala"
		((removed_item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (removed_item = (self->priv->g_destroy_func (removed_item), NULL));
#line 1190 "SortedList.c"
	}
#line 254 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = TRUE;
#line 254 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 1196 "SortedList.c"
}


static gint
sorted_list_get_sorted_insert_pos (SortedList* self,
                                   gconstpointer item)
{
	gint result = 0;
	gint low = 0;
	gint high = 0;
	GeeArrayList* _tmp0_;
	gint _tmp1_;
	gint _tmp2_;
#line 257 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), 0);
#line 258 "/home/jens/Source/shotwell/src/SortedList.vala"
	low = 0;
#line 259 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 259 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 259 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = _tmp1_;
#line 259 "/home/jens/Source/shotwell/src/SortedList.vala"
	high = _tmp2_;
#line 1222 "SortedList.c"
	{
		gboolean _tmp3_ = FALSE;
#line 260 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp3_ = TRUE;
#line 260 "/home/jens/Source/shotwell/src/SortedList.vala"
		while (TRUE) {
#line 1229 "SortedList.c"
			gint _tmp4_;
			gint _tmp5_;
			gint mid = 0;
			gint _tmp6_;
			gint _tmp7_;
			gint _tmp8_;
			gpointer cmp_item = NULL;
			GeeArrayList* _tmp9_;
			gint _tmp10_;
			gpointer _tmp11_;
			gconstpointer _tmp12_;
			gint64 _result_ = 0LL;
			Comparator _tmp23_;
			void* _tmp23__target;
			gconstpointer _tmp24_;
			gint64 _tmp25_;
#line 260 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (!_tmp3_) {
#line 1248 "SortedList.c"
			}
#line 260 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp3_ = FALSE;
#line 261 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp4_ = low;
#line 261 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp5_ = high;
#line 261 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (_tmp4_ == _tmp5_) {
#line 262 "/home/jens/Source/shotwell/src/SortedList.vala"
				result = low;
#line 262 "/home/jens/Source/shotwell/src/SortedList.vala"
				return result;
#line 1262 "SortedList.c"
			}
#line 264 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp6_ = low;
#line 264 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp7_ = high;
#line 264 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp8_ = low;
#line 264 "/home/jens/Source/shotwell/src/SortedList.vala"
			mid = _tmp6_ + ((_tmp7_ - _tmp8_) / 2);
#line 268 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp9_ = self->priv->list;
#line 268 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp10_ = mid;
#line 268 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp11_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp10_);
#line 268 "/home/jens/Source/shotwell/src/SortedList.vala"
			cmp_item = _tmp11_;
#line 269 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp12_ = cmp_item;
#line 269 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (item == _tmp12_) {
#line 1284 "SortedList.c"
				gint _tmp13_;
				GeeArrayList* _tmp14_;
				gint _tmp15_;
				gint _tmp16_;
				GeeArrayList* _tmp20_;
				gint _tmp21_;
				gpointer _tmp22_;
#line 271 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp13_ = mid;
#line 271 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp14_ = self->priv->list;
#line 271 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp15_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 271 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp16_ = _tmp15_;
#line 271 "/home/jens/Source/shotwell/src/SortedList.vala"
				if (_tmp13_ >= (_tmp16_ - 1)) {
#line 1302 "SortedList.c"
					GeeArrayList* _tmp17_;
					gint _tmp18_;
					gint _tmp19_;
#line 272 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp17_ = self->priv->list;
#line 272 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp18_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 272 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp19_ = _tmp18_;
#line 272 "/home/jens/Source/shotwell/src/SortedList.vala"
					result = _tmp19_;
#line 272 "/home/jens/Source/shotwell/src/SortedList.vala"
					((cmp_item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (cmp_item = (self->priv->g_destroy_func (cmp_item), NULL));
#line 272 "/home/jens/Source/shotwell/src/SortedList.vala"
					return result;
#line 1318 "SortedList.c"
				}
#line 274 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp20_ = self->priv->list;
#line 274 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp21_ = mid;
#line 274 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp22_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp21_ + 1);
#line 274 "/home/jens/Source/shotwell/src/SortedList.vala"
				((cmp_item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (cmp_item = (self->priv->g_destroy_func (cmp_item), NULL));
#line 274 "/home/jens/Source/shotwell/src/SortedList.vala"
				cmp_item = _tmp22_;
#line 1330 "SortedList.c"
			}
#line 277 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp23_ = self->priv->cmp;
#line 277 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp23__target = self->priv->cmp_target;
#line 277 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp24_ = cmp_item;
#line 277 "/home/jens/Source/shotwell/src/SortedList.vala"
			_result_ = _tmp23_ (item, _tmp24_, _tmp23__target);
#line 278 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp25_ = _result_;
#line 278 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (_tmp25_ < ((gint64) 0)) {
#line 1344 "SortedList.c"
				gint _tmp26_;
#line 279 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp26_ = mid;
#line 279 "/home/jens/Source/shotwell/src/SortedList.vala"
				high = _tmp26_;
#line 1350 "SortedList.c"
			} else {
				gint64 _tmp27_;
#line 280 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp27_ = _result_;
#line 280 "/home/jens/Source/shotwell/src/SortedList.vala"
				if (_tmp27_ > ((gint64) 0)) {
#line 1357 "SortedList.c"
					gint _tmp28_;
#line 281 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp28_ = mid;
#line 281 "/home/jens/Source/shotwell/src/SortedList.vala"
					low = _tmp28_ + 1;
#line 1363 "SortedList.c"
				} else {
#line 283 "/home/jens/Source/shotwell/src/SortedList.vala"
					result = mid;
#line 283 "/home/jens/Source/shotwell/src/SortedList.vala"
					((cmp_item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (cmp_item = (self->priv->g_destroy_func (cmp_item), NULL));
#line 283 "/home/jens/Source/shotwell/src/SortedList.vala"
					return result;
#line 1371 "SortedList.c"
				}
			}
#line 260 "/home/jens/Source/shotwell/src/SortedList.vala"
			((cmp_item == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (cmp_item = (self->priv->g_destroy_func (cmp_item), NULL));
#line 1376 "SortedList.c"
		}
	}
}


SortedList*
sorted_list_copy (SortedList* self)
{
	SortedList* result = NULL;
	SortedList* copy = NULL;
	Comparator _tmp0_;
	void* _tmp0__target;
	SortedList* _tmp1_;
	GeeArrayList* _tmp2_;
	GeeArrayList* _tmp3_;
#line 287 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), NULL);
#line 288 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->cmp;
#line 288 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0__target = self->priv->cmp_target;
#line 288 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = sorted_list_new (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, (GDestroyNotify) self->priv->g_destroy_func, _tmp0_, _tmp0__target);
#line 288 "/home/jens/Source/shotwell/src/SortedList.vala"
	copy = _tmp1_;
#line 290 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = copy->priv->list;
#line 290 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp3_ = self->priv->list;
#line 290 "/home/jens/Source/shotwell/src/SortedList.vala"
	gee_array_list_add_all (_tmp2_, G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_COLLECTION, GeeCollection));
#line 292 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = copy;
#line 292 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 1412 "SortedList.c"
}


static gboolean
sorted_list_merge_sort (SortedList* self,
                        GeeList* add)
{
	gboolean result = FALSE;
	Comparator _tmp0_;
	void* _tmp0__target;
	gint list_count = 0;
	GeeArrayList* _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
	gint _tmp4_ = 0;
	gint add_count = 0;
	gint count = 0;
	gint _tmp7_;
	gint _tmp8_;
	gint _tmp9_;
	gpointer* array = NULL;
	gint _tmp10_;
	gpointer* _tmp11_;
	gint array_length1;
	gint _array_size_;
	gint offset = 0;
	gint _tmp29_;
	gint _tmp30_;
	gpointer* _tmp31_;
	gint _tmp31__length1;
	gint _tmp32_;
	gpointer* _tmp33_;
	gpointer* _tmp34_;
	gint _tmp34__length1;
	gint _tmp35_;
#line 313 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), FALSE);
#line 313 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail ((add == NULL) || GEE_IS_LIST (add), FALSE);
#line 314 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->cmp;
#line 314 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0__target = self->priv->cmp_target;
#line 314 "/home/jens/Source/shotwell/src/SortedList.vala"
	_vala_assert (_tmp0_ != NULL, "cmp != null");
#line 316 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = self->priv->list;
#line 316 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 316 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp3_ = _tmp2_;
#line 316 "/home/jens/Source/shotwell/src/SortedList.vala"
	list_count = _tmp3_;
#line 317 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (add != NULL) {
#line 1468 "SortedList.c"
		gint _tmp5_;
		gint _tmp6_;
#line 317 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp5_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (add, GEE_TYPE_COLLECTION, GeeCollection));
#line 317 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp6_ = _tmp5_;
#line 317 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp4_ = _tmp6_;
#line 1477 "SortedList.c"
	} else {
#line 317 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp4_ = 0;
#line 1481 "SortedList.c"
	}
#line 317 "/home/jens/Source/shotwell/src/SortedList.vala"
	add_count = _tmp4_;
#line 319 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp7_ = list_count;
#line 319 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp8_ = add_count;
#line 319 "/home/jens/Source/shotwell/src/SortedList.vala"
	count = _tmp7_ + _tmp8_;
#line 320 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp9_ = count;
#line 320 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp9_ == 0) {
#line 321 "/home/jens/Source/shotwell/src/SortedList.vala"
		result = FALSE;
#line 321 "/home/jens/Source/shotwell/src/SortedList.vala"
		return result;
#line 1499 "SortedList.c"
	}
#line 325 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp10_ = count;
#line 325 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp11_ = g_new0 (gpointer, _tmp10_);
#line 325 "/home/jens/Source/shotwell/src/SortedList.vala"
	array = _tmp11_;
#line 325 "/home/jens/Source/shotwell/src/SortedList.vala"
	array_length1 = _tmp10_;
#line 325 "/home/jens/Source/shotwell/src/SortedList.vala"
	_array_size_ = array_length1;
#line 326 "/home/jens/Source/shotwell/src/SortedList.vala"
	offset = 0;
#line 328 "/home/jens/Source/shotwell/src/SortedList.vala"
	while (TRUE) {
#line 1515 "SortedList.c"
		gint _tmp12_;
		gint _tmp13_;
		gpointer* _tmp14_;
		gint _tmp14__length1;
		gint _tmp15_;
		GeeArrayList* _tmp16_;
		gint _tmp17_;
		gpointer _tmp18_;
		gpointer _tmp19_;
		gint _tmp20_;
#line 328 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp12_ = offset;
#line 328 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp13_ = list_count;
#line 328 "/home/jens/Source/shotwell/src/SortedList.vala"
		if (!(_tmp12_ < _tmp13_)) {
#line 328 "/home/jens/Source/shotwell/src/SortedList.vala"
			break;
#line 1534 "SortedList.c"
		}
#line 329 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp14_ = array;
#line 329 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp14__length1 = array_length1;
#line 329 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp15_ = offset;
#line 329 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp16_ = self->priv->list;
#line 329 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp17_ = offset;
#line 329 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp18_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp17_);
#line 329 "/home/jens/Source/shotwell/src/SortedList.vala"
		((_tmp14_[_tmp15_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp14_[_tmp15_] = (self->priv->g_destroy_func (_tmp14_[_tmp15_]), NULL));
#line 329 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp14_[_tmp15_] = _tmp18_;
#line 329 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp19_ = _tmp14_[_tmp15_];
#line 330 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp20_ = offset;
#line 330 "/home/jens/Source/shotwell/src/SortedList.vala"
		offset = _tmp20_ + 1;
#line 1558 "SortedList.c"
	}
#line 333 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (add != NULL) {
#line 1562 "SortedList.c"
		gint add_ctr = 0;
#line 334 "/home/jens/Source/shotwell/src/SortedList.vala"
		add_ctr = 0;
#line 335 "/home/jens/Source/shotwell/src/SortedList.vala"
		while (TRUE) {
#line 1568 "SortedList.c"
			gint _tmp21_;
			gint _tmp22_;
			gpointer* _tmp23_;
			gint _tmp23__length1;
			gint _tmp24_;
			gint _tmp25_;
			gpointer _tmp26_;
			gpointer _tmp27_;
			gint _tmp28_;
#line 335 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp21_ = offset;
#line 335 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp22_ = count;
#line 335 "/home/jens/Source/shotwell/src/SortedList.vala"
			if (!(_tmp21_ < _tmp22_)) {
#line 335 "/home/jens/Source/shotwell/src/SortedList.vala"
				break;
#line 1586 "SortedList.c"
			}
#line 336 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp23_ = array;
#line 336 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp23__length1 = array_length1;
#line 336 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp24_ = offset;
#line 336 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp25_ = add_ctr;
#line 336 "/home/jens/Source/shotwell/src/SortedList.vala"
			add_ctr = _tmp25_ + 1;
#line 336 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp26_ = gee_list_get (add, _tmp25_);
#line 336 "/home/jens/Source/shotwell/src/SortedList.vala"
			((_tmp23_[_tmp24_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp23_[_tmp24_] = (self->priv->g_destroy_func (_tmp23_[_tmp24_]), NULL));
#line 336 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp23_[_tmp24_] = _tmp26_;
#line 336 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp27_ = _tmp23_[_tmp24_];
#line 337 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp28_ = offset;
#line 337 "/home/jens/Source/shotwell/src/SortedList.vala"
			offset = _tmp28_ + 1;
#line 1610 "SortedList.c"
		}
	}
#line 341 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp29_ = offset;
#line 341 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp30_ = count;
#line 341 "/home/jens/Source/shotwell/src/SortedList.vala"
	_vala_assert (_tmp29_ == _tmp30_, "offset == count");
#line 343 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp31_ = array;
#line 343 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp31__length1 = array_length1;
#line 343 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp32_ = count;
#line 343 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp33_ = g_new0 (gpointer, _tmp32_);
#line 343 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp34_ = _tmp33_;
#line 343 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp34__length1 = _tmp32_;
#line 343 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp35_ = count;
#line 343 "/home/jens/Source/shotwell/src/SortedList.vala"
	_sorted_list_merge_sort (self, _tmp31_, _tmp31__length1, _tmp34_, _tmp32_, 0, _tmp35_ - 1);
#line 343 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp34_ = (_vala_array_free (_tmp34_, _tmp34__length1, (GDestroyNotify) self->priv->g_destroy_func), NULL);
#line 345 "/home/jens/Source/shotwell/src/SortedList.vala"
	offset = 0;
#line 346 "/home/jens/Source/shotwell/src/SortedList.vala"
	while (TRUE) {
#line 1641 "SortedList.c"
		gint _tmp36_;
		gint _tmp37_;
		GeeArrayList* _tmp38_;
		gint _tmp39_;
		gpointer* _tmp40_;
		gint _tmp40__length1;
		gint _tmp41_;
		gconstpointer _tmp42_;
		gint _tmp43_;
#line 346 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp36_ = offset;
#line 346 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp37_ = list_count;
#line 346 "/home/jens/Source/shotwell/src/SortedList.vala"
		if (!(_tmp36_ < _tmp37_)) {
#line 346 "/home/jens/Source/shotwell/src/SortedList.vala"
			break;
#line 1659 "SortedList.c"
		}
#line 347 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp38_ = self->priv->list;
#line 347 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp39_ = offset;
#line 347 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp40_ = array;
#line 347 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp40__length1 = array_length1;
#line 347 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp41_ = offset;
#line 347 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp42_ = _tmp40_[_tmp41_];
#line 347 "/home/jens/Source/shotwell/src/SortedList.vala"
		gee_abstract_list_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp39_, _tmp42_);
#line 348 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp43_ = offset;
#line 348 "/home/jens/Source/shotwell/src/SortedList.vala"
		offset = _tmp43_ + 1;
#line 1679 "SortedList.c"
	}
#line 351 "/home/jens/Source/shotwell/src/SortedList.vala"
	while (TRUE) {
#line 1683 "SortedList.c"
		gint _tmp44_;
		gint _tmp45_;
		GeeArrayList* _tmp46_;
		gint _tmp47_;
		gpointer* _tmp48_;
		gint _tmp48__length1;
		gint _tmp49_;
		gconstpointer _tmp50_;
		gint _tmp51_;
#line 351 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp44_ = offset;
#line 351 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp45_ = count;
#line 351 "/home/jens/Source/shotwell/src/SortedList.vala"
		if (!(_tmp44_ < _tmp45_)) {
#line 351 "/home/jens/Source/shotwell/src/SortedList.vala"
			break;
#line 1701 "SortedList.c"
		}
#line 352 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp46_ = self->priv->list;
#line 352 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp47_ = offset;
#line 352 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp48_ = array;
#line 352 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp48__length1 = array_length1;
#line 352 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp49_ = offset;
#line 352 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp50_ = _tmp48_[_tmp49_];
#line 352 "/home/jens/Source/shotwell/src/SortedList.vala"
		gee_abstract_list_insert (G_TYPE_CHECK_INSTANCE_CAST (_tmp46_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp47_, _tmp50_);
#line 353 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp51_ = offset;
#line 353 "/home/jens/Source/shotwell/src/SortedList.vala"
		offset = _tmp51_ + 1;
#line 1721 "SortedList.c"
	}
#line 356 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = TRUE;
#line 356 "/home/jens/Source/shotwell/src/SortedList.vala"
	array = (_vala_array_free (array, array_length1, (GDestroyNotify) self->priv->g_destroy_func), NULL);
#line 356 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 1729 "SortedList.c"
}


static void
_sorted_list_merge_sort (SortedList* self,
                         gpointer* array,
                         int array_length1,
                         gpointer* scratch,
                         int scratch_length1,
                         gint start_index,
                         gint end_index)
{
	gint count = 0;
	gint _tmp0_;
	gint middle_index = 0;
	gint _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
	Comparator _tmp4_;
	void* _tmp4__target;
	gint _tmp5_;
	gconstpointer _tmp6_;
	gint _tmp7_;
	gconstpointer _tmp8_;
#line 359 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_if_fail (IS_SORTED_LIST (self));
#line 360 "/home/jens/Source/shotwell/src/SortedList.vala"
	_vala_assert (start_index <= end_index, "start_index <= end_index");
#line 362 "/home/jens/Source/shotwell/src/SortedList.vala"
	count = (end_index - start_index) + 1;
#line 363 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = count;
#line 363 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp0_ <= 1) {
#line 364 "/home/jens/Source/shotwell/src/SortedList.vala"
		return;
#line 1766 "SortedList.c"
	}
#line 366 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = count;
#line 366 "/home/jens/Source/shotwell/src/SortedList.vala"
	middle_index = start_index + (_tmp1_ / 2);
#line 368 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = middle_index;
#line 368 "/home/jens/Source/shotwell/src/SortedList.vala"
	_sorted_list_merge_sort (self, array, array_length1, scratch, scratch_length1, start_index, _tmp2_ - 1);
#line 369 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp3_ = middle_index;
#line 369 "/home/jens/Source/shotwell/src/SortedList.vala"
	_sorted_list_merge_sort (self, array, array_length1, scratch, scratch_length1, _tmp3_, end_index);
#line 371 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp4_ = self->priv->cmp;
#line 371 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp4__target = self->priv->cmp_target;
#line 371 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp5_ = middle_index;
#line 371 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp6_ = array[_tmp5_ - 1];
#line 371 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp7_ = middle_index;
#line 371 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp8_ = array[_tmp7_];
#line 371 "/home/jens/Source/shotwell/src/SortedList.vala"
	if (_tmp4_ (_tmp6_, _tmp8_, _tmp4__target) > ((gint64) 0)) {
#line 1794 "SortedList.c"
		gint _tmp9_;
#line 372 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp9_ = middle_index;
#line 372 "/home/jens/Source/shotwell/src/SortedList.vala"
		sorted_list_merge (self, array, array_length1, scratch, scratch_length1, start_index, _tmp9_, end_index);
#line 1800 "SortedList.c"
	}
}


static void
sorted_list_merge (SortedList* self,
                   gpointer* array,
                   int array_length1,
                   gpointer* scratch,
                   int scratch_length1,
                   gint start_index,
                   gint middle_index,
                   gint end_index)
{
	gint count = 0;
	gint left_start = 0;
	gint left_end = 0;
	gint right_start = 0;
	gint right_end = 0;
	gint _tmp0_;
	gint scratch_index = 0;
	gint _tmp39_;
	gint _tmp40_;
#line 375 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_if_fail (IS_SORTED_LIST (self));
#line 376 "/home/jens/Source/shotwell/src/SortedList.vala"
	_vala_assert (start_index < end_index, "start_index < end_index");
#line 378 "/home/jens/Source/shotwell/src/SortedList.vala"
	count = (end_index - start_index) + 1;
#line 379 "/home/jens/Source/shotwell/src/SortedList.vala"
	left_start = start_index;
#line 380 "/home/jens/Source/shotwell/src/SortedList.vala"
	left_end = middle_index - 1;
#line 381 "/home/jens/Source/shotwell/src/SortedList.vala"
	right_start = middle_index;
#line 382 "/home/jens/Source/shotwell/src/SortedList.vala"
	right_end = end_index;
#line 384 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = count;
#line 384 "/home/jens/Source/shotwell/src/SortedList.vala"
	_vala_assert (scratch_length1 >= _tmp0_, "scratch.length >= count");
#line 385 "/home/jens/Source/shotwell/src/SortedList.vala"
	scratch_index = 0;
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
	while (TRUE) {
#line 1846 "SortedList.c"
		gboolean _tmp1_ = FALSE;
		gint _tmp2_;
		gint _tmp3_;
		gpointer left = NULL;
		gint _tmp6_;
		gconstpointer _tmp7_;
		gpointer _tmp8_;
		gpointer right = NULL;
		gint _tmp9_;
		gconstpointer _tmp10_;
		gpointer _tmp11_;
		Comparator _tmp12_;
		void* _tmp12__target;
		gconstpointer _tmp13_;
		gconstpointer _tmp14_;
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp2_ = left_start;
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp3_ = left_end;
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
		if (_tmp2_ <= _tmp3_) {
#line 1868 "SortedList.c"
			gint _tmp4_;
			gint _tmp5_;
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp4_ = right_start;
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp5_ = right_end;
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp1_ = _tmp4_ <= _tmp5_;
#line 1877 "SortedList.c"
		} else {
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp1_ = FALSE;
#line 1881 "SortedList.c"
		}
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
		if (!_tmp1_) {
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
			break;
#line 1887 "SortedList.c"
		}
#line 388 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp6_ = left_start;
#line 388 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp7_ = array[_tmp6_];
#line 388 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp8_ = ((_tmp7_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp7_) : ((gpointer) _tmp7_);
#line 388 "/home/jens/Source/shotwell/src/SortedList.vala"
		left = _tmp8_;
#line 389 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp9_ = right_start;
#line 389 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp10_ = array[_tmp9_];
#line 389 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp11_ = ((_tmp10_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp10_) : ((gpointer) _tmp10_);
#line 389 "/home/jens/Source/shotwell/src/SortedList.vala"
		right = _tmp11_;
#line 391 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp12_ = self->priv->cmp;
#line 391 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp12__target = self->priv->cmp_target;
#line 391 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp13_ = left;
#line 391 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp14_ = right;
#line 391 "/home/jens/Source/shotwell/src/SortedList.vala"
		if (_tmp12_ (_tmp13_, _tmp14_, _tmp12__target) <= ((gint64) 0)) {
#line 1915 "SortedList.c"
			gint _tmp15_;
			gconstpointer _tmp16_;
			gpointer _tmp17_;
			gpointer _tmp18_;
			gint _tmp19_;
#line 392 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp15_ = scratch_index;
#line 392 "/home/jens/Source/shotwell/src/SortedList.vala"
			scratch_index = _tmp15_ + 1;
#line 392 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp16_ = left;
#line 392 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp17_ = ((_tmp16_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp16_) : ((gpointer) _tmp16_);
#line 392 "/home/jens/Source/shotwell/src/SortedList.vala"
			((scratch[_tmp15_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (scratch[_tmp15_] = (self->priv->g_destroy_func (scratch[_tmp15_]), NULL));
#line 392 "/home/jens/Source/shotwell/src/SortedList.vala"
			scratch[_tmp15_] = _tmp17_;
#line 392 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp18_ = scratch[_tmp15_];
#line 393 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp19_ = left_start;
#line 393 "/home/jens/Source/shotwell/src/SortedList.vala"
			left_start = _tmp19_ + 1;
#line 1939 "SortedList.c"
		} else {
			gint _tmp20_;
			gconstpointer _tmp21_;
			gpointer _tmp22_;
			gpointer _tmp23_;
			gint _tmp24_;
#line 395 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp20_ = scratch_index;
#line 395 "/home/jens/Source/shotwell/src/SortedList.vala"
			scratch_index = _tmp20_ + 1;
#line 395 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp21_ = right;
#line 395 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp22_ = ((_tmp21_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp21_) : ((gpointer) _tmp21_);
#line 395 "/home/jens/Source/shotwell/src/SortedList.vala"
			((scratch[_tmp20_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (scratch[_tmp20_] = (self->priv->g_destroy_func (scratch[_tmp20_]), NULL));
#line 395 "/home/jens/Source/shotwell/src/SortedList.vala"
			scratch[_tmp20_] = _tmp22_;
#line 395 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp23_ = scratch[_tmp20_];
#line 396 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp24_ = right_start;
#line 396 "/home/jens/Source/shotwell/src/SortedList.vala"
			right_start = _tmp24_ + 1;
#line 1964 "SortedList.c"
		}
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
		((right == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (right = (self->priv->g_destroy_func (right), NULL));
#line 387 "/home/jens/Source/shotwell/src/SortedList.vala"
		((left == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (left = (self->priv->g_destroy_func (left), NULL));
#line 1970 "SortedList.c"
	}
#line 400 "/home/jens/Source/shotwell/src/SortedList.vala"
	while (TRUE) {
#line 1974 "SortedList.c"
		gint _tmp25_;
		gint _tmp26_;
		gint _tmp27_;
		gint _tmp28_;
		gconstpointer _tmp29_;
		gpointer _tmp30_;
		gpointer _tmp31_;
#line 400 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp25_ = left_start;
#line 400 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp26_ = left_end;
#line 400 "/home/jens/Source/shotwell/src/SortedList.vala"
		if (!(_tmp25_ <= _tmp26_)) {
#line 400 "/home/jens/Source/shotwell/src/SortedList.vala"
			break;
#line 1990 "SortedList.c"
		}
#line 401 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp27_ = scratch_index;
#line 401 "/home/jens/Source/shotwell/src/SortedList.vala"
		scratch_index = _tmp27_ + 1;
#line 401 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp28_ = left_start;
#line 401 "/home/jens/Source/shotwell/src/SortedList.vala"
		left_start = _tmp28_ + 1;
#line 401 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp29_ = array[_tmp28_];
#line 401 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp30_ = ((_tmp29_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp29_) : ((gpointer) _tmp29_);
#line 401 "/home/jens/Source/shotwell/src/SortedList.vala"
		((scratch[_tmp27_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (scratch[_tmp27_] = (self->priv->g_destroy_func (scratch[_tmp27_]), NULL));
#line 401 "/home/jens/Source/shotwell/src/SortedList.vala"
		scratch[_tmp27_] = _tmp30_;
#line 401 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp31_ = scratch[_tmp27_];
#line 2010 "SortedList.c"
	}
#line 403 "/home/jens/Source/shotwell/src/SortedList.vala"
	while (TRUE) {
#line 2014 "SortedList.c"
		gint _tmp32_;
		gint _tmp33_;
		gint _tmp34_;
		gint _tmp35_;
		gconstpointer _tmp36_;
		gpointer _tmp37_;
		gpointer _tmp38_;
#line 403 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp32_ = right_start;
#line 403 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp33_ = right_end;
#line 403 "/home/jens/Source/shotwell/src/SortedList.vala"
		if (!(_tmp32_ <= _tmp33_)) {
#line 403 "/home/jens/Source/shotwell/src/SortedList.vala"
			break;
#line 2030 "SortedList.c"
		}
#line 404 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp34_ = scratch_index;
#line 404 "/home/jens/Source/shotwell/src/SortedList.vala"
		scratch_index = _tmp34_ + 1;
#line 404 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp35_ = right_start;
#line 404 "/home/jens/Source/shotwell/src/SortedList.vala"
		right_start = _tmp35_ + 1;
#line 404 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp36_ = array[_tmp35_];
#line 404 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp37_ = ((_tmp36_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp36_) : ((gpointer) _tmp36_);
#line 404 "/home/jens/Source/shotwell/src/SortedList.vala"
		((scratch[_tmp34_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (scratch[_tmp34_] = (self->priv->g_destroy_func (scratch[_tmp34_]), NULL));
#line 404 "/home/jens/Source/shotwell/src/SortedList.vala"
		scratch[_tmp34_] = _tmp37_;
#line 404 "/home/jens/Source/shotwell/src/SortedList.vala"
		_tmp38_ = scratch[_tmp34_];
#line 2050 "SortedList.c"
	}
#line 406 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp39_ = scratch_index;
#line 406 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp40_ = count;
#line 406 "/home/jens/Source/shotwell/src/SortedList.vala"
	_vala_assert (_tmp39_ == _tmp40_, "scratch_index == count");
#line 408 "/home/jens/Source/shotwell/src/SortedList.vala"
	scratch_index = 0;
#line 2060 "SortedList.c"
	{
		gint list_index = 0;
#line 409 "/home/jens/Source/shotwell/src/SortedList.vala"
		list_index = start_index;
#line 2065 "SortedList.c"
		{
			gboolean _tmp41_ = FALSE;
#line 409 "/home/jens/Source/shotwell/src/SortedList.vala"
			_tmp41_ = TRUE;
#line 409 "/home/jens/Source/shotwell/src/SortedList.vala"
			while (TRUE) {
#line 2072 "SortedList.c"
				gint _tmp43_;
				gint _tmp44_;
				gint _tmp45_;
				gconstpointer _tmp46_;
				gpointer _tmp47_;
				gpointer _tmp48_;
#line 409 "/home/jens/Source/shotwell/src/SortedList.vala"
				if (!_tmp41_) {
#line 2081 "SortedList.c"
					gint _tmp42_;
#line 409 "/home/jens/Source/shotwell/src/SortedList.vala"
					_tmp42_ = list_index;
#line 409 "/home/jens/Source/shotwell/src/SortedList.vala"
					list_index = _tmp42_ + 1;
#line 2087 "SortedList.c"
				}
#line 409 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp41_ = FALSE;
#line 409 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp43_ = list_index;
#line 409 "/home/jens/Source/shotwell/src/SortedList.vala"
				if (!(_tmp43_ <= end_index)) {
#line 409 "/home/jens/Source/shotwell/src/SortedList.vala"
					break;
#line 2097 "SortedList.c"
				}
#line 410 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp44_ = list_index;
#line 410 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp45_ = scratch_index;
#line 410 "/home/jens/Source/shotwell/src/SortedList.vala"
				scratch_index = _tmp45_ + 1;
#line 410 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp46_ = scratch[_tmp45_];
#line 410 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp47_ = ((_tmp46_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp46_) : ((gpointer) _tmp46_);
#line 410 "/home/jens/Source/shotwell/src/SortedList.vala"
				((array[_tmp44_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (array[_tmp44_] = (self->priv->g_destroy_func (array[_tmp44_]), NULL));
#line 410 "/home/jens/Source/shotwell/src/SortedList.vala"
				array[_tmp44_] = _tmp47_;
#line 410 "/home/jens/Source/shotwell/src/SortedList.vala"
				_tmp48_ = array[_tmp44_];
#line 2115 "SortedList.c"
			}
		}
	}
}


static GType
sorted_list_real_get_element_type (GeeTraversable* base)
{
	GType result;
	SortedList* self;
#line 19 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 19 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = self->priv->g_type;
#line 19 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 2133 "SortedList.c"
}


static gboolean
sorted_list_real_get_read_only (GeeCollection* base)
{
	gboolean result;
	SortedList* self;
	GeeArrayList* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
#line 23 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 23 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 23 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = gee_abstract_collection_get_read_only (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 23 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = _tmp1_;
#line 23 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = _tmp2_;
#line 23 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 2157 "SortedList.c"
}


static gboolean
sorted_list_real_get_is_empty (GeeCollection* base)
{
	gboolean result;
	SortedList* self;
	GeeArrayList* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
#line 116 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 117 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 117 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = gee_collection_get_is_empty (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_COLLECTION, GeeCollection));
#line 117 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = _tmp1_;
#line 117 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = _tmp2_;
#line 117 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 2181 "SortedList.c"
}


static gint
sorted_list_real_get_size (GeeCollection* base)
{
	gint result;
	SortedList* self;
	GeeArrayList* _tmp0_;
	gint _tmp1_;
	gint _tmp2_;
#line 134 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 134 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 134 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 134 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = _tmp1_;
#line 134 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = _tmp2_;
#line 134 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 2205 "SortedList.c"
}


static GeeCollection*
sorted_list_real_get_read_only_view (GeeCollection* base)
{
	GeeCollection* result;
	SortedList* self;
	GeeArrayList* _tmp0_;
	GeeBidirList* _tmp1_;
	GeeBidirList* _tmp2_;
#line 199 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SORTED_LIST, SortedList);
#line 200 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 200 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = gee_abstract_bidir_list_get_read_only_view (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_BIDIR_LIST, GeeAbstractBidirList));
#line 200 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = _tmp1_;
#line 200 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection);
#line 200 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 2229 "SortedList.c"
}


GeeList*
sorted_list_get_read_only_view_as_list (SortedList* self)
{
	GeeList* result;
	GeeArrayList* _tmp0_;
	GeeBidirList* _tmp1_;
	GeeBidirList* _tmp2_;
#line 205 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_return_val_if_fail (IS_SORTED_LIST (self), NULL);
#line 206 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp0_ = self->priv->list;
#line 206 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp1_ = gee_abstract_bidir_list_get_read_only_view (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_BIDIR_LIST, GeeAbstractBidirList));
#line 206 "/home/jens/Source/shotwell/src/SortedList.vala"
	_tmp2_ = _tmp1_;
#line 206 "/home/jens/Source/shotwell/src/SortedList.vala"
	result = G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_LIST, GeeList);
#line 206 "/home/jens/Source/shotwell/src/SortedList.vala"
	return result;
#line 2252 "SortedList.c"
}


static void
sorted_list_class_init (SortedListClass * klass)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	sorted_list_parent_class = g_type_class_peek_parent (klass);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_type_class_add_private (klass, sizeof (SortedListPrivate));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	G_OBJECT_CLASS (klass)->get_property = _vala_sorted_list_get_property;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	G_OBJECT_CLASS (klass)->set_property = _vala_sorted_list_set_property;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	G_OBJECT_CLASS (klass)->finalize = sorted_list_finalize;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SORTED_LIST_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SORTED_LIST_G_DUP_FUNC, g_param_spec_pointer ("g-dup-func", "dup func", "dup func", G_PARAM_STATIC_STRINGS | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SORTED_LIST_G_DESTROY_FUNC, g_param_spec_pointer ("g-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_STRINGS | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SORTED_LIST_ELEMENT_TYPE_PROPERTY, sorted_list_properties[SORTED_LIST_ELEMENT_TYPE_PROPERTY] = g_param_spec_gtype ("element-type", "element-type", "element-type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SORTED_LIST_READ_ONLY_PROPERTY, sorted_list_properties[SORTED_LIST_READ_ONLY_PROPERTY] = g_param_spec_boolean ("read-only", "read-only", "read-only", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SORTED_LIST_IS_EMPTY_PROPERTY, sorted_list_properties[SORTED_LIST_IS_EMPTY_PROPERTY] = g_param_spec_boolean ("is-empty", "is-empty", "is-empty", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SORTED_LIST_SIZE_PROPERTY, sorted_list_properties[SORTED_LIST_SIZE_PROPERTY] = g_param_spec_int ("size", "size", "size", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SORTED_LIST_READ_ONLY_VIEW_PROPERTY, sorted_list_properties[SORTED_LIST_READ_ONLY_VIEW_PROPERTY] = g_param_spec_object ("read-only-view", "read-only-view", "read-only-view", GEE_TYPE_COLLECTION, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SORTED_LIST_READ_ONLY_VIEW_AS_LIST_PROPERTY, sorted_list_properties[SORTED_LIST_READ_ONLY_VIEW_AS_LIST_PROPERTY] = g_param_spec_object ("read-only-view-as-list", "read-only-view-as-list", "read-only-view-as-list", GEE_TYPE_LIST, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 2287 "SortedList.c"
}


static GType
sorted_list_gee_traversable_get_g_type (SortedList* self)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self->priv->g_type;
#line 2296 "SortedList.c"
}


static GBoxedCopyFunc
sorted_list_gee_traversable_get_g_dup_func (SortedList* self)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self->priv->g_dup_func;
#line 2305 "SortedList.c"
}


static GDestroyNotify
sorted_list_gee_traversable_get_g_destroy_func (SortedList* self)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self->priv->g_destroy_func;
#line 2314 "SortedList.c"
}


static void
sorted_list_gee_traversable_interface_init (GeeTraversableIface * iface)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	sorted_list_gee_traversable_parent_iface = g_type_interface_peek_parent (iface);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->foreach = (gboolean (*) (GeeTraversable *, GeeForallFunc, void*)) sorted_list_real_foreach;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_g_type = (GType (*) (GeeTraversable *)) sorted_list_gee_traversable_get_g_type;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeTraversable *)) sorted_list_gee_traversable_get_g_dup_func;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_g_destroy_func = (GDestroyNotify (*) (GeeTraversable *)) sorted_list_gee_traversable_get_g_destroy_func;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_element_type = sorted_list_real_get_element_type;
#line 2333 "SortedList.c"
}


static GType
sorted_list_gee_iterable_get_g_type (SortedList* self)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self->priv->g_type;
#line 2342 "SortedList.c"
}


static GBoxedCopyFunc
sorted_list_gee_iterable_get_g_dup_func (SortedList* self)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self->priv->g_dup_func;
#line 2351 "SortedList.c"
}


static GDestroyNotify
sorted_list_gee_iterable_get_g_destroy_func (SortedList* self)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self->priv->g_destroy_func;
#line 2360 "SortedList.c"
}


static void
sorted_list_gee_iterable_interface_init (GeeIterableIface * iface)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	sorted_list_gee_iterable_parent_iface = g_type_interface_peek_parent (iface);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->iterator = (GeeIterator* (*) (GeeIterable *)) sorted_list_real_iterator;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_g_type = (GType (*) (GeeIterable *)) sorted_list_gee_iterable_get_g_type;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeIterable *)) sorted_list_gee_iterable_get_g_dup_func;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_g_destroy_func = (GDestroyNotify (*) (GeeIterable *)) sorted_list_gee_iterable_get_g_destroy_func;
#line 2377 "SortedList.c"
}


static GType
sorted_list_gee_collection_get_g_type (SortedList* self)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self->priv->g_type;
#line 2386 "SortedList.c"
}


static GBoxedCopyFunc
sorted_list_gee_collection_get_g_dup_func (SortedList* self)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self->priv->g_dup_func;
#line 2395 "SortedList.c"
}


static GDestroyNotify
sorted_list_gee_collection_get_g_destroy_func (SortedList* self)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	return self->priv->g_destroy_func;
#line 2404 "SortedList.c"
}


static void
sorted_list_gee_collection_interface_init (GeeCollectionIface * iface)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	sorted_list_gee_collection_parent_iface = g_type_interface_peek_parent (iface);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->add = (gboolean (*) (GeeCollection *, gconstpointer)) sorted_list_real_add;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->add_all = (gboolean (*) (GeeCollection *, GeeCollection*)) sorted_list_real_add_all;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->clear = (void (*) (GeeCollection *)) sorted_list_real_clear;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->contains = (gboolean (*) (GeeCollection *, gconstpointer)) sorted_list_real_contains;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->contains_all = (gboolean (*) (GeeCollection *, GeeCollection*)) sorted_list_real_contains_all;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->remove = (gboolean (*) (GeeCollection *, gconstpointer)) sorted_list_real_remove;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->remove_all = (gboolean (*) (GeeCollection *, GeeCollection*)) sorted_list_real_remove_all;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->retain_all = (gboolean (*) (GeeCollection *, GeeCollection*)) sorted_list_real_retain_all;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->to_array = (gpointer* (*) (GeeCollection *, int*)) sorted_list_real_to_array;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_g_type = (GType (*) (GeeCollection *)) sorted_list_gee_collection_get_g_type;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeCollection *)) sorted_list_gee_collection_get_g_dup_func;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_g_destroy_func = (GDestroyNotify (*) (GeeCollection *)) sorted_list_gee_collection_get_g_destroy_func;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_read_only = sorted_list_real_get_read_only;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_is_empty = sorted_list_real_get_is_empty;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_size = sorted_list_real_get_size;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	iface->get_read_only_view = sorted_list_real_get_read_only_view;
#line 2445 "SortedList.c"
}


static void
sorted_list_instance_init (SortedList * self)
{
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	self->priv = SORTED_LIST_GET_PRIVATE (self);
#line 2454 "SortedList.c"
}


static void
sorted_list_finalize (GObject * obj)
{
	SortedList * self;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SORTED_LIST, SortedList);
#line 10 "/home/jens/Source/shotwell/src/SortedList.vala"
	_g_object_unref0 (self->priv->list);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	G_OBJECT_CLASS (sorted_list_parent_class)->finalize (obj);
#line 2468 "SortedList.c"
}


GType
sorted_list_get_type (void)
{
	static volatile gsize sorted_list_type_id__volatile = 0;
	if (g_once_init_enter (&sorted_list_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (SortedListClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) sorted_list_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SortedList), 0, (GInstanceInitFunc) sorted_list_instance_init, NULL };
		static const GInterfaceInfo gee_traversable_info = { (GInterfaceInitFunc) sorted_list_gee_traversable_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo gee_iterable_info = { (GInterfaceInitFunc) sorted_list_gee_iterable_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo gee_collection_info = { (GInterfaceInitFunc) sorted_list_gee_collection_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType sorted_list_type_id;
		sorted_list_type_id = g_type_register_static (G_TYPE_OBJECT, "SortedList", &g_define_type_info, 0);
		g_type_add_interface_static (sorted_list_type_id, GEE_TYPE_TRAVERSABLE, &gee_traversable_info);
		g_type_add_interface_static (sorted_list_type_id, GEE_TYPE_ITERABLE, &gee_iterable_info);
		g_type_add_interface_static (sorted_list_type_id, GEE_TYPE_COLLECTION, &gee_collection_info);
		g_once_init_leave (&sorted_list_type_id__volatile, sorted_list_type_id);
	}
	return sorted_list_type_id__volatile;
}


static void
_vala_sorted_list_get_property (GObject * object,
                                guint property_id,
                                GValue * value,
                                GParamSpec * pspec)
{
	SortedList * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_SORTED_LIST, SortedList);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	switch (property_id) {
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		case SORTED_LIST_ELEMENT_TYPE_PROPERTY:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		g_value_set_gtype (value, gee_traversable_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (self, GEE_TYPE_TRAVERSABLE, GeeTraversable)));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		case SORTED_LIST_READ_ONLY_PROPERTY:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		g_value_set_boolean (value, gee_collection_get_read_only (G_TYPE_CHECK_INSTANCE_CAST (self, GEE_TYPE_COLLECTION, GeeCollection)));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		case SORTED_LIST_IS_EMPTY_PROPERTY:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		g_value_set_boolean (value, gee_collection_get_is_empty (G_TYPE_CHECK_INSTANCE_CAST (self, GEE_TYPE_COLLECTION, GeeCollection)));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		case SORTED_LIST_SIZE_PROPERTY:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		g_value_set_int (value, gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (self, GEE_TYPE_COLLECTION, GeeCollection)));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		case SORTED_LIST_READ_ONLY_VIEW_PROPERTY:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		g_value_take_object (value, gee_collection_get_read_only_view (G_TYPE_CHECK_INSTANCE_CAST (self, GEE_TYPE_COLLECTION, GeeCollection)));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		case SORTED_LIST_READ_ONLY_VIEW_AS_LIST_PROPERTY:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		g_value_take_object (value, sorted_list_get_read_only_view_as_list (self));
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 2538 "SortedList.c"
		default:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 2544 "SortedList.c"
	}
}


static void
_vala_sorted_list_set_property (GObject * object,
                                guint property_id,
                                const GValue * value,
                                GParamSpec * pspec)
{
	SortedList * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_SORTED_LIST, SortedList);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
	switch (property_id) {
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		case SORTED_LIST_G_TYPE:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		self->priv->g_type = g_value_get_gtype (value);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		case SORTED_LIST_G_DUP_FUNC:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		self->priv->g_dup_func = g_value_get_pointer (value);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		case SORTED_LIST_G_DESTROY_FUNC:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		self->priv->g_destroy_func = g_value_get_pointer (value);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 2577 "SortedList.c"
		default:
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 9 "/home/jens/Source/shotwell/src/SortedList.vala"
		break;
#line 2583 "SortedList.c"
	}
}


static void
_vala_array_destroy (gpointer array,
                     gint array_length,
                     GDestroyNotify destroy_func)
{
	if ((array != NULL) && (destroy_func != NULL)) {
		int i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}


static void
_vala_array_free (gpointer array,
                  gint array_length,
                  GDestroyNotify destroy_func)
{
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}