Makefile
authorAlan Knowles <alan@roojs.com>
Wed, 4 Jun 2014 13:33:29 +0000 (21:33 +0800)
committerAlan Knowles <alan@roojs.com>
Wed, 4 Jun 2014 13:33:29 +0000 (21:33 +0800)
JsRender/Gtk.vala.c
JsRender/JsRender.vala.c
JsRender/Lang.vala.c
JsRender/Node.vala.c
JsRender/Roo.vala.c
Project/Gtk.vala.c
Project/Project.vala.c
Project/Roo.vala.c
Palete/Gir.vala.c

JsRender/Gtk.vala.c [new file with mode: 0644]
JsRender/JsRender.vala.c [new file with mode: 0644]
JsRender/Lang.vala.c [new file with mode: 0644]
JsRender/Node.vala.c [new file with mode: 0644]
JsRender/Roo.vala.c [new file with mode: 0644]
Makefile
Palete/Gir.vala.c [new file with mode: 0644]
Project/Gtk.vala.c [new file with mode: 0644]
Project/Project.vala.c [new file with mode: 0644]
Project/Roo.vala.c [new file with mode: 0644]

diff --git a/JsRender/Gtk.vala.c b/JsRender/Gtk.vala.c
new file mode 100644 (file)
index 0000000..5ec8bb0
--- /dev/null
@@ -0,0 +1,482 @@
+/* Gtk.vala.c generated by valac 0.24.0, the Vala compiler
+ * generated from Gtk.vala, do not modify */
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+#include <json-glib/json-glib.h>
+
+
+#define JS_RENDER_TYPE_JS_RENDER (js_render_js_render_get_type ())
+#define JS_RENDER_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRender))
+#define JS_RENDER_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+#define JS_RENDER_IS_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_IS_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_JS_RENDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+
+typedef struct _JsRenderJsRender JsRenderJsRender;
+typedef struct _JsRenderJsRenderClass JsRenderJsRenderClass;
+typedef struct _JsRenderJsRenderPrivate JsRenderJsRenderPrivate;
+
+#define PROJECT_TYPE_PROJECT (project_project_get_type ())
+#define PROJECT_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROJECT_TYPE_PROJECT, ProjectProject))
+#define PROJECT_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+#define PROJECT_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROJECT_TYPE_PROJECT))
+#define PROJECT_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROJECT_TYPE_PROJECT))
+#define PROJECT_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+
+typedef struct _ProjectProject ProjectProject;
+typedef struct _ProjectProjectClass ProjectProjectClass;
+
+#define JS_RENDER_TYPE_NODE (js_render_node_get_type ())
+#define JS_RENDER_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_NODE, JsRenderNode))
+#define JS_RENDER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_NODE, JsRenderNodeClass))
+#define JS_RENDER_IS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_NODE))
+#define JS_RENDER_IS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_NODE))
+#define JS_RENDER_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_NODE, JsRenderNodeClass))
+
+typedef struct _JsRenderNode JsRenderNode;
+typedef struct _JsRenderNodeClass JsRenderNodeClass;
+
+#define JS_RENDER_TYPE_GTK (js_render_gtk_get_type ())
+#define JS_RENDER_GTK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_GTK, JsRenderGtk))
+#define JS_RENDER_GTK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_GTK, JsRenderGtkClass))
+#define JS_RENDER_IS_GTK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_GTK))
+#define JS_RENDER_IS_GTK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_GTK))
+#define JS_RENDER_GTK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_GTK, JsRenderGtkClass))
+
+typedef struct _JsRenderGtk JsRenderGtk;
+typedef struct _JsRenderGtkClass JsRenderGtkClass;
+typedef struct _JsRenderGtkPrivate JsRenderGtkPrivate;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define __vala_JsonNode_free0(var) ((var == NULL) ? NULL : (var = (_vala_JsonNode_free (var), NULL)))
+#define _js_render_node_unref0(var) ((var == NULL) ? NULL : (var = (js_render_node_unref (var), NULL)))
+#define _json_object_unref0(var) ((var == NULL) ? NULL : (var = (json_object_unref (var), NULL)))
+#define _json_array_unref0(var) ((var == NULL) ? NULL : (var = (json_array_unref (var), NULL)))
+
+struct _JsRenderJsRender {
+       GObject parent_instance;
+       JsRenderJsRenderPrivate * priv;
+       GList* doubleStringProps;
+       gchar* id;
+       gchar* name;
+       gchar* fullname;
+       gchar* path;
+       gchar* parent;
+       gchar* title;
+       gchar* permname;
+       gchar* modOrder;
+       gchar* xtype;
+       ProjectProject* project;
+       JsRenderNode* tree;
+       GList* cn;
+       gboolean hasParent;
+};
+
+struct _JsRenderJsRenderClass {
+       GObjectClass parent_class;
+};
+
+struct _JsRenderGtk {
+       JsRenderJsRender parent_instance;
+       JsRenderGtkPrivate * priv;
+};
+
+struct _JsRenderGtkClass {
+       JsRenderJsRenderClass parent_class;
+};
+
+struct _JsRenderGtkPrivate {
+       GeeHashMap* ctors;
+};
+
+typedef enum  {
+       JS_RENDER_ERROR_INVALID_FORMAT
+} JsRenderError;
+#define JS_RENDER_ERROR js_render_error_quark ()
+
+extern gint js_render_gid;
+gint js_render_gid = 1;
+static gpointer js_render_gtk_parent_class = NULL;
+
+GType js_render_js_render_get_type (void) G_GNUC_CONST;
+gpointer project_project_ref (gpointer instance);
+void project_project_unref (gpointer instance);
+GParamSpec* project_param_spec_project (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void project_value_set_project (GValue* value, gpointer v_object);
+void project_value_take_project (GValue* value, gpointer v_object);
+gpointer project_value_get_project (const GValue* value);
+GType project_project_get_type (void) G_GNUC_CONST;
+gpointer js_render_node_ref (gpointer instance);
+void js_render_node_unref (gpointer instance);
+GParamSpec* js_render_param_spec_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void js_render_value_set_node (GValue* value, gpointer v_object);
+void js_render_value_take_node (GValue* value, gpointer v_object);
+gpointer js_render_value_get_node (const GValue* value);
+GType js_render_node_get_type (void) G_GNUC_CONST;
+GType js_render_gtk_get_type (void) G_GNUC_CONST;
+#define JS_RENDER_GTK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), JS_RENDER_TYPE_GTK, JsRenderGtkPrivate))
+enum  {
+       JS_RENDER_GTK_DUMMY_PROPERTY
+};
+JsRenderGtk* js_render_gtk_new (ProjectProject* project, const gchar* path);
+JsRenderGtk* js_render_gtk_construct (GType object_type, ProjectProject* project, const gchar* path);
+JsRenderJsRender* js_render_js_render_new (ProjectProject* project, const gchar* path);
+JsRenderJsRender* js_render_js_render_construct (GType object_type, ProjectProject* project, const gchar* path);
+GQuark js_render_error_quark (void);
+void js_render_gtk_loadItems (JsRenderGtk* self, GError** error);
+static JsonNode* _vala_JsonNode_copy (JsonNode* self);
+static void _vala_JsonNode_free (JsonNode* self);
+JsRenderNode* js_render_node_new (void);
+JsRenderNode* js_render_node_construct (GType object_type);
+void js_render_node_loadFromJson (JsRenderNode* self, JsonObject* obj);
+static void js_render_gtk_finalize (GObject* obj);
+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);
+static gint _vala_array_length (gpointer array);
+
+
+JsRenderGtk* js_render_gtk_construct (GType object_type, ProjectProject* project, const gchar* path) {
+       JsRenderGtk * self = NULL;
+       gchar* _tmp0_ = NULL;
+       ProjectProject* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       gint _tmp3_ = 0;
+       gchar* _tmp4_ = NULL;
+       gchar** cc = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       gchar* _tmp7_ = NULL;
+       gchar* _tmp8_ = NULL;
+       gchar* _tmp9_ = NULL;
+       gchar** _tmp10_ = NULL;
+       gint cc_length1 = 0;
+       gint _cc_size_ = 0;
+       GeeHashMap* _tmp11_ = NULL;
+       g_return_val_if_fail (project != NULL, NULL);
+       g_return_val_if_fail (path != NULL, NULL);
+       _tmp0_ = g_strdup ("Gtk");
+       _g_free0 (((JsRenderJsRender*) self)->xtype);
+       ((JsRenderJsRender*) self)->xtype = _tmp0_;
+       _tmp1_ = project;
+       _tmp2_ = path;
+       self = (JsRenderGtk*) js_render_js_render_construct (object_type, _tmp1_, _tmp2_);
+       _tmp3_ = js_render_gid;
+       js_render_gid = _tmp3_ + 1;
+       _tmp4_ = g_strdup_printf ("file-gtk-%d", _tmp3_);
+       _g_free0 (((JsRenderJsRender*) self)->id);
+       ((JsRenderJsRender*) self)->id = _tmp4_;
+       _tmp5_ = g_strdup ("Gtk.MessageDialog=parent:null|flags:Gtk.DialogFlags.MODAL|message_type" \
+"|buttons|text");
+       _tmp6_ = g_strdup ("Gtk.ToolButton=icon_widget:null|label:null");
+       _tmp7_ = g_strdup ("Gtk.ScrolledWindow=hadjustment:null|vadjustment:null");
+       _tmp8_ = g_strdup ("Gtk.SourceBuffer=table:null");
+       _tmp9_ = g_strdup ("Gtk.VBox=homogeneous:true|spacing:0");
+       _tmp10_ = g_new0 (gchar*, 5 + 1);
+       _tmp10_[0] = _tmp5_;
+       _tmp10_[1] = _tmp6_;
+       _tmp10_[2] = _tmp7_;
+       _tmp10_[3] = _tmp8_;
+       _tmp10_[4] = _tmp9_;
+       cc = _tmp10_;
+       cc_length1 = 5;
+       _cc_size_ = cc_length1;
+       _tmp11_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
+       _g_object_unref0 (self->priv->ctors);
+       self->priv->ctors = _tmp11_;
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp12_ = FALSE;
+                       _tmp12_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp14_ = 0;
+                               gchar** _tmp15_ = NULL;
+                               gint _tmp15__length1 = 0;
+                               gchar** ar = NULL;
+                               gchar** _tmp16_ = NULL;
+                               gint _tmp16__length1 = 0;
+                               gint _tmp17_ = 0;
+                               const gchar* _tmp18_ = NULL;
+                               gchar** _tmp19_ = NULL;
+                               gchar** _tmp20_ = NULL;
+                               gint ar_length1 = 0;
+                               gint _ar_size_ = 0;
+                               GeeHashMap* _tmp21_ = NULL;
+                               gchar** _tmp22_ = NULL;
+                               gint _tmp22__length1 = 0;
+                               const gchar* _tmp23_ = NULL;
+                               gchar** _tmp24_ = NULL;
+                               gint _tmp24__length1 = 0;
+                               const gchar* _tmp25_ = NULL;
+                               if (!_tmp12_) {
+                                       gint _tmp13_ = 0;
+                                       _tmp13_ = i;
+                                       i = _tmp13_ + 1;
+                               }
+                               _tmp12_ = FALSE;
+                               _tmp14_ = i;
+                               _tmp15_ = cc;
+                               _tmp15__length1 = cc_length1;
+                               if (!(_tmp14_ < _tmp15__length1)) {
+                                       break;
+                               }
+                               _tmp16_ = cc;
+                               _tmp16__length1 = cc_length1;
+                               _tmp17_ = i;
+                               _tmp18_ = _tmp16_[_tmp17_];
+                               _tmp20_ = _tmp19_ = g_strsplit (_tmp18_, "=", 0);
+                               ar = _tmp20_;
+                               ar_length1 = _vala_array_length (_tmp19_);
+                               _ar_size_ = ar_length1;
+                               _tmp21_ = self->priv->ctors;
+                               _tmp22_ = ar;
+                               _tmp22__length1 = ar_length1;
+                               _tmp23_ = _tmp22_[0];
+                               _tmp24_ = ar;
+                               _tmp24__length1 = ar_length1;
+                               _tmp25_ = _tmp24_[1];
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp21_, _tmp23_, _tmp25_);
+                               ar = (_vala_array_free (ar, ar_length1, (GDestroyNotify) g_free), NULL);
+                       }
+               }
+       }
+       cc = (_vala_array_free (cc, cc_length1, (GDestroyNotify) g_free), NULL);
+       return self;
+}
+
+
+JsRenderGtk* js_render_gtk_new (ProjectProject* project, const gchar* path) {
+       return js_render_gtk_construct (JS_RENDER_TYPE_GTK, project, path);
+}
+
+
+static JsonNode* _vala_JsonNode_copy (JsonNode* self) {
+       return g_boxed_copy (json_node_get_type (), self);
+}
+
+
+static gpointer __vala_JsonNode_copy0 (gpointer self) {
+       return self ? _vala_JsonNode_copy (self) : NULL;
+}
+
+
+static void _vala_JsonNode_free (JsonNode* self) {
+       g_boxed_free (json_node_get_type (), self);
+}
+
+
+static gpointer _json_object_ref0 (gpointer self) {
+       return self ? json_object_ref (self) : NULL;
+}
+
+
+static gpointer _json_array_ref0 (gpointer self) {
+       return self ? json_array_ref (self) : NULL;
+}
+
+
+void js_render_gtk_loadItems (JsRenderGtk* self, GError** error) {
+       JsRenderNode* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       JsonParser* pa = NULL;
+       JsonParser* _tmp4_ = NULL;
+       JsonParser* _tmp5_ = NULL;
+       const gchar* _tmp6_ = NULL;
+       JsonNode* node = NULL;
+       JsonParser* _tmp7_ = NULL;
+       JsonNode* _tmp8_ = NULL;
+       JsonNode* _tmp9_ = NULL;
+       JsonNode* _tmp10_ = NULL;
+       JsonNodeType _tmp11_ = 0;
+       JsonObject* obj = NULL;
+       JsonNode* _tmp15_ = NULL;
+       JsonObject* _tmp16_ = NULL;
+       JsonObject* _tmp17_ = NULL;
+       JsonObject* _tmp18_ = NULL;
+       const gchar* _tmp19_ = NULL;
+       gchar* _tmp20_ = NULL;
+       JsonObject* _tmp21_ = NULL;
+       const gchar* _tmp22_ = NULL;
+       gchar* _tmp23_ = NULL;
+       JsonObject* _tmp24_ = NULL;
+       const gchar* _tmp25_ = NULL;
+       gchar* _tmp26_ = NULL;
+       JsonArray* ar = NULL;
+       JsonObject* _tmp27_ = NULL;
+       JsonArray* _tmp28_ = NULL;
+       JsonArray* _tmp29_ = NULL;
+       JsonObject* tree_base = NULL;
+       JsonArray* _tmp30_ = NULL;
+       JsonObject* _tmp31_ = NULL;
+       JsonObject* _tmp32_ = NULL;
+       JsRenderNode* _tmp33_ = NULL;
+       JsRenderNode* _tmp34_ = NULL;
+       JsonObject* _tmp35_ = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_print ("load Items!");
+       _tmp0_ = ((JsRenderJsRender*) self)->tree;
+       if (_tmp0_ != NULL) {
+               return;
+       }
+       _tmp1_ = ((JsRenderJsRender*) self)->path;
+       _tmp2_ = g_strconcat ("load: ", _tmp1_, NULL);
+       _tmp3_ = _tmp2_;
+       g_print ("%s", _tmp3_);
+       _g_free0 (_tmp3_);
+       _tmp4_ = json_parser_new ();
+       pa = _tmp4_;
+       _tmp5_ = pa;
+       _tmp6_ = ((JsRenderJsRender*) self)->path;
+       json_parser_load_from_file (_tmp5_, _tmp6_, &_inner_error_);
+       if (_inner_error_ != NULL) {
+               if (_inner_error_->domain == JS_RENDER_ERROR) {
+                       g_propagate_error (error, _inner_error_);
+                       _g_object_unref0 (pa);
+                       return;
+               } else {
+                       _g_object_unref0 (pa);
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return;
+               }
+       }
+       _tmp7_ = pa;
+       _tmp8_ = json_parser_get_root (_tmp7_);
+       _tmp9_ = __vala_JsonNode_copy0 (_tmp8_);
+       node = _tmp9_;
+       _tmp10_ = node;
+       _tmp11_ = json_node_get_node_type (_tmp10_);
+       if (_tmp11_ != JSON_NODE_OBJECT) {
+               JsonNode* _tmp12_ = NULL;
+               const gchar* _tmp13_ = NULL;
+               GError* _tmp14_ = NULL;
+               _tmp12_ = node;
+               _tmp13_ = json_node_type_name (_tmp12_);
+               _tmp14_ = g_error_new (JS_RENDER_ERROR, JS_RENDER_ERROR_INVALID_FORMAT, "Unexpected element type %s", _tmp13_);
+               _inner_error_ = _tmp14_;
+               if (_inner_error_->domain == JS_RENDER_ERROR) {
+                       g_propagate_error (error, _inner_error_);
+                       __vala_JsonNode_free0 (node);
+                       _g_object_unref0 (pa);
+                       return;
+               } else {
+                       __vala_JsonNode_free0 (node);
+                       _g_object_unref0 (pa);
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return;
+               }
+       }
+       _tmp15_ = node;
+       _tmp16_ = json_node_get_object (_tmp15_);
+       _tmp17_ = _json_object_ref0 (_tmp16_);
+       obj = _tmp17_;
+       _tmp18_ = obj;
+       _tmp19_ = json_object_get_string_member (_tmp18_, "name");
+       _tmp20_ = g_strdup (_tmp19_);
+       _g_free0 (((JsRenderJsRender*) self)->name);
+       ((JsRenderJsRender*) self)->name = _tmp20_;
+       _tmp21_ = obj;
+       _tmp22_ = json_object_get_string_member (_tmp21_, "parent");
+       _tmp23_ = g_strdup (_tmp22_);
+       _g_free0 (((JsRenderJsRender*) self)->parent);
+       ((JsRenderJsRender*) self)->parent = _tmp23_;
+       _tmp24_ = obj;
+       _tmp25_ = json_object_get_string_member (_tmp24_, "title");
+       _tmp26_ = g_strdup (_tmp25_);
+       _g_free0 (((JsRenderJsRender*) self)->title);
+       ((JsRenderJsRender*) self)->title = _tmp26_;
+       _tmp27_ = obj;
+       _tmp28_ = json_object_get_array_member (_tmp27_, "items");
+       _tmp29_ = _json_array_ref0 (_tmp28_);
+       ar = _tmp29_;
+       _tmp30_ = ar;
+       _tmp31_ = json_array_get_object_element (_tmp30_, (guint) 1);
+       _tmp32_ = _json_object_ref0 (_tmp31_);
+       tree_base = _tmp32_;
+       _tmp33_ = js_render_node_new ();
+       _js_render_node_unref0 (((JsRenderJsRender*) self)->tree);
+       ((JsRenderJsRender*) self)->tree = _tmp33_;
+       _tmp34_ = ((JsRenderJsRender*) self)->tree;
+       _tmp35_ = tree_base;
+       js_render_node_loadFromJson (_tmp34_, _tmp35_);
+       _json_object_unref0 (tree_base);
+       _json_array_unref0 (ar);
+       _json_object_unref0 (obj);
+       __vala_JsonNode_free0 (node);
+       _g_object_unref0 (pa);
+}
+
+
+static void js_render_gtk_class_init (JsRenderGtkClass * klass) {
+       js_render_gtk_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (JsRenderGtkPrivate));
+       G_OBJECT_CLASS (klass)->finalize = js_render_gtk_finalize;
+}
+
+
+static void js_render_gtk_instance_init (JsRenderGtk * self) {
+       self->priv = JS_RENDER_GTK_GET_PRIVATE (self);
+}
+
+
+static void js_render_gtk_finalize (GObject* obj) {
+       JsRenderGtk * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, JS_RENDER_TYPE_GTK, JsRenderGtk);
+       _g_object_unref0 (self->priv->ctors);
+       G_OBJECT_CLASS (js_render_gtk_parent_class)->finalize (obj);
+}
+
+
+GType js_render_gtk_get_type (void) {
+       static volatile gsize js_render_gtk_type_id__volatile = 0;
+       if (g_once_init_enter (&js_render_gtk_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (JsRenderGtkClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) js_render_gtk_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (JsRenderGtk), 0, (GInstanceInitFunc) js_render_gtk_instance_init, NULL };
+               GType js_render_gtk_type_id;
+               js_render_gtk_type_id = g_type_register_static (JS_RENDER_TYPE_JS_RENDER, "JsRenderGtk", &g_define_type_info, 0);
+               g_once_init_leave (&js_render_gtk_type_id__volatile, js_render_gtk_type_id);
+       }
+       return js_render_gtk_type_id__volatile;
+}
+
+
+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);
+}
+
+
+static gint _vala_array_length (gpointer array) {
+       int length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
+
+
diff --git a/JsRender/JsRender.vala.c b/JsRender/JsRender.vala.c
new file mode 100644 (file)
index 0000000..fb90d35
--- /dev/null
@@ -0,0 +1,738 @@
+/* JsRender.vala.c generated by valac 0.24.0, the Vala compiler
+ * generated from JsRender.vala, do not modify */
+
+/*<Script type="text/javascript">*/
+/**
+     *
+     * load from a javascript file.. rather than bjs..
+     * 
+     *
+     */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <json-glib/json-glib.h>
+
+
+#define JS_RENDER_TYPE_JS_RENDER (js_render_js_render_get_type ())
+#define JS_RENDER_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRender))
+#define JS_RENDER_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+#define JS_RENDER_IS_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_IS_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_JS_RENDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+
+typedef struct _JsRenderJsRender JsRenderJsRender;
+typedef struct _JsRenderJsRenderClass JsRenderJsRenderClass;
+typedef struct _JsRenderJsRenderPrivate JsRenderJsRenderPrivate;
+
+#define PROJECT_TYPE_PROJECT (project_project_get_type ())
+#define PROJECT_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROJECT_TYPE_PROJECT, ProjectProject))
+#define PROJECT_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+#define PROJECT_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROJECT_TYPE_PROJECT))
+#define PROJECT_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROJECT_TYPE_PROJECT))
+#define PROJECT_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+
+typedef struct _ProjectProject ProjectProject;
+typedef struct _ProjectProjectClass ProjectProjectClass;
+
+#define JS_RENDER_TYPE_NODE (js_render_node_get_type ())
+#define JS_RENDER_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_NODE, JsRenderNode))
+#define JS_RENDER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_NODE, JsRenderNodeClass))
+#define JS_RENDER_IS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_NODE))
+#define JS_RENDER_IS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_NODE))
+#define JS_RENDER_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_NODE, JsRenderNodeClass))
+
+typedef struct _JsRenderNode JsRenderNode;
+typedef struct _JsRenderNodeClass JsRenderNodeClass;
+#define __g_list_free__g_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_free0_ (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _project_project_unref0(var) ((var == NULL) ? NULL : (var = (project_project_unref (var), NULL)))
+#define _js_render_node_unref0(var) ((var == NULL) ? NULL : (var = (js_render_node_unref (var), NULL)))
+#define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL)))
+#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+
+#define JS_RENDER_TYPE_GTK (js_render_gtk_get_type ())
+#define JS_RENDER_GTK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_GTK, JsRenderGtk))
+#define JS_RENDER_GTK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_GTK, JsRenderGtkClass))
+#define JS_RENDER_IS_GTK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_GTK))
+#define JS_RENDER_IS_GTK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_GTK))
+#define JS_RENDER_GTK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_GTK, JsRenderGtkClass))
+
+typedef struct _JsRenderGtk JsRenderGtk;
+typedef struct _JsRenderGtkClass JsRenderGtkClass;
+
+#define JS_RENDER_TYPE_ROO (js_render_roo_get_type ())
+#define JS_RENDER_ROO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_ROO, JsRenderRoo))
+#define JS_RENDER_ROO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_ROO, JsRenderRooClass))
+#define JS_RENDER_IS_ROO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_ROO))
+#define JS_RENDER_IS_ROO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_ROO))
+#define JS_RENDER_ROO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_ROO, JsRenderRooClass))
+
+typedef struct _JsRenderRoo JsRenderRoo;
+typedef struct _JsRenderRooClass JsRenderRooClass;
+#define _json_object_unref0(var) ((var == NULL) ? NULL : (var = (json_object_unref (var), NULL)))
+#define __vala_JsonNode_free0(var) ((var == NULL) ? NULL : (var = (_vala_JsonNode_free (var), NULL)))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+typedef enum  {
+       JS_RENDER_ERROR_INVALID_FORMAT
+} JsRenderError;
+#define JS_RENDER_ERROR js_render_error_quark ()
+struct _JsRenderJsRender {
+       GObject parent_instance;
+       JsRenderJsRenderPrivate * priv;
+       GList* doubleStringProps;
+       gchar* id;
+       gchar* name;
+       gchar* fullname;
+       gchar* path;
+       gchar* parent;
+       gchar* title;
+       gchar* permname;
+       gchar* modOrder;
+       gchar* xtype;
+       ProjectProject* project;
+       JsRenderNode* tree;
+       GList* cn;
+       gboolean hasParent;
+};
+
+struct _JsRenderJsRenderClass {
+       GObjectClass parent_class;
+};
+
+
+static gpointer js_render_js_render_parent_class = NULL;
+
+GQuark js_render_error_quark (void);
+GType js_render_js_render_get_type (void) G_GNUC_CONST;
+gpointer project_project_ref (gpointer instance);
+void project_project_unref (gpointer instance);
+GParamSpec* project_param_spec_project (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void project_value_set_project (GValue* value, gpointer v_object);
+void project_value_take_project (GValue* value, gpointer v_object);
+gpointer project_value_get_project (const GValue* value);
+GType project_project_get_type (void) G_GNUC_CONST;
+gpointer js_render_node_ref (gpointer instance);
+void js_render_node_unref (gpointer instance);
+GParamSpec* js_render_param_spec_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void js_render_value_set_node (GValue* value, gpointer v_object);
+void js_render_value_take_node (GValue* value, gpointer v_object);
+gpointer js_render_value_get_node (const GValue* value);
+GType js_render_node_get_type (void) G_GNUC_CONST;
+enum  {
+       JS_RENDER_JS_RENDER_DUMMY_PROPERTY
+};
+static void _g_free0_ (gpointer var);
+static void _g_list_free__g_free0_ (GList* self);
+static void _g_object_unref0_ (gpointer var);
+static void _g_list_free__g_object_unref0_ (GList* self);
+JsRenderJsRender* js_render_js_render_new (ProjectProject* project, const gchar* path);
+JsRenderJsRender* js_render_js_render_construct (GType object_type, ProjectProject* project, const gchar* path);
+JsRenderJsRender* js_render_js_render_factory (const gchar* xt, ProjectProject* project, const gchar* path);
+JsRenderGtk* js_render_gtk_new (ProjectProject* project, const gchar* path);
+JsRenderGtk* js_render_gtk_construct (GType object_type, ProjectProject* project, const gchar* path);
+GType js_render_gtk_get_type (void) G_GNUC_CONST;
+JsRenderRoo* js_render_roo_new (ProjectProject* project, const gchar* path);
+JsRenderRoo* js_render_roo_construct (GType object_type, ProjectProject* project, const gchar* path);
+GType js_render_roo_get_type (void) G_GNUC_CONST;
+void js_render_js_render_save (JsRenderJsRender* self);
+JsonObject* js_render_js_render_toJsonArray (JsRenderJsRender* self);
+static void _vala_JsonNode_free (JsonNode* self);
+void js_render_js_render_saveHTML (JsRenderJsRender* self);
+void js_render_js_render_loadItems (JsRenderJsRender* self);
+gchar* js_render_js_render_getTitle (JsRenderJsRender* self);
+gchar* js_render_js_render_getTitleTip (JsRenderJsRender* self);
+gchar* js_render_js_render_guessName (JsRenderJsRender* self, JsRenderNode* ar);
+gboolean js_render_node_hasXnsType (JsRenderNode* self);
+gchar* js_render_node_get (JsRenderNode* self, const gchar* key);
+gchar* js_render_js_render_mungeToString (JsRenderJsRender* self, const gchar* pad);
+gchar* js_render_node_mungeToString (JsRenderNode* self, gboolean isListener, const gchar* pad, GList* doubleStringProps);
+static void js_render_js_render_finalize (GObject* obj);
+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);
+static gint _vala_array_length (gpointer array);
+
+
+GQuark js_render_error_quark (void) {
+       return g_quark_from_static_string ("js_render_error-quark");
+}
+
+
+static void _g_free0_ (gpointer var) {
+       var = (g_free (var), NULL);
+}
+
+
+static void _g_list_free__g_free0_ (GList* self) {
+       g_list_foreach (self, (GFunc) _g_free0_, NULL);
+       g_list_free (self);
+}
+
+
+static void _g_object_unref0_ (gpointer var) {
+       (var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
+}
+
+
+static void _g_list_free__g_object_unref0_ (GList* self) {
+       g_list_foreach (self, (GFunc) _g_object_unref0_, NULL);
+       g_list_free (self);
+}
+
+
+static gpointer _project_project_ref0 (gpointer self) {
+       return self ? project_project_ref (self) : NULL;
+}
+
+
+JsRenderJsRender* js_render_js_render_construct (GType object_type, ProjectProject* project, const gchar* path) {
+       JsRenderJsRender * self = NULL;
+       const gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       ProjectProject* _tmp2_ = NULL;
+       ProjectProject* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar** ar = NULL;
+       const gchar* _tmp5_ = NULL;
+       gchar** _tmp6_ = NULL;
+       gchar** _tmp7_ = NULL;
+       gint ar_length1 = 0;
+       gint _ar_size_ = 0;
+       gchar* _tmp22_ = NULL;
+       const gchar* _tmp23_ = NULL;
+       gint _tmp24_ = 0;
+       gint _tmp25_ = 0;
+       const gchar* _tmp29_ = NULL;
+       gchar* _tmp30_ = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_val_if_fail (project != NULL, NULL);
+       g_return_val_if_fail (path != NULL, NULL);
+       self = (JsRenderJsRender*) g_object_new (object_type, NULL);
+       __g_list_free__g_object_unref0_0 (self->cn);
+       self->cn = NULL;
+       _tmp0_ = path;
+       _tmp1_ = g_strdup (_tmp0_);
+       _g_free0 (self->path);
+       self->path = _tmp1_;
+       _tmp2_ = project;
+       _tmp3_ = _project_project_ref0 (_tmp2_);
+       _project_project_unref0 (self->project);
+       self->project = _tmp3_;
+       self->hasParent = FALSE;
+       _tmp4_ = g_strdup ("");
+       _g_free0 (self->parent);
+       self->parent = _tmp4_;
+       _js_render_node_unref0 (self->tree);
+       self->tree = NULL;
+       _tmp5_ = self->path;
+       _tmp7_ = _tmp6_ = g_strsplit (_tmp5_, "/", 0);
+       ar = _tmp7_;
+       ar_length1 = _vala_array_length (_tmp6_);
+       _ar_size_ = ar_length1;
+       {
+               GRegex* regex = NULL;
+               GRegex* _tmp8_ = NULL;
+               gchar* _tmp9_ = NULL;
+               GRegex* _tmp10_ = NULL;
+               gchar** _tmp11_ = NULL;
+               gint _tmp11__length1 = 0;
+               gchar** _tmp12_ = NULL;
+               gint _tmp12__length1 = 0;
+               const gchar* _tmp13_ = NULL;
+               gchar** _tmp14_ = NULL;
+               gint _tmp14__length1 = 0;
+               gchar** _tmp15_ = NULL;
+               gint _tmp15__length1 = 0;
+               const gchar* _tmp16_ = NULL;
+               gint _tmp17_ = 0;
+               gint _tmp18_ = 0;
+               gchar* _tmp19_ = NULL;
+               gchar* _tmp20_ = NULL;
+               _tmp8_ = g_regex_new ("\\.(bjs|js)$", 0, 0, &_inner_error_);
+               regex = _tmp8_;
+               if (_inner_error_ != NULL) {
+                       if (_inner_error_->domain == JS_RENDER_ERROR) {
+                               goto __catch0_js_render_error;
+                       }
+                       goto __finally0;
+               }
+               _tmp10_ = regex;
+               _tmp11_ = ar;
+               _tmp11__length1 = ar_length1;
+               _tmp12_ = ar;
+               _tmp12__length1 = ar_length1;
+               _tmp13_ = _tmp11_[_tmp12__length1 - 1];
+               _tmp14_ = ar;
+               _tmp14__length1 = ar_length1;
+               _tmp15_ = ar;
+               _tmp15__length1 = ar_length1;
+               _tmp16_ = _tmp14_[_tmp15__length1 - 1];
+               _tmp17_ = strlen (_tmp16_);
+               _tmp18_ = _tmp17_;
+               _tmp19_ = g_regex_replace (_tmp10_, _tmp13_, (gssize) _tmp18_, 0, "", 0, &_inner_error_);
+               _tmp9_ = _tmp19_;
+               if (_inner_error_ != NULL) {
+                       _g_regex_unref0 (regex);
+                       if (_inner_error_->domain == JS_RENDER_ERROR) {
+                               goto __catch0_js_render_error;
+                       }
+                       goto __finally0;
+               }
+               _tmp20_ = _tmp9_;
+               _tmp9_ = NULL;
+               _g_free0 (self->name);
+               self->name = _tmp20_;
+               _g_free0 (_tmp9_);
+               _g_regex_unref0 (regex);
+       }
+       goto __finally0;
+       __catch0_js_render_error:
+       {
+               GError* e = NULL;
+               gchar* _tmp21_ = NULL;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               _tmp21_ = g_strdup ("???");
+               _g_free0 (self->name);
+               self->name = _tmp21_;
+               _g_error_free0 (e);
+       }
+       __finally0:
+       if (_inner_error_ != NULL) {
+               ar = (_vala_array_free (ar, ar_length1, (GDestroyNotify) g_free), NULL);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return NULL;
+       }
+       _tmp23_ = self->parent;
+       _tmp24_ = strlen (_tmp23_);
+       _tmp25_ = _tmp24_;
+       if (_tmp25_ > 0) {
+               const gchar* _tmp26_ = NULL;
+               gchar* _tmp27_ = NULL;
+               _tmp26_ = self->parent;
+               _tmp27_ = g_strconcat (_tmp26_, ".", NULL);
+               _g_free0 (_tmp22_);
+               _tmp22_ = _tmp27_;
+       } else {
+               gchar* _tmp28_ = NULL;
+               _tmp28_ = g_strdup ("");
+               _g_free0 (_tmp22_);
+               _tmp22_ = _tmp28_;
+       }
+       _tmp29_ = self->name;
+       _tmp30_ = g_strconcat (_tmp22_, _tmp29_, NULL);
+       _g_free0 (self->fullname);
+       self->fullname = _tmp30_;
+       _g_free0 (_tmp22_);
+       ar = (_vala_array_free (ar, ar_length1, (GDestroyNotify) g_free), NULL);
+       return self;
+}
+
+
+JsRenderJsRender* js_render_js_render_new (ProjectProject* project, const gchar* path) {
+       return js_render_js_render_construct (JS_RENDER_TYPE_JS_RENDER, project, path);
+}
+
+
+JsRenderJsRender* js_render_js_render_factory (const gchar* xt, ProjectProject* project, const gchar* path) {
+       JsRenderJsRender* result = NULL;
+       const gchar* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       GQuark _tmp3_ = 0U;
+       static GQuark _tmp2_label0 = 0;
+       static GQuark _tmp2_label1 = 0;
+       g_return_val_if_fail (xt != NULL, NULL);
+       g_return_val_if_fail (project != NULL, NULL);
+       g_return_val_if_fail (path != NULL, NULL);
+       _tmp0_ = xt;
+       _tmp1_ = _tmp0_;
+       _tmp3_ = (NULL == _tmp1_) ? 0 : g_quark_from_string (_tmp1_);
+       if (_tmp3_ == ((0 != _tmp2_label0) ? _tmp2_label0 : (_tmp2_label0 = g_quark_from_static_string ("Gtk")))) {
+               switch (0) {
+                       default:
+                       {
+                               ProjectProject* _tmp4_ = NULL;
+                               const gchar* _tmp5_ = NULL;
+                               JsRenderGtk* _tmp6_ = NULL;
+                               _tmp4_ = project;
+                               _tmp5_ = path;
+                               _tmp6_ = js_render_gtk_new (_tmp4_, _tmp5_);
+                               result = (JsRenderJsRender*) _tmp6_;
+                               return result;
+                       }
+               }
+       } else if (_tmp3_ == ((0 != _tmp2_label1) ? _tmp2_label1 : (_tmp2_label1 = g_quark_from_static_string ("Roo")))) {
+               switch (0) {
+                       default:
+                       {
+                               ProjectProject* _tmp7_ = NULL;
+                               const gchar* _tmp8_ = NULL;
+                               JsRenderRoo* _tmp9_ = NULL;
+                               _tmp7_ = project;
+                               _tmp8_ = path;
+                               _tmp9_ = js_render_roo_new (_tmp7_, _tmp8_);
+                               result = (JsRenderJsRender*) _tmp9_;
+                               return result;
+                       }
+               }
+       }
+       result = NULL;
+       return result;
+}
+
+
+static void _vala_JsonNode_free (JsonNode* self) {
+       g_boxed_free (json_node_get_type (), self);
+}
+
+
+void js_render_js_render_save (JsRenderJsRender* self) {
+       JsonGenerator* generator = NULL;
+       JsonGenerator* _tmp0_ = NULL;
+       JsonNode* node = NULL;
+       JsonNode* _tmp1_ = NULL;
+       JsonObject* _tmp2_ = NULL;
+       JsonObject* _tmp3_ = NULL;
+       const gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_if_fail (self != NULL);
+       _tmp0_ = json_generator_new ();
+       generator = _tmp0_;
+       json_generator_set_indent (generator, (guint) 4);
+       json_generator_set_pretty (generator, TRUE);
+       _tmp1_ = json_node_new (JSON_NODE_OBJECT);
+       node = _tmp1_;
+       _tmp2_ = js_render_js_render_toJsonArray (self);
+       _tmp3_ = _tmp2_;
+       json_node_init_object (node, _tmp3_);
+       _json_object_unref0 (_tmp3_);
+       json_generator_set_root (generator, node);
+       _tmp4_ = self->path;
+       _tmp5_ = g_strconcat ("WRITE: ", _tmp4_, NULL);
+       _tmp6_ = _tmp5_;
+       g_print ("%s", _tmp6_);
+       _g_free0 (_tmp6_);
+       {
+               const gchar* _tmp7_ = NULL;
+               _tmp7_ = self->path;
+               json_generator_to_file (generator, _tmp7_, &_inner_error_);
+               if (_inner_error_ != NULL) {
+                       if (_inner_error_->domain == JS_RENDER_ERROR) {
+                               goto __catch1_js_render_error;
+                       }
+                       goto __finally1;
+               }
+       }
+       goto __finally1;
+       __catch1_js_render_error:
+       {
+               GError* e = NULL;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               g_print ("Save failed");
+               _g_error_free0 (e);
+       }
+       __finally1:
+       if (_inner_error_ != NULL) {
+               __vala_JsonNode_free0 (node);
+               _g_object_unref0 (generator);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return;
+       }
+       __vala_JsonNode_free0 (node);
+       _g_object_unref0 (generator);
+}
+
+
+void js_render_js_render_saveHTML (JsRenderJsRender* self) {
+       g_return_if_fail (self != NULL);
+}
+
+
+void js_render_js_render_loadItems (JsRenderJsRender* self) {
+       g_return_if_fail (self != NULL);
+       g_print ("load items not handled..");
+}
+
+
+/**
+         * accepts:
+         * { success : , failure : , scope : }
+         * 
+         * 
+         * 
+         */
+JsonObject* js_render_js_render_toJsonArray (JsRenderJsRender* self) {
+       JsonObject* result = NULL;
+       JsonObject* ret = NULL;
+       JsonObject* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       const gchar* _tmp3_ = NULL;
+       const gchar* _tmp4_ = NULL;
+       const gchar* _tmp5_ = NULL;
+       const gchar* _tmp6_ = NULL;
+       const gchar* _tmp7_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = json_object_new ();
+       ret = _tmp0_;
+       _tmp1_ = self->id;
+       json_object_set_string_member (ret, "id", _tmp1_);
+       _tmp2_ = self->name;
+       json_object_set_string_member (ret, "name", _tmp2_);
+       _tmp3_ = self->parent;
+       json_object_set_string_member (ret, "parent", _tmp3_);
+       _tmp4_ = self->title;
+       json_object_set_string_member (ret, "title", _tmp4_);
+       _tmp5_ = self->path;
+       json_object_set_string_member (ret, "path", _tmp5_);
+       _tmp6_ = self->permname;
+       json_object_set_string_member (ret, "permname", _tmp6_);
+       _tmp7_ = self->modOrder;
+       json_object_set_string_member (ret, "modOrder", _tmp7_);
+       result = ret;
+       return result;
+}
+
+
+gchar* js_render_js_render_getTitle (JsRenderJsRender* self) {
+       gchar* result = NULL;
+       const gchar* _tmp0_ = NULL;
+       gint _tmp1_ = 0;
+       gint _tmp2_ = 0;
+       gchar** a = NULL;
+       const gchar* _tmp5_ = NULL;
+       gchar** _tmp6_ = NULL;
+       gchar** _tmp7_ = NULL;
+       gint a_length1 = 0;
+       gint _a_size_ = 0;
+       gchar** _tmp8_ = NULL;
+       gint _tmp8__length1 = 0;
+       gchar** _tmp9_ = NULL;
+       gint _tmp9__length1 = 0;
+       const gchar* _tmp10_ = NULL;
+       gchar* _tmp11_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = self->title;
+       _tmp1_ = strlen (_tmp0_);
+       _tmp2_ = _tmp1_;
+       if (_tmp2_ > 0) {
+               const gchar* _tmp3_ = NULL;
+               gchar* _tmp4_ = NULL;
+               _tmp3_ = self->title;
+               _tmp4_ = g_strdup (_tmp3_);
+               result = _tmp4_;
+               return result;
+       }
+       _tmp5_ = self->path;
+       _tmp7_ = _tmp6_ = g_strsplit (_tmp5_, "/", 0);
+       a = _tmp7_;
+       a_length1 = _vala_array_length (_tmp6_);
+       _a_size_ = a_length1;
+       _tmp8_ = a;
+       _tmp8__length1 = a_length1;
+       _tmp9_ = a;
+       _tmp9__length1 = a_length1;
+       _tmp10_ = _tmp8_[_tmp9__length1 - 1];
+       _tmp11_ = g_strdup (_tmp10_);
+       result = _tmp11_;
+       a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL);
+       return result;
+}
+
+
+gchar* js_render_js_render_getTitleTip (JsRenderJsRender* self) {
+       gchar* result = NULL;
+       const gchar* _tmp0_ = NULL;
+       gint _tmp1_ = 0;
+       gint _tmp2_ = 0;
+       const gchar* _tmp11_ = NULL;
+       gchar* _tmp12_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = self->title;
+       _tmp1_ = strlen (_tmp0_);
+       _tmp2_ = _tmp1_;
+       if (_tmp2_ > 0) {
+               const gchar* _tmp3_ = NULL;
+               gchar* _tmp4_ = NULL;
+               gchar* _tmp5_ = NULL;
+               gchar* _tmp6_ = NULL;
+               gchar* _tmp7_ = NULL;
+               const gchar* _tmp8_ = NULL;
+               gchar* _tmp9_ = NULL;
+               gchar* _tmp10_ = NULL;
+               _tmp3_ = self->title;
+               _tmp4_ = g_strconcat ("<b>", _tmp3_, NULL);
+               _tmp5_ = _tmp4_;
+               _tmp6_ = g_strconcat (_tmp5_, "</b> ", NULL);
+               _tmp7_ = _tmp6_;
+               _tmp8_ = self->path;
+               _tmp9_ = g_strconcat (_tmp7_, _tmp8_, NULL);
+               _tmp10_ = _tmp9_;
+               _g_free0 (_tmp7_);
+               _g_free0 (_tmp5_);
+               result = _tmp10_;
+               return result;
+       }
+       _tmp11_ = self->path;
+       _tmp12_ = g_strdup (_tmp11_);
+       result = _tmp12_;
+       return result;
+}
+
+
+gchar* js_render_js_render_guessName (JsRenderJsRender* self, JsRenderNode* ar) {
+       gchar* result = NULL;
+       JsRenderNode* _tmp0_ = NULL;
+       gboolean _tmp1_ = FALSE;
+       JsRenderNode* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       gchar* _tmp7_ = NULL;
+       JsRenderNode* _tmp8_ = NULL;
+       gchar* _tmp9_ = NULL;
+       gchar* _tmp10_ = NULL;
+       gchar* _tmp11_ = NULL;
+       gchar* _tmp12_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (ar != NULL, NULL);
+       _tmp0_ = ar;
+       _tmp1_ = js_render_node_hasXnsType (_tmp0_);
+       if (!_tmp1_) {
+               gchar* _tmp2_ = NULL;
+               _tmp2_ = g_strdup ("");
+               result = _tmp2_;
+               return result;
+       }
+       _tmp3_ = ar;
+       _tmp4_ = js_render_node_get (_tmp3_, "|xns");
+       _tmp5_ = _tmp4_;
+       _tmp6_ = g_strconcat (_tmp5_, ".", NULL);
+       _tmp7_ = _tmp6_;
+       _tmp8_ = ar;
+       _tmp9_ = js_render_node_get (_tmp8_, "|xtype");
+       _tmp10_ = _tmp9_;
+       _tmp11_ = g_strconcat (_tmp7_, _tmp10_, NULL);
+       _tmp12_ = _tmp11_;
+       _g_free0 (_tmp10_);
+       _g_free0 (_tmp7_);
+       _g_free0 (_tmp5_);
+       result = _tmp12_;
+       return result;
+}
+
+
+/**
+     * 
+     * munge JSON tree into Javascript code.
+     *
+     * NOTE - needs a deep copy of original tree, before starting..
+     *     - so that it does not modify current..
+     * 
+     * FIXME: + or / prefixes to properties hide it from renderer.
+     * FIXME: '*props' - not supported by this.. ?? - upto rendering code..
+     * FIXME: needs to understand what properties might be translatable (eg. double quotes)
+     * 
+     * @arg {object} obj the object or array to munge..
+     * @arg {boolean} isListener - is the array being sent a listener..
+     * @arg {string} pad - the padding to indent with. 
+     */
+gchar* js_render_js_render_mungeToString (JsRenderJsRender* self, const gchar* pad) {
+       gchar* result = NULL;
+       JsRenderNode* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       GList* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (pad != NULL, NULL);
+       _tmp0_ = self->tree;
+       _tmp1_ = pad;
+       _tmp2_ = self->doubleStringProps;
+       _tmp3_ = js_render_node_mungeToString (_tmp0_, FALSE, _tmp1_, _tmp2_);
+       result = _tmp3_;
+       return result;
+}
+
+
+static void js_render_js_render_class_init (JsRenderJsRenderClass * klass) {
+       js_render_js_render_parent_class = g_type_class_peek_parent (klass);
+       G_OBJECT_CLASS (klass)->finalize = js_render_js_render_finalize;
+}
+
+
+static void js_render_js_render_instance_init (JsRenderJsRender * self) {
+}
+
+
+static void js_render_js_render_finalize (GObject* obj) {
+       JsRenderJsRender * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, JS_RENDER_TYPE_JS_RENDER, JsRenderJsRender);
+       __g_list_free__g_free0_0 (self->doubleStringProps);
+       _g_free0 (self->id);
+       _g_free0 (self->name);
+       _g_free0 (self->fullname);
+       _g_free0 (self->path);
+       _g_free0 (self->parent);
+       _g_free0 (self->title);
+       _g_free0 (self->permname);
+       _g_free0 (self->modOrder);
+       _g_free0 (self->xtype);
+       _project_project_unref0 (self->project);
+       _js_render_node_unref0 (self->tree);
+       __g_list_free__g_object_unref0_0 (self->cn);
+       G_OBJECT_CLASS (js_render_js_render_parent_class)->finalize (obj);
+}
+
+
+GType js_render_js_render_get_type (void) {
+       static volatile gsize js_render_js_render_type_id__volatile = 0;
+       if (g_once_init_enter (&js_render_js_render_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (JsRenderJsRenderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) js_render_js_render_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (JsRenderJsRender), 0, (GInstanceInitFunc) js_render_js_render_instance_init, NULL };
+               GType js_render_js_render_type_id;
+               js_render_js_render_type_id = g_type_register_static (G_TYPE_OBJECT, "JsRenderJsRender", &g_define_type_info, 0);
+               g_once_init_leave (&js_render_js_render_type_id__volatile, js_render_js_render_type_id);
+       }
+       return js_render_js_render_type_id__volatile;
+}
+
+
+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);
+}
+
+
+static gint _vala_array_length (gpointer array) {
+       int length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
+
+
diff --git a/JsRender/Lang.vala.c b/JsRender/Lang.vala.c
new file mode 100644 (file)
index 0000000..231569a
--- /dev/null
@@ -0,0 +1,1101 @@
+/* Lang.vala.c generated by valac 0.24.0, the Vala compiler
+ * generated from Lang.vala, do not modify */
+
+/*<script type="text/javscript">*/
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+
+
+#define JS_RENDER_TYPE_LANGCLASS (js_render_langclass_get_type ())
+#define JS_RENDER_LANGCLASS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_LANGCLASS, JsRenderLang_Class))
+#define JS_RENDER_LANGCLASS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_LANGCLASS, JsRenderLang_ClassClass))
+#define JS_RENDER_IS_LANGCLASS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_LANGCLASS))
+#define JS_RENDER_IS_LANGCLASS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_LANGCLASS))
+#define JS_RENDER_LANGCLASS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_LANGCLASS, JsRenderLang_ClassClass))
+
+typedef struct _JsRenderLang_Class JsRenderLang_Class;
+typedef struct _JsRenderLang_ClassClass JsRenderLang_ClassClass;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+typedef struct _JsRenderLang_ClassPrivate JsRenderLang_ClassPrivate;
+#define __g_list_free__g_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_free0_ (var), NULL)))
+
+struct _JsRenderLang_Class {
+       GObject parent_instance;
+       JsRenderLang_ClassPrivate * priv;
+};
+
+struct _JsRenderLang_ClassClass {
+       GObjectClass parent_class;
+};
+
+struct _JsRenderLang_ClassPrivate {
+       GList* coreObjects;
+       GeeHashMap* whitespaceNames;
+       GeeHashMap* newlineNames;
+       GeeHashMap* keywordNames;
+       GeeHashMap* puncNames;
+       GeeHashMap* matchingNames;
+};
+
+
+extern JsRenderLang_Class* js_render_Lang;
+JsRenderLang_Class* js_render_Lang = NULL;
+static gpointer js_render_langclass_parent_class = NULL;
+
+void _vala_main (void);
+JsRenderLang_Class* js_render_langclass_new (void);
+JsRenderLang_Class* js_render_langclass_construct (GType object_type);
+GType js_render_langclass_get_type (void) G_GNUC_CONST;
+gchar* js_render_langclass_keyword (JsRenderLang_Class* self, const gchar* word);
+#define JS_RENDER_LANGCLASS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), JS_RENDER_TYPE_LANGCLASS, JsRenderLang_ClassPrivate))
+enum  {
+       JS_RENDER_LANGCLASS_DUMMY_PROPERTY
+};
+static void _g_free0_ (gpointer var);
+static void _g_list_free__g_free0_ (GList* self);
+static void js_render_langclass_init (JsRenderLang_Class* self);
+gboolean js_render_langclass_isBuiltin (JsRenderLang_Class* self, const gchar* name);
+gchar* js_render_langclass_whitespace (JsRenderLang_Class* self, const gchar* ch);
+gchar* js_render_langclass_newline (JsRenderLang_Class* self, const gchar* ch);
+gchar* js_render_langclass_matching (JsRenderLang_Class* self, const gchar* name);
+gboolean js_render_langclass_isKeyword (JsRenderLang_Class* self, const gchar* word);
+gchar* js_render_langclass_punc (JsRenderLang_Class* self, const gchar* ch);
+gboolean js_render_langclass_isNumber (JsRenderLang_Class* self, const gchar* str);
+gboolean js_render_langclass_isHexDec (JsRenderLang_Class* self, const gchar* str);
+gboolean js_render_langclass_isWordChar (JsRenderLang_Class* self, const gchar* str);
+gboolean js_render_langclass_isSpace (JsRenderLang_Class* self, const gchar* str);
+gboolean js_render_langclass_isNewline (JsRenderLang_Class* self, const gchar* str);
+gboolean js_render_langclass_isBoolean (JsRenderLang_Class* self, const gchar* str);
+static void js_render_langclass_finalize (GObject* obj);
+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);
+static gint _vala_array_length (gpointer array);
+
+
+/**
+@namespace
+*/
+void _vala_main (void) {
+       JsRenderLang_Class* _tmp0_ = NULL;
+       JsRenderLang_Class* _tmp1_ = NULL;
+       JsRenderLang_Class* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       _tmp0_ = js_render_langclass_new ();
+       _tmp1_ = _tmp0_;
+       _g_object_unref0 (_tmp1_);
+       _tmp2_ = js_render_Lang;
+       _tmp3_ = js_render_langclass_keyword (_tmp2_, "delete");
+       _tmp4_ = _tmp3_;
+       _tmp5_ = g_strconcat (_tmp4_, "\n", NULL);
+       _tmp6_ = _tmp5_;
+       g_print ("%s", _tmp6_);
+       _g_free0 (_tmp6_);
+       _g_free0 (_tmp4_);
+}
+
+
+int main (int argc, char ** argv) {
+#if !GLIB_CHECK_VERSION (2,35,0)
+       g_type_init ();
+#endif
+       _vala_main ();
+       return 0;
+}
+
+
+static void _g_free0_ (gpointer var) {
+       var = (g_free (var), NULL);
+}
+
+
+static void _g_list_free__g_free0_ (GList* self) {
+       g_list_foreach (self, (GFunc) _g_free0_, NULL);
+       g_list_free (self);
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+       return self ? g_object_ref (self) : NULL;
+}
+
+
+JsRenderLang_Class* js_render_langclass_construct (GType object_type) {
+       JsRenderLang_Class * self = NULL;
+       JsRenderLang_Class* _tmp0_ = NULL;
+       JsRenderLang_Class* _tmp1_ = NULL;
+       self = (JsRenderLang_Class*) g_object_new (object_type, NULL);
+       _tmp0_ = js_render_Lang;
+       if (_tmp0_ != NULL) {
+               g_print ("lang not null\n");
+               return self;
+       }
+       g_print ("init\n");
+       js_render_langclass_init (self);
+       g_print ("init Lang");
+       _tmp1_ = _g_object_ref0 (self);
+       _g_object_unref0 (js_render_Lang);
+       js_render_Lang = _tmp1_;
+       return self;
+}
+
+
+JsRenderLang_Class* js_render_langclass_new (void) {
+       return js_render_langclass_construct (JS_RENDER_TYPE_LANGCLASS);
+}
+
+
+gboolean js_render_langclass_isBuiltin (JsRenderLang_Class* self, const gchar* name) {
+       gboolean result = FALSE;
+       GList* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gint _tmp2_ = 0;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (name != NULL, FALSE);
+       _tmp0_ = self->priv->coreObjects;
+       _tmp1_ = name;
+       _tmp2_ = g_list_index (_tmp0_, _tmp1_);
+       result = _tmp2_ > (-1);
+       return result;
+}
+
+
+gchar* js_render_langclass_whitespace (JsRenderLang_Class* self, const gchar* ch) {
+       gchar* result = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gpointer _tmp2_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (ch != NULL, NULL);
+       _tmp0_ = self->priv->whitespaceNames;
+       _tmp1_ = ch;
+       _tmp2_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, _tmp1_);
+       result = (gchar*) _tmp2_;
+       return result;
+}
+
+
+gchar* js_render_langclass_newline (JsRenderLang_Class* self, const gchar* ch) {
+       gchar* result = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gpointer _tmp2_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (ch != NULL, NULL);
+       _tmp0_ = self->priv->newlineNames;
+       _tmp1_ = ch;
+       _tmp2_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, _tmp1_);
+       result = (gchar*) _tmp2_;
+       return result;
+}
+
+
+gchar* js_render_langclass_keyword (JsRenderLang_Class* self, const gchar* word) {
+       gchar* result = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gpointer _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (word != NULL, NULL);
+       _tmp0_ = self->priv->keywordNames;
+       _tmp1_ = word;
+       _tmp2_ = g_strconcat ("=", _tmp1_, NULL);
+       _tmp3_ = _tmp2_;
+       _tmp4_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, _tmp3_);
+       _tmp5_ = (gchar*) _tmp4_;
+       _g_free0 (_tmp3_);
+       result = _tmp5_;
+       return result;
+}
+
+
+gchar* js_render_langclass_matching (JsRenderLang_Class* self, const gchar* name) {
+       gchar* result = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gpointer _tmp2_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (name != NULL, NULL);
+       _tmp0_ = self->priv->matchingNames;
+       _tmp1_ = name;
+       _tmp2_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, _tmp1_);
+       result = (gchar*) _tmp2_;
+       return result;
+}
+
+
+gboolean js_render_langclass_isKeyword (JsRenderLang_Class* self, const gchar* word) {
+       gboolean result = FALSE;
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gpointer _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gboolean _tmp6_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (word != NULL, FALSE);
+       _tmp0_ = self->priv->keywordNames;
+       _tmp1_ = word;
+       _tmp2_ = g_strconcat ("=", _tmp1_, NULL);
+       _tmp3_ = _tmp2_;
+       _tmp4_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, _tmp3_);
+       _tmp5_ = (gchar*) _tmp4_;
+       _tmp6_ = _tmp5_ != NULL;
+       _g_free0 (_tmp5_);
+       _g_free0 (_tmp3_);
+       result = _tmp6_;
+       return result;
+}
+
+
+gchar* js_render_langclass_punc (JsRenderLang_Class* self, const gchar* ch) {
+       gchar* result = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gpointer _tmp2_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (ch != NULL, NULL);
+       _tmp0_ = self->priv->puncNames;
+       _tmp1_ = ch;
+       _tmp2_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, _tmp1_);
+       result = (gchar*) _tmp2_;
+       return result;
+}
+
+
+gboolean js_render_langclass_isNumber (JsRenderLang_Class* self, const gchar* str) {
+       gboolean result = FALSE;
+       const gchar* _tmp0_ = NULL;
+       gboolean _tmp1_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (str != NULL, FALSE);
+       _tmp0_ = str;
+       _tmp1_ = g_regex_match_simple ("^(.[0-9]|[0-9]+.|[0-9])[0-9]*([eE][+-][0-9]+)?$", _tmp0_, 0, 0);
+       result = _tmp1_;
+       return result;
+}
+
+
+gboolean js_render_langclass_isHexDec (JsRenderLang_Class* self, const gchar* str) {
+       gboolean result = FALSE;
+       const gchar* _tmp0_ = NULL;
+       gboolean _tmp1_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (str != NULL, FALSE);
+       _tmp0_ = str;
+       _tmp1_ = g_regex_match_simple ("^0x[0-9A-F]+$", _tmp0_, 0, 0);
+       result = _tmp1_;
+       return result;
+}
+
+
+gboolean js_render_langclass_isWordChar (JsRenderLang_Class* self, const gchar* str) {
+       gboolean result = FALSE;
+       const gchar* _tmp0_ = NULL;
+       gboolean _tmp1_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (str != NULL, FALSE);
+       _tmp0_ = str;
+       _tmp1_ = g_regex_match_simple ("^[a-zA-Z0-9$_.]+$", _tmp0_, 0, 0);
+       result = _tmp1_;
+       return result;
+}
+
+
+gboolean js_render_langclass_isSpace (JsRenderLang_Class* self, const gchar* str) {
+       gboolean result = FALSE;
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gpointer _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gboolean _tmp4_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (str != NULL, FALSE);
+       _tmp0_ = self->priv->whitespaceNames;
+       _tmp1_ = str;
+       _tmp2_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, _tmp1_);
+       _tmp3_ = (gchar*) _tmp2_;
+       _tmp4_ = _tmp3_ != NULL;
+       _g_free0 (_tmp3_);
+       result = _tmp4_;
+       return result;
+}
+
+
+gboolean js_render_langclass_isNewline (JsRenderLang_Class* self, const gchar* str) {
+       gboolean result = FALSE;
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gpointer _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gboolean _tmp4_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (str != NULL, FALSE);
+       _tmp0_ = self->priv->newlineNames;
+       _tmp1_ = str;
+       _tmp2_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, _tmp1_);
+       _tmp3_ = (gchar*) _tmp2_;
+       _tmp4_ = _tmp3_ != NULL;
+       _g_free0 (_tmp3_);
+       result = _tmp4_;
+       return result;
+}
+
+
+gboolean js_render_langclass_isBoolean (JsRenderLang_Class* self, const gchar* str) {
+       gboolean result = FALSE;
+       gboolean _tmp0_ = FALSE;
+       const gchar* _tmp1_ = NULL;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (str != NULL, FALSE);
+       _tmp1_ = str;
+       if (g_strcmp0 (_tmp1_, "false") == 0) {
+               _tmp0_ = TRUE;
+       } else {
+               const gchar* _tmp2_ = NULL;
+               _tmp2_ = str;
+               _tmp0_ = g_strcmp0 (_tmp2_, "true") == 0;
+       }
+       result = _tmp0_;
+       return result;
+}
+
+
+static void js_render_langclass_init (JsRenderLang_Class* self) {
+       GeeHashMap* _tmp0_ = NULL;
+       GeeHashMap* _tmp1_ = NULL;
+       GeeHashMap* _tmp2_ = NULL;
+       GeeHashMap* _tmp3_ = NULL;
+       GeeHashMap* _tmp4_ = NULL;
+       gchar** co = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       gchar* _tmp7_ = NULL;
+       gchar* _tmp8_ = NULL;
+       gchar* _tmp9_ = NULL;
+       gchar* _tmp10_ = NULL;
+       gchar* _tmp11_ = NULL;
+       gchar* _tmp12_ = NULL;
+       gchar* _tmp13_ = NULL;
+       gchar* _tmp14_ = NULL;
+       gchar* _tmp15_ = NULL;
+       gchar** _tmp16_ = NULL;
+       gint co_length1 = 0;
+       gint _co_size_ = 0;
+       gchar** ws = NULL;
+       gchar* _tmp25_ = NULL;
+       gchar* _tmp26_ = NULL;
+       gchar* _tmp27_ = NULL;
+       gchar** _tmp28_ = NULL;
+       gint ws_length1 = 0;
+       gint _ws_size_ = 0;
+       gchar* _tmp43_ = NULL;
+       gchar* _tmp44_ = NULL;
+       gchar** _tmp45_ = NULL;
+       gchar* _tmp60_ = NULL;
+       gchar* _tmp61_ = NULL;
+       gchar* _tmp62_ = NULL;
+       gchar* _tmp63_ = NULL;
+       gchar* _tmp64_ = NULL;
+       gchar* _tmp65_ = NULL;
+       gchar* _tmp66_ = NULL;
+       gchar* _tmp67_ = NULL;
+       gchar* _tmp68_ = NULL;
+       gchar* _tmp69_ = NULL;
+       gchar* _tmp70_ = NULL;
+       gchar* _tmp71_ = NULL;
+       gchar* _tmp72_ = NULL;
+       gchar* _tmp73_ = NULL;
+       gchar* _tmp74_ = NULL;
+       gchar* _tmp75_ = NULL;
+       gchar* _tmp76_ = NULL;
+       gchar* _tmp77_ = NULL;
+       gchar* _tmp78_ = NULL;
+       gchar* _tmp79_ = NULL;
+       gchar* _tmp80_ = NULL;
+       gchar* _tmp81_ = NULL;
+       gchar* _tmp82_ = NULL;
+       gchar* _tmp83_ = NULL;
+       gchar* _tmp84_ = NULL;
+       gchar* _tmp85_ = NULL;
+       gchar* _tmp86_ = NULL;
+       gchar* _tmp87_ = NULL;
+       gchar* _tmp88_ = NULL;
+       gchar** _tmp89_ = NULL;
+       gchar* _tmp104_ = NULL;
+       gchar* _tmp105_ = NULL;
+       gchar* _tmp106_ = NULL;
+       gchar* _tmp107_ = NULL;
+       gchar* _tmp108_ = NULL;
+       gchar* _tmp109_ = NULL;
+       gchar* _tmp110_ = NULL;
+       gchar* _tmp111_ = NULL;
+       gchar* _tmp112_ = NULL;
+       gchar* _tmp113_ = NULL;
+       gchar* _tmp114_ = NULL;
+       gchar* _tmp115_ = NULL;
+       gchar* _tmp116_ = NULL;
+       gchar* _tmp117_ = NULL;
+       gchar* _tmp118_ = NULL;
+       gchar* _tmp119_ = NULL;
+       gchar* _tmp120_ = NULL;
+       gchar* _tmp121_ = NULL;
+       gchar* _tmp122_ = NULL;
+       gchar* _tmp123_ = NULL;
+       gchar* _tmp124_ = NULL;
+       gchar* _tmp125_ = NULL;
+       gchar* _tmp126_ = NULL;
+       gchar* _tmp127_ = NULL;
+       gchar* _tmp128_ = NULL;
+       gchar* _tmp129_ = NULL;
+       gchar* _tmp130_ = NULL;
+       gchar* _tmp131_ = NULL;
+       gchar* _tmp132_ = NULL;
+       gchar* _tmp133_ = NULL;
+       gchar* _tmp134_ = NULL;
+       gchar* _tmp135_ = NULL;
+       gchar* _tmp136_ = NULL;
+       gchar* _tmp137_ = NULL;
+       gchar* _tmp138_ = NULL;
+       gchar* _tmp139_ = NULL;
+       gchar* _tmp140_ = NULL;
+       gchar** _tmp141_ = NULL;
+       gchar* _tmp156_ = NULL;
+       gchar* _tmp157_ = NULL;
+       gchar* _tmp158_ = NULL;
+       gchar* _tmp159_ = NULL;
+       gchar* _tmp160_ = NULL;
+       gchar* _tmp161_ = NULL;
+       gchar** _tmp162_ = NULL;
+       g_return_if_fail (self != NULL);
+       __g_list_free__g_free0_0 (self->priv->coreObjects);
+       self->priv->coreObjects = NULL;
+       _tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
+       _g_object_unref0 (self->priv->whitespaceNames);
+       self->priv->whitespaceNames = _tmp0_;
+       _tmp1_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
+       _g_object_unref0 (self->priv->newlineNames);
+       self->priv->newlineNames = _tmp1_;
+       _tmp2_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
+       _g_object_unref0 (self->priv->keywordNames);
+       self->priv->keywordNames = _tmp2_;
+       _tmp3_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
+       _g_object_unref0 (self->priv->puncNames);
+       self->priv->puncNames = _tmp3_;
+       _tmp4_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
+       _g_object_unref0 (self->priv->matchingNames);
+       self->priv->matchingNames = _tmp4_;
+       _tmp5_ = g_strdup ("_global_");
+       _tmp6_ = g_strdup ("Array");
+       _tmp7_ = g_strdup ("Boolean");
+       _tmp8_ = g_strdup ("Date");
+       _tmp9_ = g_strdup ("Error");
+       _tmp10_ = g_strdup ("Function");
+       _tmp11_ = g_strdup ("Math");
+       _tmp12_ = g_strdup ("Number");
+       _tmp13_ = g_strdup ("Object");
+       _tmp14_ = g_strdup ("RegExp");
+       _tmp15_ = g_strdup ("String");
+       _tmp16_ = g_new0 (gchar*, 11 + 1);
+       _tmp16_[0] = _tmp5_;
+       _tmp16_[1] = _tmp6_;
+       _tmp16_[2] = _tmp7_;
+       _tmp16_[3] = _tmp8_;
+       _tmp16_[4] = _tmp9_;
+       _tmp16_[5] = _tmp10_;
+       _tmp16_[6] = _tmp11_;
+       _tmp16_[7] = _tmp12_;
+       _tmp16_[8] = _tmp13_;
+       _tmp16_[9] = _tmp14_;
+       _tmp16_[10] = _tmp15_;
+       co = _tmp16_;
+       co_length1 = 11;
+       _co_size_ = co_length1;
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp17_ = FALSE;
+                       _tmp17_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp19_ = 0;
+                               gchar** _tmp20_ = NULL;
+                               gint _tmp20__length1 = 0;
+                               gchar** _tmp21_ = NULL;
+                               gint _tmp21__length1 = 0;
+                               gint _tmp22_ = 0;
+                               const gchar* _tmp23_ = NULL;
+                               gchar* _tmp24_ = NULL;
+                               if (!_tmp17_) {
+                                       gint _tmp18_ = 0;
+                                       _tmp18_ = i;
+                                       i = _tmp18_ + 1;
+                               }
+                               _tmp17_ = FALSE;
+                               _tmp19_ = i;
+                               _tmp20_ = co;
+                               _tmp20__length1 = co_length1;
+                               if (!(_tmp19_ < _tmp20__length1)) {
+                                       break;
+                               }
+                               _tmp21_ = co;
+                               _tmp21__length1 = co_length1;
+                               _tmp22_ = i;
+                               _tmp23_ = _tmp21_[_tmp22_];
+                               _tmp24_ = g_strdup (_tmp23_);
+                               self->priv->coreObjects = g_list_append (self->priv->coreObjects, _tmp24_);
+                       }
+               }
+       }
+       _tmp25_ = g_strdup (" :SPACE");
+       _tmp26_ = g_strdup ("\f:FORMFEED");
+       _tmp27_ = g_strdup ("\t:TAB");
+       _tmp28_ = g_new0 (gchar*, 3 + 1);
+       _tmp28_[0] = _tmp25_;
+       _tmp28_[1] = _tmp26_;
+       _tmp28_[2] = _tmp27_;
+       ws = _tmp28_;
+       ws_length1 = 3;
+       _ws_size_ = ws_length1;
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp29_ = FALSE;
+                       _tmp29_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp31_ = 0;
+                               gchar** _tmp32_ = NULL;
+                               gint _tmp32__length1 = 0;
+                               gchar** x = NULL;
+                               gchar** _tmp33_ = NULL;
+                               gint _tmp33__length1 = 0;
+                               gint _tmp34_ = 0;
+                               const gchar* _tmp35_ = NULL;
+                               gchar** _tmp36_ = NULL;
+                               gchar** _tmp37_ = NULL;
+                               gint x_length1 = 0;
+                               gint _x_size_ = 0;
+                               GeeHashMap* _tmp38_ = NULL;
+                               gchar** _tmp39_ = NULL;
+                               gint _tmp39__length1 = 0;
+                               const gchar* _tmp40_ = NULL;
+                               gchar** _tmp41_ = NULL;
+                               gint _tmp41__length1 = 0;
+                               const gchar* _tmp42_ = NULL;
+                               if (!_tmp29_) {
+                                       gint _tmp30_ = 0;
+                                       _tmp30_ = i;
+                                       i = _tmp30_ + 1;
+                               }
+                               _tmp29_ = FALSE;
+                               _tmp31_ = i;
+                               _tmp32_ = ws;
+                               _tmp32__length1 = ws_length1;
+                               if (!(_tmp31_ < _tmp32__length1)) {
+                                       break;
+                               }
+                               _tmp33_ = ws;
+                               _tmp33__length1 = ws_length1;
+                               _tmp34_ = i;
+                               _tmp35_ = _tmp33_[_tmp34_];
+                               _tmp37_ = _tmp36_ = g_strsplit (_tmp35_, ":", 0);
+                               x = _tmp37_;
+                               x_length1 = _vala_array_length (_tmp36_);
+                               _x_size_ = x_length1;
+                               _tmp38_ = self->priv->whitespaceNames;
+                               _tmp39_ = x;
+                               _tmp39__length1 = x_length1;
+                               _tmp40_ = _tmp39_[0];
+                               _tmp41_ = x;
+                               _tmp41__length1 = x_length1;
+                               _tmp42_ = _tmp41_[1];
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp38_, _tmp40_, _tmp42_);
+                               x = (_vala_array_free (x, x_length1, (GDestroyNotify) g_free), NULL);
+                       }
+               }
+       }
+       _tmp43_ = g_strdup ("\n:NEWLINE");
+       _tmp44_ = g_strdup ("\r:RETURN");
+       _tmp45_ = g_new0 (gchar*, 2 + 1);
+       _tmp45_[0] = _tmp43_;
+       _tmp45_[1] = _tmp44_;
+       ws = (_vala_array_free (ws, ws_length1, (GDestroyNotify) g_free), NULL);
+       ws = _tmp45_;
+       ws_length1 = 2;
+       _ws_size_ = ws_length1;
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp46_ = FALSE;
+                       _tmp46_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp48_ = 0;
+                               gchar** _tmp49_ = NULL;
+                               gint _tmp49__length1 = 0;
+                               gchar** x = NULL;
+                               gchar** _tmp50_ = NULL;
+                               gint _tmp50__length1 = 0;
+                               gint _tmp51_ = 0;
+                               const gchar* _tmp52_ = NULL;
+                               gchar** _tmp53_ = NULL;
+                               gchar** _tmp54_ = NULL;
+                               gint x_length1 = 0;
+                               gint _x_size_ = 0;
+                               GeeHashMap* _tmp55_ = NULL;
+                               gchar** _tmp56_ = NULL;
+                               gint _tmp56__length1 = 0;
+                               const gchar* _tmp57_ = NULL;
+                               gchar** _tmp58_ = NULL;
+                               gint _tmp58__length1 = 0;
+                               const gchar* _tmp59_ = NULL;
+                               if (!_tmp46_) {
+                                       gint _tmp47_ = 0;
+                                       _tmp47_ = i;
+                                       i = _tmp47_ + 1;
+                               }
+                               _tmp46_ = FALSE;
+                               _tmp48_ = i;
+                               _tmp49_ = ws;
+                               _tmp49__length1 = ws_length1;
+                               if (!(_tmp48_ < _tmp49__length1)) {
+                                       break;
+                               }
+                               _tmp50_ = ws;
+                               _tmp50__length1 = ws_length1;
+                               _tmp51_ = i;
+                               _tmp52_ = _tmp50_[_tmp51_];
+                               _tmp54_ = _tmp53_ = g_strsplit (_tmp52_, ":", 0);
+                               x = _tmp54_;
+                               x_length1 = _vala_array_length (_tmp53_);
+                               _x_size_ = x_length1;
+                               _tmp55_ = self->priv->newlineNames;
+                               _tmp56_ = x;
+                               _tmp56__length1 = x_length1;
+                               _tmp57_ = _tmp56_[0];
+                               _tmp58_ = x;
+                               _tmp58__length1 = x_length1;
+                               _tmp59_ = _tmp58_[1];
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp55_, _tmp57_, _tmp59_);
+                               x = (_vala_array_free (x, x_length1, (GDestroyNotify) g_free), NULL);
+                       }
+               }
+       }
+       _tmp60_ = g_strdup ("=break:BREAK");
+       _tmp61_ = g_strdup ("=case:CASE");
+       _tmp62_ = g_strdup ("=catch:CATCH");
+       _tmp63_ = g_strdup ("=const:VAR");
+       _tmp64_ = g_strdup ("=continue:CONTINUE");
+       _tmp65_ = g_strdup ("=default:DEFAULT");
+       _tmp66_ = g_strdup ("=delete:DELETE");
+       _tmp67_ = g_strdup ("=do:DO");
+       _tmp68_ = g_strdup ("=else:ELSE");
+       _tmp69_ = g_strdup ("=false:FALSE");
+       _tmp70_ = g_strdup ("=finally:FINALLY");
+       _tmp71_ = g_strdup ("=for:FOR");
+       _tmp72_ = g_strdup ("=function:FUNCTION");
+       _tmp73_ = g_strdup ("=if:IF");
+       _tmp74_ = g_strdup ("=in:IN");
+       _tmp75_ = g_strdup ("=instanceof:INSTANCEOF");
+       _tmp76_ = g_strdup ("=new:NEW");
+       _tmp77_ = g_strdup ("=null:NULL");
+       _tmp78_ = g_strdup ("=return:RETURN");
+       _tmp79_ = g_strdup ("=switch:SWITCH");
+       _tmp80_ = g_strdup ("=this:THIS");
+       _tmp81_ = g_strdup ("=throw:THROW");
+       _tmp82_ = g_strdup ("=true:TRUE");
+       _tmp83_ = g_strdup ("=try:TRY");
+       _tmp84_ = g_strdup ("=typeof:TYPEOF");
+       _tmp85_ = g_strdup ("=void:VOID");
+       _tmp86_ = g_strdup ("=while:WHILE");
+       _tmp87_ = g_strdup ("=with:WITH");
+       _tmp88_ = g_strdup ("=var:VAR");
+       _tmp89_ = g_new0 (gchar*, 29 + 1);
+       _tmp89_[0] = _tmp60_;
+       _tmp89_[1] = _tmp61_;
+       _tmp89_[2] = _tmp62_;
+       _tmp89_[3] = _tmp63_;
+       _tmp89_[4] = _tmp64_;
+       _tmp89_[5] = _tmp65_;
+       _tmp89_[6] = _tmp66_;
+       _tmp89_[7] = _tmp67_;
+       _tmp89_[8] = _tmp68_;
+       _tmp89_[9] = _tmp69_;
+       _tmp89_[10] = _tmp70_;
+       _tmp89_[11] = _tmp71_;
+       _tmp89_[12] = _tmp72_;
+       _tmp89_[13] = _tmp73_;
+       _tmp89_[14] = _tmp74_;
+       _tmp89_[15] = _tmp75_;
+       _tmp89_[16] = _tmp76_;
+       _tmp89_[17] = _tmp77_;
+       _tmp89_[18] = _tmp78_;
+       _tmp89_[19] = _tmp79_;
+       _tmp89_[20] = _tmp80_;
+       _tmp89_[21] = _tmp81_;
+       _tmp89_[22] = _tmp82_;
+       _tmp89_[23] = _tmp83_;
+       _tmp89_[24] = _tmp84_;
+       _tmp89_[25] = _tmp85_;
+       _tmp89_[26] = _tmp86_;
+       _tmp89_[27] = _tmp87_;
+       _tmp89_[28] = _tmp88_;
+       ws = (_vala_array_free (ws, ws_length1, (GDestroyNotify) g_free), NULL);
+       ws = _tmp89_;
+       ws_length1 = 29;
+       _ws_size_ = ws_length1;
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp90_ = FALSE;
+                       _tmp90_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp92_ = 0;
+                               gchar** _tmp93_ = NULL;
+                               gint _tmp93__length1 = 0;
+                               gchar** x = NULL;
+                               gchar** _tmp94_ = NULL;
+                               gint _tmp94__length1 = 0;
+                               gint _tmp95_ = 0;
+                               const gchar* _tmp96_ = NULL;
+                               gchar** _tmp97_ = NULL;
+                               gchar** _tmp98_ = NULL;
+                               gint x_length1 = 0;
+                               gint _x_size_ = 0;
+                               GeeHashMap* _tmp99_ = NULL;
+                               gchar** _tmp100_ = NULL;
+                               gint _tmp100__length1 = 0;
+                               const gchar* _tmp101_ = NULL;
+                               gchar** _tmp102_ = NULL;
+                               gint _tmp102__length1 = 0;
+                               const gchar* _tmp103_ = NULL;
+                               if (!_tmp90_) {
+                                       gint _tmp91_ = 0;
+                                       _tmp91_ = i;
+                                       i = _tmp91_ + 1;
+                               }
+                               _tmp90_ = FALSE;
+                               _tmp92_ = i;
+                               _tmp93_ = ws;
+                               _tmp93__length1 = ws_length1;
+                               if (!(_tmp92_ < _tmp93__length1)) {
+                                       break;
+                               }
+                               _tmp94_ = ws;
+                               _tmp94__length1 = ws_length1;
+                               _tmp95_ = i;
+                               _tmp96_ = _tmp94_[_tmp95_];
+                               _tmp98_ = _tmp97_ = g_strsplit (_tmp96_, ":", 0);
+                               x = _tmp98_;
+                               x_length1 = _vala_array_length (_tmp97_);
+                               _x_size_ = x_length1;
+                               _tmp99_ = self->priv->keywordNames;
+                               _tmp100_ = x;
+                               _tmp100__length1 = x_length1;
+                               _tmp101_ = _tmp100_[0];
+                               _tmp102_ = x;
+                               _tmp102__length1 = x_length1;
+                               _tmp103_ = _tmp102_[1];
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp99_, _tmp101_, _tmp103_);
+                               x = (_vala_array_free (x, x_length1, (GDestroyNotify) g_free), NULL);
+                       }
+               }
+       }
+       _tmp104_ = g_strdup ("; SEMICOLON");
+       _tmp105_ = g_strdup (", COMMA");
+       _tmp106_ = g_strdup ("? HOOK");
+       _tmp107_ = g_strdup (": COLON");
+       _tmp108_ = g_strdup ("|| OR");
+       _tmp109_ = g_strdup ("&& AND");
+       _tmp110_ = g_strdup ("| BITWISE_OR");
+       _tmp111_ = g_strdup ("^ BITWISE_XOR");
+       _tmp112_ = g_strdup ("& BITWISE_AND");
+       _tmp113_ = g_strdup ("=== STRICT_EQ");
+       _tmp114_ = g_strdup ("== EQ");
+       _tmp115_ = g_strdup ("= ASSIGN");
+       _tmp116_ = g_strdup ("!== STRICT_NE");
+       _tmp117_ = g_strdup ("!= NE");
+       _tmp118_ = g_strdup ("<< LSH");
+       _tmp119_ = g_strdup ("<= LE");
+       _tmp120_ = g_strdup ("< LT");
+       _tmp121_ = g_strdup (">>> URSH");
+       _tmp122_ = g_strdup (">> RSH");
+       _tmp123_ = g_strdup (">= GE");
+       _tmp124_ = g_strdup ("> GT");
+       _tmp125_ = g_strdup ("++ INCREMENT");
+       _tmp126_ = g_strdup ("-- DECREMENT");
+       _tmp127_ = g_strdup ("+ PLUS");
+       _tmp128_ = g_strdup ("- MINUS");
+       _tmp129_ = g_strdup ("* MUL");
+       _tmp130_ = g_strdup ("/ DIV");
+       _tmp131_ = g_strdup ("% MOD");
+       _tmp132_ = g_strdup ("! NOT");
+       _tmp133_ = g_strdup ("~ BITWISE_NOT");
+       _tmp134_ = g_strdup (". DOT");
+       _tmp135_ = g_strdup ("[ LEFT_BRACE");
+       _tmp136_ = g_strdup ("] RIGHT_BRACE");
+       _tmp137_ = g_strdup ("{ LEFT_CURLY");
+       _tmp138_ = g_strdup ("} RIGHT_CURLY");
+       _tmp139_ = g_strdup ("( LEFT_PAREN");
+       _tmp140_ = g_strdup (") RIGHT_PAREN");
+       _tmp141_ = g_new0 (gchar*, 37 + 1);
+       _tmp141_[0] = _tmp104_;
+       _tmp141_[1] = _tmp105_;
+       _tmp141_[2] = _tmp106_;
+       _tmp141_[3] = _tmp107_;
+       _tmp141_[4] = _tmp108_;
+       _tmp141_[5] = _tmp109_;
+       _tmp141_[6] = _tmp110_;
+       _tmp141_[7] = _tmp111_;
+       _tmp141_[8] = _tmp112_;
+       _tmp141_[9] = _tmp113_;
+       _tmp141_[10] = _tmp114_;
+       _tmp141_[11] = _tmp115_;
+       _tmp141_[12] = _tmp116_;
+       _tmp141_[13] = _tmp117_;
+       _tmp141_[14] = _tmp118_;
+       _tmp141_[15] = _tmp119_;
+       _tmp141_[16] = _tmp120_;
+       _tmp141_[17] = _tmp121_;
+       _tmp141_[18] = _tmp122_;
+       _tmp141_[19] = _tmp123_;
+       _tmp141_[20] = _tmp124_;
+       _tmp141_[21] = _tmp125_;
+       _tmp141_[22] = _tmp126_;
+       _tmp141_[23] = _tmp127_;
+       _tmp141_[24] = _tmp128_;
+       _tmp141_[25] = _tmp129_;
+       _tmp141_[26] = _tmp130_;
+       _tmp141_[27] = _tmp131_;
+       _tmp141_[28] = _tmp132_;
+       _tmp141_[29] = _tmp133_;
+       _tmp141_[30] = _tmp134_;
+       _tmp141_[31] = _tmp135_;
+       _tmp141_[32] = _tmp136_;
+       _tmp141_[33] = _tmp137_;
+       _tmp141_[34] = _tmp138_;
+       _tmp141_[35] = _tmp139_;
+       _tmp141_[36] = _tmp140_;
+       ws = (_vala_array_free (ws, ws_length1, (GDestroyNotify) g_free), NULL);
+       ws = _tmp141_;
+       ws_length1 = 37;
+       _ws_size_ = ws_length1;
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp142_ = FALSE;
+                       _tmp142_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp144_ = 0;
+                               gchar** _tmp145_ = NULL;
+                               gint _tmp145__length1 = 0;
+                               gchar** x = NULL;
+                               gchar** _tmp146_ = NULL;
+                               gint _tmp146__length1 = 0;
+                               gint _tmp147_ = 0;
+                               const gchar* _tmp148_ = NULL;
+                               gchar** _tmp149_ = NULL;
+                               gchar** _tmp150_ = NULL;
+                               gint x_length1 = 0;
+                               gint _x_size_ = 0;
+                               GeeHashMap* _tmp151_ = NULL;
+                               gchar** _tmp152_ = NULL;
+                               gint _tmp152__length1 = 0;
+                               const gchar* _tmp153_ = NULL;
+                               gchar** _tmp154_ = NULL;
+                               gint _tmp154__length1 = 0;
+                               const gchar* _tmp155_ = NULL;
+                               if (!_tmp142_) {
+                                       gint _tmp143_ = 0;
+                                       _tmp143_ = i;
+                                       i = _tmp143_ + 1;
+                               }
+                               _tmp142_ = FALSE;
+                               _tmp144_ = i;
+                               _tmp145_ = ws;
+                               _tmp145__length1 = ws_length1;
+                               if (!(_tmp144_ < _tmp145__length1)) {
+                                       break;
+                               }
+                               _tmp146_ = ws;
+                               _tmp146__length1 = ws_length1;
+                               _tmp147_ = i;
+                               _tmp148_ = _tmp146_[_tmp147_];
+                               _tmp150_ = _tmp149_ = g_strsplit (_tmp148_, " ", 0);
+                               x = _tmp150_;
+                               x_length1 = _vala_array_length (_tmp149_);
+                               _x_size_ = x_length1;
+                               _tmp151_ = self->priv->puncNames;
+                               _tmp152_ = x;
+                               _tmp152__length1 = x_length1;
+                               _tmp153_ = _tmp152_[0];
+                               _tmp154_ = x;
+                               _tmp154__length1 = x_length1;
+                               _tmp155_ = _tmp154_[1];
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp151_, _tmp153_, _tmp155_);
+                               x = (_vala_array_free (x, x_length1, (GDestroyNotify) g_free), NULL);
+                       }
+               }
+       }
+       _tmp156_ = g_strdup ("LEFT_PAREN:RIGHT_PAREN");
+       _tmp157_ = g_strdup ("RIGHT_PAREN:LEFT_PAREN");
+       _tmp158_ = g_strdup ("LEFT_CURLY:RIGHT_CURLY");
+       _tmp159_ = g_strdup ("RIGHT_CURLY:LEFT_CURLY");
+       _tmp160_ = g_strdup ("LEFT_BRACE:RIGHT_BRACE");
+       _tmp161_ = g_strdup ("RIGHT_BRACE:LEFT_BRACE");
+       _tmp162_ = g_new0 (gchar*, 6 + 1);
+       _tmp162_[0] = _tmp156_;
+       _tmp162_[1] = _tmp157_;
+       _tmp162_[2] = _tmp158_;
+       _tmp162_[3] = _tmp159_;
+       _tmp162_[4] = _tmp160_;
+       _tmp162_[5] = _tmp161_;
+       ws = (_vala_array_free (ws, ws_length1, (GDestroyNotify) g_free), NULL);
+       ws = _tmp162_;
+       ws_length1 = 6;
+       _ws_size_ = ws_length1;
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp163_ = FALSE;
+                       _tmp163_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp165_ = 0;
+                               gchar** _tmp166_ = NULL;
+                               gint _tmp166__length1 = 0;
+                               gchar** x = NULL;
+                               gchar** _tmp167_ = NULL;
+                               gint _tmp167__length1 = 0;
+                               gint _tmp168_ = 0;
+                               const gchar* _tmp169_ = NULL;
+                               gchar** _tmp170_ = NULL;
+                               gchar** _tmp171_ = NULL;
+                               gint x_length1 = 0;
+                               gint _x_size_ = 0;
+                               GeeHashMap* _tmp172_ = NULL;
+                               gchar** _tmp173_ = NULL;
+                               gint _tmp173__length1 = 0;
+                               const gchar* _tmp174_ = NULL;
+                               gchar** _tmp175_ = NULL;
+                               gint _tmp175__length1 = 0;
+                               const gchar* _tmp176_ = NULL;
+                               if (!_tmp163_) {
+                                       gint _tmp164_ = 0;
+                                       _tmp164_ = i;
+                                       i = _tmp164_ + 1;
+                               }
+                               _tmp163_ = FALSE;
+                               _tmp165_ = i;
+                               _tmp166_ = ws;
+                               _tmp166__length1 = ws_length1;
+                               if (!(_tmp165_ < _tmp166__length1)) {
+                                       break;
+                               }
+                               _tmp167_ = ws;
+                               _tmp167__length1 = ws_length1;
+                               _tmp168_ = i;
+                               _tmp169_ = _tmp167_[_tmp168_];
+                               _tmp171_ = _tmp170_ = g_strsplit (_tmp169_, ":", 0);
+                               x = _tmp171_;
+                               x_length1 = _vala_array_length (_tmp170_);
+                               _x_size_ = x_length1;
+                               _tmp172_ = self->priv->matchingNames;
+                               _tmp173_ = x;
+                               _tmp173__length1 = x_length1;
+                               _tmp174_ = _tmp173_[0];
+                               _tmp175_ = x;
+                               _tmp175__length1 = x_length1;
+                               _tmp176_ = _tmp175_[1];
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp172_, _tmp174_, _tmp176_);
+                               x = (_vala_array_free (x, x_length1, (GDestroyNotify) g_free), NULL);
+                       }
+               }
+       }
+       ws = (_vala_array_free (ws, ws_length1, (GDestroyNotify) g_free), NULL);
+       co = (_vala_array_free (co, co_length1, (GDestroyNotify) g_free), NULL);
+}
+
+
+static void js_render_langclass_class_init (JsRenderLang_ClassClass * klass) {
+       js_render_langclass_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (JsRenderLang_ClassPrivate));
+       G_OBJECT_CLASS (klass)->finalize = js_render_langclass_finalize;
+}
+
+
+static void js_render_langclass_instance_init (JsRenderLang_Class * self) {
+       self->priv = JS_RENDER_LANGCLASS_GET_PRIVATE (self);
+}
+
+
+static void js_render_langclass_finalize (GObject* obj) {
+       JsRenderLang_Class * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, JS_RENDER_TYPE_LANGCLASS, JsRenderLang_Class);
+       __g_list_free__g_free0_0 (self->priv->coreObjects);
+       _g_object_unref0 (self->priv->whitespaceNames);
+       _g_object_unref0 (self->priv->newlineNames);
+       _g_object_unref0 (self->priv->keywordNames);
+       _g_object_unref0 (self->priv->puncNames);
+       _g_object_unref0 (self->priv->matchingNames);
+       G_OBJECT_CLASS (js_render_langclass_parent_class)->finalize (obj);
+}
+
+
+GType js_render_langclass_get_type (void) {
+       static volatile gsize js_render_langclass_type_id__volatile = 0;
+       if (g_once_init_enter (&js_render_langclass_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (JsRenderLang_ClassClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) js_render_langclass_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (JsRenderLang_Class), 0, (GInstanceInitFunc) js_render_langclass_instance_init, NULL };
+               GType js_render_langclass_type_id;
+               js_render_langclass_type_id = g_type_register_static (G_TYPE_OBJECT, "JsRenderLang_Class", &g_define_type_info, 0);
+               g_once_init_leave (&js_render_langclass_type_id__volatile, js_render_langclass_type_id);
+       }
+       return js_render_langclass_type_id__volatile;
+}
+
+
+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);
+}
+
+
+static gint _vala_array_length (gpointer array) {
+       int length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
+
+
diff --git a/JsRender/Node.vala.c b/JsRender/Node.vala.c
new file mode 100644 (file)
index 0000000..c75c6c7
--- /dev/null
@@ -0,0 +1,1992 @@
+/* Node.vala.c generated by valac 0.24.0, the Vala compiler
+ * generated from Node.vala, do not modify */
+
+/* test..*/
+/* valac gitlive/app.Builder.js/JsRender/Lang.vala gitlive/app.Builder.js/JsRender/Node.vala --pkg gee-1.0 --pkg=json-glib-1.0 -o /tmp/Lang ;/tmp/Lang*/
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gee.h>
+#include <stdlib.h>
+#include <string.h>
+#include <json-glib/json-glib.h>
+#include <gobject/gvaluecollector.h>
+
+
+#define JS_RENDER_TYPE_NODE (js_render_node_get_type ())
+#define JS_RENDER_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_NODE, JsRenderNode))
+#define JS_RENDER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_NODE, JsRenderNodeClass))
+#define JS_RENDER_IS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_NODE))
+#define JS_RENDER_IS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_NODE))
+#define JS_RENDER_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_NODE, JsRenderNodeClass))
+
+typedef struct _JsRenderNode JsRenderNode;
+typedef struct _JsRenderNodeClass JsRenderNodeClass;
+typedef struct _JsRenderNodePrivate JsRenderNodePrivate;
+#define __g_list_free__js_render_node_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__js_render_node_unref0_ (var), NULL)))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _js_render_node_unref0(var) ((var == NULL) ? NULL : (var = (js_render_node_unref (var), NULL)))
+#define __g_list_free__g_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_free0_ (var), NULL)))
+#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+
+#define JS_RENDER_TYPE_LANGCLASS (js_render_langclass_get_type ())
+#define JS_RENDER_LANGCLASS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_LANGCLASS, JsRenderLang_Class))
+#define JS_RENDER_LANGCLASS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_LANGCLASS, JsRenderLang_ClassClass))
+#define JS_RENDER_IS_LANGCLASS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_LANGCLASS))
+#define JS_RENDER_IS_LANGCLASS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_LANGCLASS))
+#define JS_RENDER_LANGCLASS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_LANGCLASS, JsRenderLang_ClassClass))
+
+typedef struct _JsRenderLang_Class JsRenderLang_Class;
+typedef struct _JsRenderLang_ClassClass JsRenderLang_ClassClass;
+#define __vala_JsonNode_free0(var) ((var == NULL) ? NULL : (var = (_vala_JsonNode_free (var), NULL)))
+#define _json_object_unref0(var) ((var == NULL) ? NULL : (var = (json_object_unref (var), NULL)))
+typedef struct _Block1Data Block1Data;
+#define _json_array_unref0(var) ((var == NULL) ? NULL : (var = (json_array_unref (var), NULL)))
+typedef struct _JsRenderParamSpecNode JsRenderParamSpecNode;
+
+struct _JsRenderNode {
+       GTypeInstance parent_instance;
+       volatile int ref_count;
+       JsRenderNodePrivate * priv;
+       gboolean is_array;
+};
+
+struct _JsRenderNodeClass {
+       GTypeClass parent_class;
+       void (*finalize) (JsRenderNode *self);
+};
+
+struct _JsRenderNodePrivate {
+       GList* items;
+       GeeHashMap* props;
+       GeeHashMap* listeners;
+};
+
+typedef enum  {
+       JS_RENDER_ERROR_INVALID_FORMAT
+} JsRenderError;
+#define JS_RENDER_ERROR js_render_error_quark ()
+struct _Block1Data {
+       int _ref_count_;
+       JsRenderNode* self;
+       JsonObject* obj;
+};
+
+struct _JsRenderParamSpecNode {
+       GParamSpec parent_instance;
+};
+
+
+static gpointer js_render_node_parent_class = NULL;
+static JsonGenerator* js_render_node_gen;
+static JsonGenerator* js_render_node_gen = NULL;
+extern JsRenderLang_Class* js_render_Lang;
+
+gpointer js_render_node_ref (gpointer instance);
+void js_render_node_unref (gpointer instance);
+GParamSpec* js_render_param_spec_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void js_render_value_set_node (GValue* value, gpointer v_object);
+void js_render_value_take_node (GValue* value, gpointer v_object);
+gpointer js_render_value_get_node (const GValue* value);
+GType js_render_node_get_type (void) G_GNUC_CONST;
+#define JS_RENDER_NODE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), JS_RENDER_TYPE_NODE, JsRenderNodePrivate))
+enum  {
+       JS_RENDER_NODE_DUMMY_PROPERTY
+};
+static void _js_render_node_unref0_ (gpointer var);
+static void _g_list_free__js_render_node_unref0_ (GList* self);
+JsRenderNode* js_render_node_new (void);
+JsRenderNode* js_render_node_construct (GType object_type);
+gboolean js_render_node_isArray (JsRenderNode* self);
+gboolean js_render_node_hasChildren (JsRenderNode* self);
+gboolean js_render_node_hasXnsType (JsRenderNode* self);
+gchar* js_render_node_get (JsRenderNode* self, const gchar* key);
+gchar* js_render_node_mungeToString (JsRenderNode* self, gboolean isListener, const gchar* pad, GList* doubleStringProps);
+static void _g_free0_ (gpointer var);
+static void _g_list_free__g_free0_ (GList* self);
+GQuark js_render_error_quark (void);
+GType js_render_langclass_get_type (void) G_GNUC_CONST;
+gboolean js_render_langclass_isKeyword (JsRenderLang_Class* self, const gchar* word);
+gboolean js_render_langclass_isBuiltin (JsRenderLang_Class* self, const gchar* name);
+gchar* js_render_node_quoteString (JsRenderNode* self, const gchar* str);
+gboolean js_render_langclass_isNumber (JsRenderLang_Class* self, const gchar* str);
+gboolean js_render_langclass_isBoolean (JsRenderLang_Class* self, const gchar* str);
+static void _vala_JsonNode_free (JsonNode* self);
+void js_render_node_loadFromJson (JsRenderNode* self, JsonObject* obj);
+static Block1Data* block1_data_ref (Block1Data* _data1_);
+static void block1_data_unref (void * _userdata_);
+static void __lambda3_ (Block1Data* _data1_, JsonObject* o, const gchar* key, JsonNode* value);
+static void ___lambda4_ (JsRenderNode* self, JsonArray* are, guint ix, JsonNode* el);
+static void ____lambda4__json_array_foreach (JsonArray* array, guint index_, JsonNode* element_node, gpointer self);
+static void ___lambda5_ (JsRenderNode* self, JsonObject* lio, const gchar* li_key, JsonNode* li_value);
+static void ____lambda5__json_object_foreach (JsonObject* object, const gchar* member_name, JsonNode* member_node, gpointer self);
+static void ___lambda3__json_object_foreach (JsonObject* object, const gchar* member_name, JsonNode* member_node, gpointer self);
+static void js_render_node_finalize (JsRenderNode* obj);
+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);
+static gint _vala_array_length (gpointer array);
+
+
+static void _js_render_node_unref0_ (gpointer var) {
+       (var == NULL) ? NULL : (var = (js_render_node_unref (var), NULL));
+}
+
+
+static void _g_list_free__js_render_node_unref0_ (GList* self) {
+       g_list_foreach (self, (GFunc) _js_render_node_unref0_, NULL);
+       g_list_free (self);
+}
+
+
+JsRenderNode* js_render_node_construct (GType object_type) {
+       JsRenderNode* self = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       self = (JsRenderNode*) g_type_create_instance (object_type);
+       __g_list_free__js_render_node_unref0_0 (self->priv->items);
+       self->priv->items = NULL;
+       _tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
+       _g_object_unref0 (self->priv->props);
+       self->priv->props = _tmp0_;
+       self->is_array = FALSE;
+       return self;
+}
+
+
+JsRenderNode* js_render_node_new (void) {
+       return js_render_node_construct (JS_RENDER_TYPE_NODE);
+}
+
+
+gboolean js_render_node_isArray (JsRenderNode* self) {
+       gboolean result = FALSE;
+       gboolean _tmp0_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       _tmp0_ = self->is_array;
+       result = _tmp0_;
+       return result;
+}
+
+
+gboolean js_render_node_hasChildren (JsRenderNode* self) {
+       gboolean result = FALSE;
+       GList* _tmp0_ = NULL;
+       guint _tmp1_ = 0U;
+       g_return_val_if_fail (self != NULL, FALSE);
+       _tmp0_ = self->priv->items;
+       _tmp1_ = g_list_length (_tmp0_);
+       result = _tmp1_ > ((guint) 0);
+       return result;
+}
+
+
+gboolean js_render_node_hasXnsType (JsRenderNode* self) {
+       gboolean result = FALSE;
+       gboolean _tmp0_ = FALSE;
+       GeeHashMap* _tmp1_ = NULL;
+       gpointer _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gboolean _tmp4_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       _tmp1_ = self->priv->props;
+       _tmp2_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp1_, "|xns");
+       _tmp3_ = (gchar*) _tmp2_;
+       _tmp4_ = _tmp3_ != NULL;
+       _g_free0 (_tmp3_);
+       if (_tmp4_) {
+               GeeHashMap* _tmp5_ = NULL;
+               gpointer _tmp6_ = NULL;
+               gchar* _tmp7_ = NULL;
+               _tmp5_ = self->priv->props;
+               _tmp6_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp5_, "xtype");
+               _tmp7_ = (gchar*) _tmp6_;
+               _tmp0_ = _tmp7_ != NULL;
+               _g_free0 (_tmp7_);
+       } else {
+               _tmp0_ = FALSE;
+       }
+       if (_tmp0_) {
+               result = TRUE;
+               return result;
+       }
+       result = FALSE;
+       return result;
+}
+
+
+gchar* js_render_node_get (JsRenderNode* self, const gchar* key) {
+       gchar* result = NULL;
+       gchar* k = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gpointer _tmp2_ = NULL;
+       const gchar* _tmp3_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (key != NULL, NULL);
+       _tmp0_ = self->priv->props;
+       _tmp1_ = key;
+       _tmp2_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, _tmp1_);
+       k = (gchar*) _tmp2_;
+       _tmp3_ = k;
+       if (_tmp3_ == NULL) {
+               gchar* _tmp4_ = NULL;
+               _tmp4_ = g_strdup ("");
+               result = _tmp4_;
+               _g_free0 (k);
+               return result;
+       }
+       result = k;
+       return result;
+}
+
+
+static gpointer _js_render_node_ref0 (gpointer self) {
+       return self ? js_render_node_ref (self) : NULL;
+}
+
+
+static glong string_strnlen (gchar* str, glong maxlen) {
+       glong result = 0L;
+       gchar* end = NULL;
+       gchar* _tmp0_ = NULL;
+       glong _tmp1_ = 0L;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       _tmp0_ = str;
+       _tmp1_ = maxlen;
+       _tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_);
+       end = _tmp2_;
+       _tmp3_ = end;
+       if (_tmp3_ == NULL) {
+               glong _tmp4_ = 0L;
+               _tmp4_ = maxlen;
+               result = _tmp4_;
+               return result;
+       } else {
+               gchar* _tmp5_ = NULL;
+               gchar* _tmp6_ = NULL;
+               _tmp5_ = end;
+               _tmp6_ = str;
+               result = (glong) (_tmp5_ - _tmp6_);
+               return result;
+       }
+}
+
+
+static gchar* string_substring (const gchar* self, glong offset, glong len) {
+       gchar* result = NULL;
+       glong string_length = 0L;
+       gboolean _tmp0_ = FALSE;
+       glong _tmp1_ = 0L;
+       glong _tmp8_ = 0L;
+       glong _tmp14_ = 0L;
+       glong _tmp17_ = 0L;
+       glong _tmp18_ = 0L;
+       glong _tmp19_ = 0L;
+       glong _tmp20_ = 0L;
+       glong _tmp21_ = 0L;
+       gchar* _tmp22_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp1_ = offset;
+       if (_tmp1_ >= ((glong) 0)) {
+               glong _tmp2_ = 0L;
+               _tmp2_ = len;
+               _tmp0_ = _tmp2_ >= ((glong) 0);
+       } else {
+               _tmp0_ = FALSE;
+       }
+       if (_tmp0_) {
+               glong _tmp3_ = 0L;
+               glong _tmp4_ = 0L;
+               glong _tmp5_ = 0L;
+               _tmp3_ = offset;
+               _tmp4_ = len;
+               _tmp5_ = string_strnlen ((gchar*) self, _tmp3_ + _tmp4_);
+               string_length = _tmp5_;
+       } else {
+               gint _tmp6_ = 0;
+               gint _tmp7_ = 0;
+               _tmp6_ = strlen (self);
+               _tmp7_ = _tmp6_;
+               string_length = (glong) _tmp7_;
+       }
+       _tmp8_ = offset;
+       if (_tmp8_ < ((glong) 0)) {
+               glong _tmp9_ = 0L;
+               glong _tmp10_ = 0L;
+               glong _tmp11_ = 0L;
+               _tmp9_ = string_length;
+               _tmp10_ = offset;
+               offset = _tmp9_ + _tmp10_;
+               _tmp11_ = offset;
+               g_return_val_if_fail (_tmp11_ >= ((glong) 0), NULL);
+       } else {
+               glong _tmp12_ = 0L;
+               glong _tmp13_ = 0L;
+               _tmp12_ = offset;
+               _tmp13_ = string_length;
+               g_return_val_if_fail (_tmp12_ <= _tmp13_, NULL);
+       }
+       _tmp14_ = len;
+       if (_tmp14_ < ((glong) 0)) {
+               glong _tmp15_ = 0L;
+               glong _tmp16_ = 0L;
+               _tmp15_ = string_length;
+               _tmp16_ = offset;
+               len = _tmp15_ - _tmp16_;
+       }
+       _tmp17_ = offset;
+       _tmp18_ = len;
+       _tmp19_ = string_length;
+       g_return_val_if_fail ((_tmp17_ + _tmp18_) <= _tmp19_, NULL);
+       _tmp20_ = offset;
+       _tmp21_ = len;
+       _tmp22_ = g_strndup (((gchar*) self) + _tmp20_, (gsize) _tmp21_);
+       result = _tmp22_;
+       return result;
+}
+
+
+static void _g_free0_ (gpointer var) {
+       var = (g_free (var), NULL);
+}
+
+
+static void _g_list_free__g_free0_ (GList* self) {
+       g_list_foreach (self, (GFunc) _g_free0_, NULL);
+       g_list_free (self);
+}
+
+
+static gchar string_get (const gchar* self, glong index) {
+       gchar result = '\0';
+       glong _tmp0_ = 0L;
+       gchar _tmp1_ = '\0';
+       g_return_val_if_fail (self != NULL, '\0');
+       _tmp0_ = index;
+       _tmp1_ = ((gchar*) self)[_tmp0_];
+       result = _tmp1_;
+       return result;
+}
+
+
+static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) {
+       gchar* result = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (old != NULL, NULL);
+       g_return_val_if_fail (replacement != NULL, NULL);
+       {
+               GRegex* regex = NULL;
+               const gchar* _tmp0_ = NULL;
+               gchar* _tmp1_ = NULL;
+               gchar* _tmp2_ = NULL;
+               GRegex* _tmp3_ = NULL;
+               GRegex* _tmp4_ = NULL;
+               gchar* _tmp5_ = NULL;
+               GRegex* _tmp6_ = NULL;
+               const gchar* _tmp7_ = NULL;
+               gchar* _tmp8_ = NULL;
+               gchar* _tmp9_ = NULL;
+               _tmp0_ = old;
+               _tmp1_ = g_regex_escape_string (_tmp0_, -1);
+               _tmp2_ = _tmp1_;
+               _tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_);
+               _tmp4_ = _tmp3_;
+               _g_free0 (_tmp2_);
+               regex = _tmp4_;
+               if (_inner_error_ != NULL) {
+                       if (_inner_error_->domain == G_REGEX_ERROR) {
+                               goto __catch3_g_regex_error;
+                       }
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return NULL;
+               }
+               _tmp6_ = regex;
+               _tmp7_ = replacement;
+               _tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) (-1), 0, _tmp7_, 0, &_inner_error_);
+               _tmp5_ = _tmp8_;
+               if (_inner_error_ != NULL) {
+                       _g_regex_unref0 (regex);
+                       if (_inner_error_->domain == G_REGEX_ERROR) {
+                               goto __catch3_g_regex_error;
+                       }
+                       _g_regex_unref0 (regex);
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return NULL;
+               }
+               _tmp9_ = _tmp5_;
+               _tmp5_ = NULL;
+               result = _tmp9_;
+               _g_free0 (_tmp5_);
+               _g_regex_unref0 (regex);
+               return result;
+       }
+       goto __finally3;
+       __catch3_g_regex_error:
+       {
+               GError* e = NULL;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               g_assert_not_reached ();
+               _g_error_free0 (e);
+       }
+       __finally3:
+       if (_inner_error_ != NULL) {
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return NULL;
+       }
+}
+
+
+gchar* js_render_node_mungeToString (JsRenderNode* self, gboolean isListener, const gchar* pad, GList* doubleStringProps) {
+       gchar* result = NULL;
+       const gchar* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gint _tmp2_ = 0;
+       gint _tmp3_ = 0;
+       gboolean isArray = FALSE;
+       gboolean _tmp5_ = FALSE;
+       GList* els = NULL;
+       GeeArrayList* skip = NULL;
+       GeeArrayList* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       gboolean _tmp8_ = FALSE;
+       GeeHashMap* oprops = NULL;
+       GeeHashMap* _tmp12_ = NULL;
+       gboolean _tmp13_ = FALSE;
+       gboolean _tmp14_ = FALSE;
+       gboolean _tmp54_ = FALSE;
+       gchar* left = NULL;
+       GRegex* func_regex = NULL;
+       GeeMapIterator* piter = NULL;
+       GeeHashMap* _tmp102_ = NULL;
+       GeeMapIterator* _tmp103_ = NULL;
+       GeeMapIterator* iter = NULL;
+       GeeHashMap* _tmp242_ = NULL;
+       GeeMapIterator* _tmp243_ = NULL;
+       GList* _tmp302_ = NULL;
+       guint _tmp303_ = 0U;
+       gchar* spad = NULL;
+       const gchar* _tmp305_ = NULL;
+       const gchar* _tmp306_ = NULL;
+       gint _tmp307_ = 0;
+       gint _tmp308_ = 0;
+       gchar* _tmp309_ = NULL;
+       const gchar* _tmp310_ = NULL;
+       gchar* _tmp311_ = NULL;
+       gchar* _tmp312_ = NULL;
+       const gchar* _tmp313_ = NULL;
+       gchar* _tmp314_ = NULL;
+       gchar* _tmp315_ = NULL;
+       GList* _tmp316_ = NULL;
+       gchar* _tmp317_ = NULL;
+       gchar* _tmp318_ = NULL;
+       gchar* _tmp319_ = NULL;
+       gchar* _tmp320_ = NULL;
+       gchar* _tmp321_ = NULL;
+       gchar* _tmp322_ = NULL;
+       const gchar* _tmp323_ = NULL;
+       gchar* _tmp324_ = NULL;
+       gchar* _tmp325_ = NULL;
+       gchar* _tmp326_ = NULL;
+       gchar* _tmp327_ = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (pad != NULL, NULL);
+       _tmp1_ = pad;
+       _tmp2_ = strlen (_tmp1_);
+       _tmp3_ = _tmp2_;
+       if (_tmp3_ < 1) {
+               _tmp0_ = "    ";
+       } else {
+               const gchar* _tmp4_ = NULL;
+               _tmp4_ = pad;
+               _tmp0_ = _tmp4_;
+       }
+       pad = _tmp0_;
+       _tmp5_ = js_render_node_isArray (self);
+       isArray = _tmp5_;
+       els = NULL;
+       _tmp6_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL);
+       skip = _tmp6_;
+       _tmp8_ = isArray;
+       if (!_tmp8_) {
+               gboolean _tmp9_ = FALSE;
+               _tmp9_ = js_render_node_hasXnsType (self);
+               _tmp7_ = _tmp9_;
+       } else {
+               _tmp7_ = FALSE;
+       }
+       if (_tmp7_) {
+               GeeArrayList* _tmp10_ = NULL;
+               GeeArrayList* _tmp11_ = NULL;
+               _tmp10_ = skip;
+               gee_abstract_collection_add ((GeeAbstractCollection*) _tmp10_, "|xns");
+               _tmp11_ = skip;
+               gee_abstract_collection_add ((GeeAbstractCollection*) _tmp11_, "xtype");
+       }
+       _tmp12_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, JS_RENDER_TYPE_NODE, (GBoxedCopyFunc) js_render_node_ref, js_render_node_unref, NULL, NULL, NULL);
+       oprops = _tmp12_;
+       _tmp14_ = isArray;
+       if (!_tmp14_) {
+               gboolean _tmp15_ = FALSE;
+               _tmp15_ = js_render_node_hasChildren (self);
+               _tmp13_ = _tmp15_;
+       } else {
+               _tmp13_ = FALSE;
+       }
+       if (_tmp13_) {
+               {
+                       gint ii = 0;
+                       ii = 0;
+                       {
+                               gboolean _tmp16_ = FALSE;
+                               _tmp16_ = TRUE;
+                               while (TRUE) {
+                                       gint _tmp18_ = 0;
+                                       GList* _tmp19_ = NULL;
+                                       guint _tmp20_ = 0U;
+                                       JsRenderNode* pl = NULL;
+                                       GList* _tmp21_ = NULL;
+                                       gint _tmp22_ = 0;
+                                       gconstpointer _tmp23_ = NULL;
+                                       JsRenderNode* _tmp24_ = NULL;
+                                       JsRenderNode* _tmp25_ = NULL;
+                                       GeeHashMap* _tmp26_ = NULL;
+                                       gboolean _tmp27_ = FALSE;
+                                       gchar* prop = NULL;
+                                       JsRenderNode* _tmp28_ = NULL;
+                                       gchar* _tmp29_ = NULL;
+                                       const gchar* _tmp30_ = NULL;
+                                       gboolean _tmp31_ = FALSE;
+                                       const gchar* _tmp35_ = NULL;
+                                       gchar* _tmp36_ = NULL;
+                                       GeeHashMap* _tmp37_ = NULL;
+                                       const gchar* _tmp38_ = NULL;
+                                       gboolean _tmp39_ = FALSE;
+                                       GeeHashMap* _tmp44_ = NULL;
+                                       const gchar* _tmp45_ = NULL;
+                                       gpointer _tmp46_ = NULL;
+                                       JsRenderNode* _tmp47_ = NULL;
+                                       GeeHashMap* _tmp48_ = NULL;
+                                       const gchar* _tmp49_ = NULL;
+                                       gpointer _tmp50_ = NULL;
+                                       JsRenderNode* _tmp51_ = NULL;
+                                       JsRenderNode* _tmp52_ = NULL;
+                                       JsRenderNode* _tmp53_ = NULL;
+                                       if (!_tmp16_) {
+                                               gint _tmp17_ = 0;
+                                               _tmp17_ = ii;
+                                               ii = _tmp17_ + 1;
+                                       }
+                                       _tmp16_ = FALSE;
+                                       _tmp18_ = ii;
+                                       _tmp19_ = self->priv->items;
+                                       _tmp20_ = g_list_length (_tmp19_);
+                                       if (!(((guint) _tmp18_) < _tmp20_)) {
+                                               break;
+                                       }
+                                       _tmp21_ = self->priv->items;
+                                       _tmp22_ = ii;
+                                       _tmp23_ = g_list_nth_data (_tmp21_, (guint) _tmp22_);
+                                       _tmp24_ = _js_render_node_ref0 ((JsRenderNode*) _tmp23_);
+                                       pl = _tmp24_;
+                                       _tmp25_ = pl;
+                                       _tmp26_ = _tmp25_->priv->props;
+                                       _tmp27_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp26_, "*prop");
+                                       if (!_tmp27_) {
+                                               _js_render_node_unref0 (pl);
+                                               continue;
+                                       }
+                                       _tmp28_ = pl;
+                                       _tmp29_ = js_render_node_get (_tmp28_, "*prop");
+                                       prop = _tmp29_;
+                                       _tmp30_ = prop;
+                                       _tmp31_ = g_regex_match_simple ("\\[\\]$", _tmp30_, 0, 0);
+                                       if (!_tmp31_) {
+                                               GeeHashMap* _tmp32_ = NULL;
+                                               const gchar* _tmp33_ = NULL;
+                                               JsRenderNode* _tmp34_ = NULL;
+                                               _tmp32_ = oprops;
+                                               _tmp33_ = prop;
+                                               _tmp34_ = pl;
+                                               gee_abstract_map_set ((GeeAbstractMap*) _tmp32_, _tmp33_, _tmp34_);
+                                               _g_free0 (prop);
+                                               _js_render_node_unref0 (pl);
+                                               continue;
+                                       }
+                                       _tmp35_ = prop;
+                                       _tmp36_ = string_substring (_tmp35_, (glong) 0, (glong) (-2));
+                                       _g_free0 (prop);
+                                       prop = _tmp36_;
+                                       _tmp37_ = oprops;
+                                       _tmp38_ = prop;
+                                       _tmp39_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp37_, _tmp38_);
+                                       if (!_tmp39_) {
+                                               JsRenderNode* cn = NULL;
+                                               JsRenderNode* _tmp40_ = NULL;
+                                               GeeHashMap* _tmp41_ = NULL;
+                                               const gchar* _tmp42_ = NULL;
+                                               JsRenderNode* _tmp43_ = NULL;
+                                               _tmp40_ = js_render_node_new ();
+                                               cn = _tmp40_;
+                                               _tmp41_ = oprops;
+                                               _tmp42_ = prop;
+                                               _tmp43_ = cn;
+                                               gee_abstract_map_set ((GeeAbstractMap*) _tmp41_, _tmp42_, _tmp43_);
+                                               _js_render_node_unref0 (cn);
+                                       }
+                                       _tmp44_ = oprops;
+                                       _tmp45_ = prop;
+                                       _tmp46_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp44_, _tmp45_);
+                                       _tmp47_ = (JsRenderNode*) _tmp46_;
+                                       _tmp47_->is_array = TRUE;
+                                       _js_render_node_unref0 (_tmp47_);
+                                       _tmp48_ = oprops;
+                                       _tmp49_ = prop;
+                                       _tmp50_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp48_, _tmp49_);
+                                       _tmp51_ = (JsRenderNode*) _tmp50_;
+                                       _tmp52_ = pl;
+                                       _tmp53_ = _js_render_node_ref0 (_tmp52_);
+                                       _tmp51_->priv->items = g_list_append (_tmp51_->priv->items, _tmp53_);
+                                       _js_render_node_unref0 (_tmp51_);
+                                       _g_free0 (prop);
+                                       _js_render_node_unref0 (pl);
+                               }
+                       }
+               }
+       }
+       _tmp54_ = js_render_node_isArray (self);
+       if (_tmp54_) {
+               gchar* spad = NULL;
+               const gchar* _tmp75_ = NULL;
+               const gchar* _tmp76_ = NULL;
+               gint _tmp77_ = 0;
+               gint _tmp78_ = 0;
+               gchar* _tmp79_ = NULL;
+               const gchar* _tmp80_ = NULL;
+               gchar* _tmp81_ = NULL;
+               gchar* _tmp82_ = NULL;
+               const gchar* _tmp83_ = NULL;
+               gchar* _tmp84_ = NULL;
+               gchar* _tmp85_ = NULL;
+               GList* _tmp86_ = NULL;
+               gchar* _tmp87_ = NULL;
+               gchar* _tmp88_ = NULL;
+               gchar* _tmp89_ = NULL;
+               gchar* _tmp90_ = NULL;
+               gchar* _tmp91_ = NULL;
+               gchar* _tmp92_ = NULL;
+               const gchar* _tmp93_ = NULL;
+               gchar* _tmp94_ = NULL;
+               gchar* _tmp95_ = NULL;
+               gchar* _tmp96_ = NULL;
+               gchar* _tmp97_ = NULL;
+               {
+                       gint i = 0;
+                       i = 0;
+                       {
+                               gboolean _tmp55_ = FALSE;
+                               _tmp55_ = TRUE;
+                               while (TRUE) {
+                                       gint _tmp57_ = 0;
+                                       GList* _tmp58_ = NULL;
+                                       guint _tmp59_ = 0U;
+                                       JsRenderNode* el = NULL;
+                                       GList* _tmp60_ = NULL;
+                                       gint _tmp61_ = 0;
+                                       gconstpointer _tmp62_ = NULL;
+                                       JsRenderNode* _tmp63_ = NULL;
+                                       gint _tmp64_ = 0;
+                                       gchar* _tmp65_ = NULL;
+                                       gchar* _tmp66_ = NULL;
+                                       gchar* _tmp67_ = NULL;
+                                       gchar* _tmp68_ = NULL;
+                                       JsRenderNode* _tmp69_ = NULL;
+                                       const gchar* _tmp70_ = NULL;
+                                       GList* _tmp71_ = NULL;
+                                       gchar* _tmp72_ = NULL;
+                                       gchar* _tmp73_ = NULL;
+                                       gchar* _tmp74_ = NULL;
+                                       if (!_tmp55_) {
+                                               gint _tmp56_ = 0;
+                                               _tmp56_ = i;
+                                               i = _tmp56_ + 1;
+                                       }
+                                       _tmp55_ = FALSE;
+                                       _tmp57_ = i;
+                                       _tmp58_ = self->priv->items;
+                                       _tmp59_ = g_list_length (_tmp58_);
+                                       if (!(((guint) _tmp57_) < _tmp59_)) {
+                                               break;
+                                       }
+                                       _tmp60_ = self->priv->items;
+                                       _tmp61_ = i;
+                                       _tmp62_ = g_list_nth_data (_tmp60_, (guint) _tmp61_);
+                                       _tmp63_ = _js_render_node_ref0 ((JsRenderNode*) _tmp62_);
+                                       el = _tmp63_;
+                                       _tmp64_ = i;
+                                       _tmp65_ = g_strdup_printf ("%d", _tmp64_);
+                                       _tmp66_ = _tmp65_;
+                                       _tmp67_ = g_strconcat (_tmp66_, " : ", NULL);
+                                       _tmp68_ = _tmp67_;
+                                       _tmp69_ = el;
+                                       _tmp70_ = pad;
+                                       _tmp71_ = doubleStringProps;
+                                       _tmp72_ = js_render_node_mungeToString (_tmp69_, FALSE, _tmp70_, _tmp71_);
+                                       _tmp73_ = _tmp72_;
+                                       _tmp74_ = g_strconcat (_tmp68_, _tmp73_, NULL);
+                                       els = g_list_append (els, _tmp74_);
+                                       _g_free0 (_tmp73_);
+                                       _g_free0 (_tmp68_);
+                                       _g_free0 (_tmp66_);
+                                       _js_render_node_unref0 (el);
+                               }
+                       }
+               }
+               _tmp75_ = pad;
+               _tmp76_ = pad;
+               _tmp77_ = strlen (_tmp76_);
+               _tmp78_ = _tmp77_;
+               _tmp79_ = string_substring (_tmp75_, (glong) 0, (glong) (_tmp78_ - 4));
+               spad = _tmp79_;
+               _tmp80_ = pad;
+               _tmp81_ = g_strconcat ("{\n", _tmp80_, NULL);
+               _tmp82_ = _tmp81_;
+               _tmp83_ = pad;
+               _tmp84_ = g_strconcat (",\n", _tmp83_, NULL);
+               _tmp85_ = _tmp84_;
+               _tmp86_ = els;
+               _tmp87_ = g_strjoin (_tmp85_, _tmp86_, NULL);
+               _tmp88_ = _tmp87_;
+               _tmp89_ = g_strconcat (_tmp82_, _tmp88_, NULL);
+               _tmp90_ = _tmp89_;
+               _tmp91_ = g_strconcat (_tmp90_, "\n", NULL);
+               _tmp92_ = _tmp91_;
+               _tmp93_ = spad;
+               _tmp94_ = g_strconcat (_tmp92_, _tmp93_, NULL);
+               _tmp95_ = _tmp94_;
+               _tmp96_ = g_strconcat (_tmp95_, "}", NULL);
+               _tmp97_ = _tmp96_;
+               _g_free0 (_tmp95_);
+               _g_free0 (_tmp92_);
+               _g_free0 (_tmp90_);
+               _g_free0 (_tmp88_);
+               _g_free0 (_tmp85_);
+               _g_free0 (_tmp82_);
+               result = _tmp97_;
+               _g_free0 (spad);
+               _g_object_unref0 (oprops);
+               _g_object_unref0 (skip);
+               __g_list_free__g_free0_0 (els);
+               return result;
+       }
+       {
+               GRegex* _tmp98_ = NULL;
+               GRegex* _tmp99_ = NULL;
+               GRegex* _tmp100_ = NULL;
+               _tmp99_ = g_regex_new ("^\\s+|\\s+$", 0, 0, &_inner_error_);
+               _tmp98_ = _tmp99_;
+               if (_inner_error_ != NULL) {
+                       if (_inner_error_->domain == JS_RENDER_ERROR) {
+                               goto __catch2_js_render_error;
+                       }
+                       goto __finally2;
+               }
+               _tmp100_ = _tmp98_;
+               _tmp98_ = NULL;
+               _g_regex_unref0 (func_regex);
+               func_regex = _tmp100_;
+               _g_regex_unref0 (_tmp98_);
+       }
+       goto __finally2;
+       __catch2_js_render_error:
+       {
+               GError* e = NULL;
+               gchar* _tmp101_ = NULL;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               g_print ("failed to build regex");
+               _tmp101_ = g_strdup ("");
+               result = _tmp101_;
+               _g_error_free0 (e);
+               _g_regex_unref0 (func_regex);
+               _g_free0 (left);
+               _g_object_unref0 (oprops);
+               _g_object_unref0 (skip);
+               __g_list_free__g_free0_0 (els);
+               return result;
+       }
+       __finally2:
+       if (_inner_error_ != NULL) {
+               _g_regex_unref0 (func_regex);
+               _g_free0 (left);
+               _g_object_unref0 (oprops);
+               _g_object_unref0 (skip);
+               __g_list_free__g_free0_0 (els);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return NULL;
+       }
+       _tmp102_ = self->priv->props;
+       _tmp103_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp102_);
+       piter = _tmp103_;
+       while (TRUE) {
+               GeeMapIterator* _tmp104_ = NULL;
+               gboolean _tmp105_ = FALSE;
+               gchar* k = NULL;
+               GeeMapIterator* _tmp106_ = NULL;
+               gpointer _tmp107_ = NULL;
+               gchar* v = NULL;
+               GeeMapIterator* _tmp108_ = NULL;
+               gpointer _tmp109_ = NULL;
+               GeeArrayList* _tmp110_ = NULL;
+               const gchar* _tmp111_ = NULL;
+               gboolean _tmp112_ = FALSE;
+               gchar* _tmp113_ = NULL;
+               const gchar* _tmp114_ = NULL;
+               gchar _tmp115_ = '\0';
+               gchar* leftv = NULL;
+               gchar* _tmp120_ = NULL;
+               const gchar* _tmp121_ = NULL;
+               gchar _tmp122_ = '\0';
+               const gchar* _tmp123_ = NULL;
+               gchar _tmp124_ = '\0';
+               gboolean _tmp125_ = FALSE;
+               JsRenderLang_Class* _tmp126_ = NULL;
+               const gchar* _tmp127_ = NULL;
+               gboolean _tmp128_ = FALSE;
+               const gchar* _tmp153_ = NULL;
+               gchar* _tmp154_ = NULL;
+               gboolean _tmp155_ = FALSE;
+               const gchar* _tmp177_ = NULL;
+               gchar _tmp178_ = '\0';
+               gboolean _tmp203_ = FALSE;
+               JsRenderLang_Class* _tmp204_ = NULL;
+               const gchar* _tmp205_ = NULL;
+               gboolean _tmp206_ = FALSE;
+               GList* _tmp213_ = NULL;
+               guint _tmp214_ = 0U;
+               GList* _tmp220_ = NULL;
+               const gchar* _tmp221_ = NULL;
+               gint _tmp222_ = 0;
+               const gchar* _tmp228_ = NULL;
+               gchar* _tmp229_ = NULL;
+               gchar* _tmp230_ = NULL;
+               const gchar* _tmp231_ = NULL;
+               const gchar* _tmp232_ = NULL;
+               gint _tmp233_ = 0;
+               gint _tmp234_ = 0;
+               gchar* _tmp235_ = NULL;
+               gchar* _tmp236_ = NULL;
+               gchar* _tmp237_ = NULL;
+               gchar* _tmp238_ = NULL;
+               gchar* _tmp239_ = NULL;
+               gchar* _tmp240_ = NULL;
+               gchar* _tmp241_ = NULL;
+               _tmp104_ = piter;
+               _tmp105_ = gee_map_iterator_next (_tmp104_);
+               if (!_tmp105_) {
+                       break;
+               }
+               _tmp106_ = piter;
+               _tmp107_ = gee_map_iterator_get_key (_tmp106_);
+               k = (gchar*) _tmp107_;
+               _tmp108_ = piter;
+               _tmp109_ = gee_map_iterator_get_value (_tmp108_);
+               v = (gchar*) _tmp109_;
+               _tmp110_ = skip;
+               _tmp111_ = k;
+               _tmp112_ = gee_abstract_collection_contains ((GeeAbstractCollection*) _tmp110_, _tmp111_);
+               if (_tmp112_) {
+                       _g_free0 (v);
+                       _g_free0 (k);
+                       continue;
+               }
+               _tmp114_ = k;
+               _tmp115_ = string_get (_tmp114_, (glong) 0);
+               if (_tmp115_ == '|') {
+                       const gchar* _tmp116_ = NULL;
+                       gchar* _tmp117_ = NULL;
+                       _tmp116_ = k;
+                       _tmp117_ = string_substring (_tmp116_, (glong) 1, (glong) (-1));
+                       _g_free0 (_tmp113_);
+                       _tmp113_ = _tmp117_;
+               } else {
+                       const gchar* _tmp118_ = NULL;
+                       gchar* _tmp119_ = NULL;
+                       _tmp118_ = k;
+                       _tmp119_ = g_strdup (_tmp118_);
+                       _g_free0 (_tmp113_);
+                       _tmp113_ = _tmp119_;
+               }
+               _tmp120_ = g_strdup (_tmp113_);
+               leftv = _tmp120_;
+               _tmp121_ = leftv;
+               _tmp122_ = string_get (_tmp121_, (glong) 0);
+               if (_tmp122_ == '.') {
+                       _g_free0 (leftv);
+                       _g_free0 (_tmp113_);
+                       _g_free0 (v);
+                       _g_free0 (k);
+                       continue;
+               }
+               _tmp123_ = k;
+               _tmp124_ = string_get (_tmp123_, (glong) 0);
+               if (_tmp124_ == '*') {
+                       _g_free0 (leftv);
+                       _g_free0 (_tmp113_);
+                       _g_free0 (v);
+                       _g_free0 (k);
+                       continue;
+               }
+               _tmp126_ = js_render_Lang;
+               _tmp127_ = leftv;
+               _tmp128_ = js_render_langclass_isKeyword (_tmp126_, _tmp127_);
+               if (_tmp128_) {
+                       _tmp125_ = TRUE;
+               } else {
+                       JsRenderLang_Class* _tmp129_ = NULL;
+                       const gchar* _tmp130_ = NULL;
+                       gboolean _tmp131_ = FALSE;
+                       _tmp129_ = js_render_Lang;
+                       _tmp130_ = leftv;
+                       _tmp131_ = js_render_langclass_isBuiltin (_tmp129_, _tmp130_);
+                       _tmp125_ = _tmp131_;
+               }
+               if (_tmp125_) {
+                       const gchar* _tmp132_ = NULL;
+                       gchar* _tmp133_ = NULL;
+                       gchar* _tmp134_ = NULL;
+                       gchar* _tmp135_ = NULL;
+                       _tmp132_ = leftv;
+                       _tmp133_ = g_strconcat ("'", _tmp132_, NULL);
+                       _tmp134_ = _tmp133_;
+                       _tmp135_ = g_strconcat (_tmp134_, "'", NULL);
+                       _g_free0 (left);
+                       left = _tmp135_;
+                       _g_free0 (_tmp134_);
+               } else {
+                       const gchar* _tmp136_ = NULL;
+                       gboolean _tmp137_ = FALSE;
+                       _tmp136_ = leftv;
+                       _tmp137_ = g_regex_match_simple ("[^A-Za-z_]+", _tmp136_, 0, 0);
+                       if (_tmp137_) {
+                               gchar* val = NULL;
+                               const gchar* _tmp138_ = NULL;
+                               gchar* _tmp139_ = NULL;
+                               const gchar* _tmp140_ = NULL;
+                               const gchar* _tmp141_ = NULL;
+                               gint _tmp142_ = 0;
+                               gint _tmp143_ = 0;
+                               gchar* _tmp144_ = NULL;
+                               gchar* _tmp145_ = NULL;
+                               gchar* _tmp146_ = NULL;
+                               gchar* _tmp147_ = NULL;
+                               gchar* _tmp148_ = NULL;
+                               gchar* _tmp149_ = NULL;
+                               gchar* _tmp150_ = NULL;
+                               _tmp138_ = leftv;
+                               _tmp139_ = js_render_node_quoteString (self, _tmp138_);
+                               val = _tmp139_;
+                               _tmp140_ = val;
+                               _tmp141_ = val;
+                               _tmp142_ = strlen (_tmp141_);
+                               _tmp143_ = _tmp142_;
+                               _tmp144_ = string_substring (_tmp140_, (glong) 1, (glong) (_tmp143_ - 1));
+                               _tmp145_ = _tmp144_;
+                               _tmp146_ = string_replace (_tmp145_, "'", "\\'");
+                               _tmp147_ = _tmp146_;
+                               _tmp148_ = g_strconcat ("'", _tmp147_, NULL);
+                               _tmp149_ = _tmp148_;
+                               _tmp150_ = g_strconcat (_tmp149_, "'", NULL);
+                               _g_free0 (left);
+                               left = _tmp150_;
+                               _g_free0 (_tmp149_);
+                               _g_free0 (_tmp147_);
+                               _g_free0 (_tmp145_);
+                               _g_free0 (val);
+                       } else {
+                               const gchar* _tmp151_ = NULL;
+                               gchar* _tmp152_ = NULL;
+                               _tmp151_ = leftv;
+                               _tmp152_ = g_strdup (_tmp151_);
+                               _g_free0 (left);
+                               left = _tmp152_;
+                       }
+               }
+               _tmp153_ = left;
+               _tmp154_ = g_strconcat (_tmp153_, " : ", NULL);
+               _g_free0 (left);
+               left = _tmp154_;
+               _tmp155_ = isListener;
+               if (_tmp155_) {
+                       gchar* str = NULL;
+                       gchar** lines = NULL;
+                       const gchar* _tmp165_ = NULL;
+                       gchar** _tmp166_ = NULL;
+                       gchar** _tmp167_ = NULL;
+                       gint lines_length1 = 0;
+                       gint _lines_size_ = 0;
+                       gchar** _tmp168_ = NULL;
+                       gint _tmp168__length1 = 0;
+                       const gchar* _tmp174_ = NULL;
+                       const gchar* _tmp175_ = NULL;
+                       gchar* _tmp176_ = NULL;
+                       {
+                               gchar* _tmp156_ = NULL;
+                               GRegex* _tmp157_ = NULL;
+                               const gchar* _tmp158_ = NULL;
+                               const gchar* _tmp159_ = NULL;
+                               gint _tmp160_ = 0;
+                               gint _tmp161_ = 0;
+                               gchar* _tmp162_ = NULL;
+                               gchar* _tmp163_ = NULL;
+                               _tmp157_ = func_regex;
+                               _tmp158_ = v;
+                               _tmp159_ = v;
+                               _tmp160_ = strlen (_tmp159_);
+                               _tmp161_ = _tmp160_;
+                               _tmp162_ = g_regex_replace (_tmp157_, _tmp158_, (gssize) _tmp161_, 0, "", 0, &_inner_error_);
+                               _tmp156_ = _tmp162_;
+                               if (_inner_error_ != NULL) {
+                                       if (_inner_error_->domain == JS_RENDER_ERROR) {
+                                               goto __catch4_js_render_error;
+                                       }
+                                       goto __finally4;
+                               }
+                               _tmp163_ = _tmp156_;
+                               _tmp156_ = NULL;
+                               _g_free0 (str);
+                               str = _tmp163_;
+                               _g_free0 (_tmp156_);
+                       }
+                       goto __finally4;
+                       __catch4_js_render_error:
+                       {
+                               GError* e = NULL;
+                               gchar* _tmp164_ = NULL;
+                               e = _inner_error_;
+                               _inner_error_ = NULL;
+                               g_print ("regex failed");
+                               _tmp164_ = g_strdup ("");
+                               result = _tmp164_;
+                               _g_error_free0 (e);
+                               _g_free0 (str);
+                               _g_free0 (leftv);
+                               _g_free0 (_tmp113_);
+                               _g_free0 (v);
+                               _g_free0 (k);
+                               _g_object_unref0 (piter);
+                               _g_regex_unref0 (func_regex);
+                               _g_free0 (left);
+                               _g_object_unref0 (oprops);
+                               _g_object_unref0 (skip);
+                               __g_list_free__g_free0_0 (els);
+                               return result;
+                       }
+                       __finally4:
+                       if (_inner_error_ != NULL) {
+                               _g_free0 (str);
+                               _g_free0 (leftv);
+                               _g_free0 (_tmp113_);
+                               _g_free0 (v);
+                               _g_free0 (k);
+                               _g_object_unref0 (piter);
+                               _g_regex_unref0 (func_regex);
+                               _g_free0 (left);
+                               _g_object_unref0 (oprops);
+                               _g_object_unref0 (skip);
+                               __g_list_free__g_free0_0 (els);
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return NULL;
+                       }
+                       _tmp165_ = str;
+                       _tmp167_ = _tmp166_ = g_strsplit (_tmp165_, "\n", 0);
+                       lines = _tmp167_;
+                       lines_length1 = _vala_array_length (_tmp166_);
+                       _lines_size_ = lines_length1;
+                       _tmp168_ = lines;
+                       _tmp168__length1 = lines_length1;
+                       if (_tmp168__length1 > 1) {
+                               const gchar* _tmp169_ = NULL;
+                               gchar* _tmp170_ = NULL;
+                               gchar* _tmp171_ = NULL;
+                               gchar** _tmp172_ = NULL;
+                               gint _tmp172__length1 = 0;
+                               gchar* _tmp173_ = NULL;
+                               _tmp169_ = pad;
+                               _tmp170_ = g_strconcat ("\n", _tmp169_, NULL);
+                               _tmp171_ = _tmp170_;
+                               _tmp172_ = lines;
+                               _tmp172__length1 = lines_length1;
+                               _tmp173_ = g_strjoin (_tmp171_, _tmp172_, NULL);
+                               _g_free0 (str);
+                               str = _tmp173_;
+                               _g_free0 (_tmp171_);
+                       }
+                       _tmp174_ = left;
+                       _tmp175_ = str;
+                       _tmp176_ = g_strconcat (_tmp174_, _tmp175_, NULL);
+                       els = g_list_append (els, _tmp176_);
+                       lines = (_vala_array_free (lines, lines_length1, (GDestroyNotify) g_free), NULL);
+                       _g_free0 (str);
+                       _g_free0 (leftv);
+                       _g_free0 (_tmp113_);
+                       _g_free0 (v);
+                       _g_free0 (k);
+                       continue;
+               }
+               _tmp177_ = k;
+               _tmp178_ = string_get (_tmp177_, (glong) 0);
+               if (_tmp178_ == '|') {
+                       const gchar* _tmp179_ = NULL;
+                       gint _tmp180_ = 0;
+                       gint _tmp181_ = 0;
+                       gchar* str = NULL;
+                       gchar** lines = NULL;
+                       const gchar* _tmp191_ = NULL;
+                       gchar** _tmp192_ = NULL;
+                       gchar** _tmp193_ = NULL;
+                       gint lines_length1 = 0;
+                       gint _lines_size_ = 0;
+                       gchar** _tmp194_ = NULL;
+                       gint _tmp194__length1 = 0;
+                       const gchar* _tmp200_ = NULL;
+                       const gchar* _tmp201_ = NULL;
+                       gchar* _tmp202_ = NULL;
+                       _tmp179_ = v;
+                       _tmp180_ = strlen (_tmp179_);
+                       _tmp181_ = _tmp180_;
+                       if (_tmp181_ < 1) {
+                               _g_free0 (leftv);
+                               _g_free0 (_tmp113_);
+                               _g_free0 (v);
+                               _g_free0 (k);
+                               continue;
+                       }
+                       {
+                               gchar* _tmp182_ = NULL;
+                               GRegex* _tmp183_ = NULL;
+                               const gchar* _tmp184_ = NULL;
+                               const gchar* _tmp185_ = NULL;
+                               gint _tmp186_ = 0;
+                               gint _tmp187_ = 0;
+                               gchar* _tmp188_ = NULL;
+                               gchar* _tmp189_ = NULL;
+                               _tmp183_ = func_regex;
+                               _tmp184_ = v;
+                               _tmp185_ = v;
+                               _tmp186_ = strlen (_tmp185_);
+                               _tmp187_ = _tmp186_;
+                               _tmp188_ = g_regex_replace (_tmp183_, _tmp184_, (gssize) _tmp187_, 0, "", 0, &_inner_error_);
+                               _tmp182_ = _tmp188_;
+                               if (_inner_error_ != NULL) {
+                                       if (_inner_error_->domain == JS_RENDER_ERROR) {
+                                               goto __catch5_js_render_error;
+                                       }
+                                       goto __finally5;
+                               }
+                               _tmp189_ = _tmp182_;
+                               _tmp182_ = NULL;
+                               _g_free0 (str);
+                               str = _tmp189_;
+                               _g_free0 (_tmp182_);
+                       }
+                       goto __finally5;
+                       __catch5_js_render_error:
+                       {
+                               GError* e = NULL;
+                               gchar* _tmp190_ = NULL;
+                               e = _inner_error_;
+                               _inner_error_ = NULL;
+                               g_print ("regex failed");
+                               _tmp190_ = g_strdup ("");
+                               result = _tmp190_;
+                               _g_error_free0 (e);
+                               _g_free0 (str);
+                               _g_free0 (leftv);
+                               _g_free0 (_tmp113_);
+                               _g_free0 (v);
+                               _g_free0 (k);
+                               _g_object_unref0 (piter);
+                               _g_regex_unref0 (func_regex);
+                               _g_free0 (left);
+                               _g_object_unref0 (oprops);
+                               _g_object_unref0 (skip);
+                               __g_list_free__g_free0_0 (els);
+                               return result;
+                       }
+                       __finally5:
+                       if (_inner_error_ != NULL) {
+                               _g_free0 (str);
+                               _g_free0 (leftv);
+                               _g_free0 (_tmp113_);
+                               _g_free0 (v);
+                               _g_free0 (k);
+                               _g_object_unref0 (piter);
+                               _g_regex_unref0 (func_regex);
+                               _g_free0 (left);
+                               _g_object_unref0 (oprops);
+                               _g_object_unref0 (skip);
+                               __g_list_free__g_free0_0 (els);
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return NULL;
+                       }
+                       _tmp191_ = str;
+                       _tmp193_ = _tmp192_ = g_strsplit (_tmp191_, "\n", 0);
+                       lines = _tmp193_;
+                       lines_length1 = _vala_array_length (_tmp192_);
+                       _lines_size_ = lines_length1;
+                       _tmp194_ = lines;
+                       _tmp194__length1 = lines_length1;
+                       if (_tmp194__length1 > 1) {
+                               const gchar* _tmp195_ = NULL;
+                               gchar* _tmp196_ = NULL;
+                               gchar* _tmp197_ = NULL;
+                               gchar** _tmp198_ = NULL;
+                               gint _tmp198__length1 = 0;
+                               gchar* _tmp199_ = NULL;
+                               _tmp195_ = pad;
+                               _tmp196_ = g_strconcat ("\n", _tmp195_, NULL);
+                               _tmp197_ = _tmp196_;
+                               _tmp198_ = lines;
+                               _tmp198__length1 = lines_length1;
+                               _tmp199_ = g_strjoin (_tmp197_, _tmp198_, NULL);
+                               _g_free0 (str);
+                               str = _tmp199_;
+                               _g_free0 (_tmp197_);
+                       }
+                       _tmp200_ = left;
+                       _tmp201_ = str;
+                       _tmp202_ = g_strconcat (_tmp200_, _tmp201_, NULL);
+                       els = g_list_append (els, _tmp202_);
+                       lines = (_vala_array_free (lines, lines_length1, (GDestroyNotify) g_free), NULL);
+                       _g_free0 (str);
+                       _g_free0 (leftv);
+                       _g_free0 (_tmp113_);
+                       _g_free0 (v);
+                       _g_free0 (k);
+                       continue;
+               }
+               _tmp204_ = js_render_Lang;
+               _tmp205_ = v;
+               _tmp206_ = js_render_langclass_isNumber (_tmp204_, _tmp205_);
+               if (_tmp206_) {
+                       _tmp203_ = TRUE;
+               } else {
+                       JsRenderLang_Class* _tmp207_ = NULL;
+                       const gchar* _tmp208_ = NULL;
+                       gboolean _tmp209_ = FALSE;
+                       _tmp207_ = js_render_Lang;
+                       _tmp208_ = v;
+                       _tmp209_ = js_render_langclass_isBoolean (_tmp207_, _tmp208_);
+                       _tmp203_ = _tmp209_;
+               }
+               if (_tmp203_) {
+                       const gchar* _tmp210_ = NULL;
+                       const gchar* _tmp211_ = NULL;
+                       gchar* _tmp212_ = NULL;
+                       _tmp210_ = left;
+                       _tmp211_ = v;
+                       _tmp212_ = g_strconcat (_tmp210_, _tmp211_, NULL);
+                       els = g_list_append (els, _tmp212_);
+                       _g_free0 (leftv);
+                       _g_free0 (_tmp113_);
+                       _g_free0 (v);
+                       _g_free0 (k);
+                       continue;
+               }
+               _tmp213_ = doubleStringProps;
+               _tmp214_ = g_list_length (_tmp213_);
+               if (_tmp214_ < ((guint) 1)) {
+                       const gchar* _tmp215_ = NULL;
+                       const gchar* _tmp216_ = NULL;
+                       gchar* _tmp217_ = NULL;
+                       gchar* _tmp218_ = NULL;
+                       gchar* _tmp219_ = NULL;
+                       _tmp215_ = left;
+                       _tmp216_ = v;
+                       _tmp217_ = js_render_node_quoteString (self, _tmp216_);
+                       _tmp218_ = _tmp217_;
+                       _tmp219_ = g_strconcat (_tmp215_, _tmp218_, NULL);
+                       els = g_list_append (els, _tmp219_);
+                       _g_free0 (_tmp218_);
+                       _g_free0 (leftv);
+                       _g_free0 (_tmp113_);
+                       _g_free0 (v);
+                       _g_free0 (k);
+                       continue;
+               }
+               _tmp220_ = doubleStringProps;
+               _tmp221_ = k;
+               _tmp222_ = g_list_index (_tmp220_, _tmp221_);
+               if (_tmp222_ > (-1)) {
+                       const gchar* _tmp223_ = NULL;
+                       const gchar* _tmp224_ = NULL;
+                       gchar* _tmp225_ = NULL;
+                       gchar* _tmp226_ = NULL;
+                       gchar* _tmp227_ = NULL;
+                       _tmp223_ = left;
+                       _tmp224_ = v;
+                       _tmp225_ = js_render_node_quoteString (self, _tmp224_);
+                       _tmp226_ = _tmp225_;
+                       _tmp227_ = g_strconcat (_tmp223_, _tmp226_, NULL);
+                       els = g_list_append (els, _tmp227_);
+                       _g_free0 (_tmp226_);
+                       _g_free0 (leftv);
+                       _g_free0 (_tmp113_);
+                       _g_free0 (v);
+                       _g_free0 (k);
+                       continue;
+               }
+               _tmp228_ = left;
+               _tmp229_ = g_strconcat (_tmp228_, "'", NULL);
+               _tmp230_ = _tmp229_;
+               _tmp231_ = v;
+               _tmp232_ = v;
+               _tmp233_ = strlen (_tmp232_);
+               _tmp234_ = _tmp233_;
+               _tmp235_ = string_substring (_tmp231_, (glong) 1, (glong) (_tmp234_ - 1));
+               _tmp236_ = _tmp235_;
+               _tmp237_ = string_replace (_tmp236_, "'", "\\'");
+               _tmp238_ = _tmp237_;
+               _tmp239_ = g_strconcat (_tmp230_, _tmp238_, NULL);
+               _tmp240_ = _tmp239_;
+               _tmp241_ = g_strconcat (_tmp240_, "'", NULL);
+               els = g_list_append (els, _tmp241_);
+               _g_free0 (_tmp240_);
+               _g_free0 (_tmp238_);
+               _g_free0 (_tmp236_);
+               _g_free0 (_tmp230_);
+               _g_free0 (leftv);
+               _g_free0 (_tmp113_);
+               _g_free0 (v);
+               _g_free0 (k);
+       }
+       _tmp242_ = oprops;
+       _tmp243_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp242_);
+       iter = _tmp243_;
+       while (TRUE) {
+               GeeMapIterator* _tmp244_ = NULL;
+               gboolean _tmp245_ = FALSE;
+               gchar* k = NULL;
+               GeeMapIterator* _tmp246_ = NULL;
+               gpointer _tmp247_ = NULL;
+               JsRenderNode* vo = NULL;
+               GeeMapIterator* _tmp248_ = NULL;
+               gpointer _tmp249_ = NULL;
+               gchar* _tmp250_ = NULL;
+               const gchar* _tmp251_ = NULL;
+               gchar _tmp252_ = '\0';
+               gchar* leftv = NULL;
+               gchar* _tmp257_ = NULL;
+               gboolean _tmp258_ = FALSE;
+               JsRenderLang_Class* _tmp259_ = NULL;
+               const gchar* _tmp260_ = NULL;
+               gboolean _tmp261_ = FALSE;
+               const gchar* _tmp286_ = NULL;
+               gchar* _tmp287_ = NULL;
+               gchar* right = NULL;
+               JsRenderNode* _tmp288_ = NULL;
+               const gchar* _tmp289_ = NULL;
+               const gchar* _tmp290_ = NULL;
+               gchar* _tmp291_ = NULL;
+               gchar* _tmp292_ = NULL;
+               GList* _tmp293_ = NULL;
+               gchar* _tmp294_ = NULL;
+               gchar* _tmp295_ = NULL;
+               const gchar* _tmp296_ = NULL;
+               gint _tmp297_ = 0;
+               gint _tmp298_ = 0;
+               _tmp244_ = iter;
+               _tmp245_ = gee_map_iterator_next (_tmp244_);
+               if (!_tmp245_) {
+                       break;
+               }
+               _tmp246_ = iter;
+               _tmp247_ = gee_map_iterator_get_key (_tmp246_);
+               k = (gchar*) _tmp247_;
+               _tmp248_ = iter;
+               _tmp249_ = gee_map_iterator_get_value (_tmp248_);
+               vo = (JsRenderNode*) _tmp249_;
+               _tmp251_ = k;
+               _tmp252_ = string_get (_tmp251_, (glong) 0);
+               if (_tmp252_ == '|') {
+                       const gchar* _tmp253_ = NULL;
+                       gchar* _tmp254_ = NULL;
+                       _tmp253_ = k;
+                       _tmp254_ = string_substring (_tmp253_, (glong) 1, (glong) (-1));
+                       _g_free0 (_tmp250_);
+                       _tmp250_ = _tmp254_;
+               } else {
+                       const gchar* _tmp255_ = NULL;
+                       gchar* _tmp256_ = NULL;
+                       _tmp255_ = k;
+                       _tmp256_ = g_strdup (_tmp255_);
+                       _g_free0 (_tmp250_);
+                       _tmp250_ = _tmp256_;
+               }
+               _tmp257_ = g_strdup (_tmp250_);
+               leftv = _tmp257_;
+               _tmp259_ = js_render_Lang;
+               _tmp260_ = leftv;
+               _tmp261_ = js_render_langclass_isKeyword (_tmp259_, _tmp260_);
+               if (_tmp261_) {
+                       _tmp258_ = TRUE;
+               } else {
+                       JsRenderLang_Class* _tmp262_ = NULL;
+                       const gchar* _tmp263_ = NULL;
+                       gboolean _tmp264_ = FALSE;
+                       _tmp262_ = js_render_Lang;
+                       _tmp263_ = leftv;
+                       _tmp264_ = js_render_langclass_isBuiltin (_tmp262_, _tmp263_);
+                       _tmp258_ = _tmp264_;
+               }
+               if (_tmp258_) {
+                       const gchar* _tmp265_ = NULL;
+                       gchar* _tmp266_ = NULL;
+                       gchar* _tmp267_ = NULL;
+                       gchar* _tmp268_ = NULL;
+                       _tmp265_ = leftv;
+                       _tmp266_ = g_strconcat ("'", _tmp265_, NULL);
+                       _tmp267_ = _tmp266_;
+                       _tmp268_ = g_strconcat (_tmp267_, "'", NULL);
+                       _g_free0 (left);
+                       left = _tmp268_;
+                       _g_free0 (_tmp267_);
+               } else {
+                       const gchar* _tmp269_ = NULL;
+                       gboolean _tmp270_ = FALSE;
+                       _tmp269_ = leftv;
+                       _tmp270_ = g_regex_match_simple ("[^A-Za-z_]+", _tmp269_, 0, 0);
+                       if (_tmp270_) {
+                               gchar* val = NULL;
+                               const gchar* _tmp271_ = NULL;
+                               gchar* _tmp272_ = NULL;
+                               const gchar* _tmp273_ = NULL;
+                               const gchar* _tmp274_ = NULL;
+                               gint _tmp275_ = 0;
+                               gint _tmp276_ = 0;
+                               gchar* _tmp277_ = NULL;
+                               gchar* _tmp278_ = NULL;
+                               gchar* _tmp279_ = NULL;
+                               gchar* _tmp280_ = NULL;
+                               gchar* _tmp281_ = NULL;
+                               gchar* _tmp282_ = NULL;
+                               gchar* _tmp283_ = NULL;
+                               _tmp271_ = leftv;
+                               _tmp272_ = js_render_node_quoteString (self, _tmp271_);
+                               val = _tmp272_;
+                               _tmp273_ = val;
+                               _tmp274_ = val;
+                               _tmp275_ = strlen (_tmp274_);
+                               _tmp276_ = _tmp275_;
+                               _tmp277_ = string_substring (_tmp273_, (glong) 1, (glong) (_tmp276_ - 1));
+                               _tmp278_ = _tmp277_;
+                               _tmp279_ = string_replace (_tmp278_, "'", "\\'");
+                               _tmp280_ = _tmp279_;
+                               _tmp281_ = g_strconcat ("'", _tmp280_, NULL);
+                               _tmp282_ = _tmp281_;
+                               _tmp283_ = g_strconcat (_tmp282_, "'", NULL);
+                               _g_free0 (left);
+                               left = _tmp283_;
+                               _g_free0 (_tmp282_);
+                               _g_free0 (_tmp280_);
+                               _g_free0 (_tmp278_);
+                               _g_free0 (val);
+                       } else {
+                               const gchar* _tmp284_ = NULL;
+                               gchar* _tmp285_ = NULL;
+                               _tmp284_ = leftv;
+                               _tmp285_ = g_strdup (_tmp284_);
+                               _g_free0 (left);
+                               left = _tmp285_;
+                       }
+               }
+               _tmp286_ = left;
+               _tmp287_ = g_strconcat (_tmp286_, " : ", NULL);
+               _g_free0 (left);
+               left = _tmp287_;
+               _tmp288_ = vo;
+               _tmp289_ = k;
+               _tmp290_ = pad;
+               _tmp291_ = g_strconcat (_tmp290_, "    ", NULL);
+               _tmp292_ = _tmp291_;
+               _tmp293_ = doubleStringProps;
+               _tmp294_ = js_render_node_mungeToString (_tmp288_, g_strcmp0 (_tmp289_, "listeners") == 0, _tmp292_, _tmp293_);
+               _tmp295_ = _tmp294_;
+               _g_free0 (_tmp292_);
+               right = _tmp295_;
+               _tmp296_ = right;
+               _tmp297_ = strlen (_tmp296_);
+               _tmp298_ = _tmp297_;
+               if (_tmp298_ > 0) {
+                       const gchar* _tmp299_ = NULL;
+                       const gchar* _tmp300_ = NULL;
+                       gchar* _tmp301_ = NULL;
+                       _tmp299_ = left;
+                       _tmp300_ = right;
+                       _tmp301_ = g_strconcat (_tmp299_, _tmp300_, NULL);
+                       els = g_list_append (els, _tmp301_);
+               }
+               _g_free0 (right);
+               _g_free0 (leftv);
+               _g_free0 (_tmp250_);
+               _js_render_node_unref0 (vo);
+               _g_free0 (k);
+       }
+       _tmp302_ = els;
+       _tmp303_ = g_list_length (_tmp302_);
+       if (_tmp303_ < ((guint) 1)) {
+               gchar* _tmp304_ = NULL;
+               _tmp304_ = g_strdup ("");
+               result = _tmp304_;
+               _g_object_unref0 (iter);
+               _g_object_unref0 (piter);
+               _g_regex_unref0 (func_regex);
+               _g_free0 (left);
+               _g_object_unref0 (oprops);
+               _g_object_unref0 (skip);
+               __g_list_free__g_free0_0 (els);
+               return result;
+       }
+       _tmp305_ = pad;
+       _tmp306_ = pad;
+       _tmp307_ = strlen (_tmp306_);
+       _tmp308_ = _tmp307_;
+       _tmp309_ = string_substring (_tmp305_, (glong) 0, (glong) (_tmp308_ - 4));
+       spad = _tmp309_;
+       _tmp310_ = pad;
+       _tmp311_ = g_strconcat ("{\n", _tmp310_, NULL);
+       _tmp312_ = _tmp311_;
+       _tmp313_ = pad;
+       _tmp314_ = g_strconcat (",\n", _tmp313_, NULL);
+       _tmp315_ = _tmp314_;
+       _tmp316_ = els;
+       _tmp317_ = g_strjoin (_tmp315_, _tmp316_, NULL);
+       _tmp318_ = _tmp317_;
+       _tmp319_ = g_strconcat (_tmp312_, _tmp318_, NULL);
+       _tmp320_ = _tmp319_;
+       _tmp321_ = g_strconcat (_tmp320_, "\n", NULL);
+       _tmp322_ = _tmp321_;
+       _tmp323_ = spad;
+       _tmp324_ = g_strconcat (_tmp322_, _tmp323_, NULL);
+       _tmp325_ = _tmp324_;
+       _tmp326_ = g_strconcat (_tmp325_, "}", NULL);
+       _tmp327_ = _tmp326_;
+       _g_free0 (_tmp325_);
+       _g_free0 (_tmp322_);
+       _g_free0 (_tmp320_);
+       _g_free0 (_tmp318_);
+       _g_free0 (_tmp315_);
+       _g_free0 (_tmp312_);
+       result = _tmp327_;
+       _g_free0 (spad);
+       _g_object_unref0 (iter);
+       _g_object_unref0 (piter);
+       _g_regex_unref0 (func_regex);
+       _g_free0 (left);
+       _g_object_unref0 (oprops);
+       _g_object_unref0 (skip);
+       __g_list_free__g_free0_0 (els);
+       return result;
+}
+
+
+static void _vala_JsonNode_free (JsonNode* self) {
+       g_boxed_free (json_node_get_type (), self);
+}
+
+
+gchar* js_render_node_quoteString (JsRenderNode* self, const gchar* str) {
+       gchar* result = NULL;
+       JsonGenerator* _tmp0_ = NULL;
+       JsonBuilder* builder = NULL;
+       JsonBuilder* _tmp2_ = NULL;
+       const gchar* _tmp3_ = NULL;
+       JsonGenerator* _tmp4_ = NULL;
+       JsonNode* _tmp5_ = NULL;
+       JsonNode* _tmp6_ = NULL;
+       JsonGenerator* _tmp7_ = NULL;
+       gchar* _tmp8_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (str != NULL, NULL);
+       _tmp0_ = js_render_node_gen;
+       if (_tmp0_ == NULL) {
+               JsonGenerator* _tmp1_ = NULL;
+               _tmp1_ = json_generator_new ();
+               _g_object_unref0 (js_render_node_gen);
+               js_render_node_gen = _tmp1_;
+       }
+       _tmp2_ = json_builder_new ();
+       builder = _tmp2_;
+       _tmp3_ = str;
+       json_builder_add_string_value (builder, _tmp3_);
+       _tmp4_ = js_render_node_gen;
+       _tmp5_ = json_builder_get_root (builder);
+       _tmp6_ = _tmp5_;
+       json_generator_set_root (_tmp4_, _tmp6_);
+       __vala_JsonNode_free0 (_tmp6_);
+       _tmp7_ = js_render_node_gen;
+       _tmp8_ = json_generator_to_data (_tmp7_, NULL);
+       result = _tmp8_;
+       _g_object_unref0 (builder);
+       return result;
+}
+
+
+static gpointer _json_object_ref0 (gpointer self) {
+       return self ? json_object_ref (self) : NULL;
+}
+
+
+static Block1Data* block1_data_ref (Block1Data* _data1_) {
+       g_atomic_int_inc (&_data1_->_ref_count_);
+       return _data1_;
+}
+
+
+static void block1_data_unref (void * _userdata_) {
+       Block1Data* _data1_;
+       _data1_ = (Block1Data*) _userdata_;
+       if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
+               JsRenderNode* self;
+               self = _data1_->self;
+               _json_object_unref0 (_data1_->obj);
+               _js_render_node_unref0 (self);
+               g_slice_free (Block1Data, _data1_);
+       }
+}
+
+
+static gpointer _json_array_ref0 (gpointer self) {
+       return self ? json_array_ref (self) : NULL;
+}
+
+
+static void ___lambda4_ (JsRenderNode* self, JsonArray* are, guint ix, JsonNode* el) {
+       JsRenderNode* node = NULL;
+       JsRenderNode* _tmp0_ = NULL;
+       JsonNode* _tmp1_ = NULL;
+       JsonObject* _tmp2_ = NULL;
+       JsRenderNode* _tmp3_ = NULL;
+       g_return_if_fail (are != NULL);
+       g_return_if_fail (el != NULL);
+       _tmp0_ = js_render_node_new ();
+       node = _tmp0_;
+       _tmp1_ = el;
+       _tmp2_ = json_node_get_object (_tmp1_);
+       js_render_node_loadFromJson (node, _tmp2_);
+       _tmp3_ = _js_render_node_ref0 (node);
+       self->priv->items = g_list_append (self->priv->items, _tmp3_);
+       _js_render_node_unref0 (node);
+}
+
+
+static void ____lambda4__json_array_foreach (JsonArray* array, guint index_, JsonNode* element_node, gpointer self) {
+       ___lambda4_ ((JsRenderNode*) self, array, index_, element_node);
+}
+
+
+static void ___lambda5_ (JsRenderNode* self, JsonObject* lio, const gchar* li_key, JsonNode* li_value) {
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       JsonNode* _tmp2_ = NULL;
+       const gchar* _tmp3_ = NULL;
+       g_return_if_fail (lio != NULL);
+       g_return_if_fail (li_key != NULL);
+       g_return_if_fail (li_value != NULL);
+       _tmp0_ = self->priv->listeners;
+       _tmp1_ = li_key;
+       _tmp2_ = li_value;
+       _tmp3_ = json_node_get_string (_tmp2_);
+       gee_abstract_map_set ((GeeAbstractMap*) _tmp0_, _tmp1_, _tmp3_);
+}
+
+
+static void ____lambda5__json_object_foreach (JsonObject* object, const gchar* member_name, JsonNode* member_node, gpointer self) {
+       ___lambda5_ ((JsRenderNode*) self, object, member_name, member_node);
+}
+
+
+static void __lambda3_ (Block1Data* _data1_, JsonObject* o, const gchar* key, JsonNode* value) {
+       JsRenderNode* self;
+       const gchar* _tmp0_ = NULL;
+       const gchar* _tmp5_ = NULL;
+       GeeHashMap* _tmp10_ = NULL;
+       const gchar* _tmp11_ = NULL;
+       JsonNode* _tmp12_ = NULL;
+       const gchar* _tmp13_ = NULL;
+       self = _data1_->self;
+       g_return_if_fail (o != NULL);
+       g_return_if_fail (key != NULL);
+       g_return_if_fail (value != NULL);
+       _tmp0_ = key;
+       if (g_strcmp0 (_tmp0_, "items") == 0) {
+               JsonArray* ar = NULL;
+               JsonNode* _tmp1_ = NULL;
+               JsonArray* _tmp2_ = NULL;
+               JsonArray* _tmp3_ = NULL;
+               JsonArray* _tmp4_ = NULL;
+               _tmp1_ = value;
+               _tmp2_ = json_node_get_array (_tmp1_);
+               _tmp3_ = _json_array_ref0 (_tmp2_);
+               ar = _tmp3_;
+               _tmp4_ = ar;
+               json_array_foreach_element (_tmp4_, ____lambda4__json_array_foreach, self);
+               _json_array_unref0 (ar);
+               return;
+       }
+       _tmp5_ = key;
+       if (g_strcmp0 (_tmp5_, "listeners") == 0) {
+               JsonObject* li = NULL;
+               JsonNode* _tmp6_ = NULL;
+               JsonObject* _tmp7_ = NULL;
+               JsonObject* _tmp8_ = NULL;
+               JsonObject* _tmp9_ = NULL;
+               _tmp6_ = value;
+               _tmp7_ = json_node_get_object (_tmp6_);
+               _tmp8_ = _json_object_ref0 (_tmp7_);
+               li = _tmp8_;
+               _tmp9_ = _data1_->obj;
+               json_object_foreach_member (_tmp9_, ____lambda5__json_object_foreach, self);
+               _json_object_unref0 (li);
+               return;
+       }
+       _tmp10_ = self->priv->props;
+       _tmp11_ = key;
+       _tmp12_ = value;
+       _tmp13_ = json_node_get_string (_tmp12_);
+       gee_abstract_map_set ((GeeAbstractMap*) _tmp10_, _tmp11_, _tmp13_);
+}
+
+
+static void ___lambda3__json_object_foreach (JsonObject* object, const gchar* member_name, JsonNode* member_node, gpointer self) {
+       __lambda3_ (self, object, member_name, member_node);
+}
+
+
+void js_render_node_loadFromJson (JsRenderNode* self, JsonObject* obj) {
+       Block1Data* _data1_;
+       JsonObject* _tmp0_ = NULL;
+       JsonObject* _tmp1_ = NULL;
+       JsonObject* _tmp2_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (obj != NULL);
+       _data1_ = g_slice_new0 (Block1Data);
+       _data1_->_ref_count_ = 1;
+       _data1_->self = js_render_node_ref (self);
+       _tmp0_ = obj;
+       _tmp1_ = _json_object_ref0 (_tmp0_);
+       _json_object_unref0 (_data1_->obj);
+       _data1_->obj = _tmp1_;
+       _tmp2_ = _data1_->obj;
+       json_object_foreach_member (_tmp2_, ___lambda3__json_object_foreach, _data1_);
+       block1_data_unref (_data1_);
+       _data1_ = NULL;
+}
+
+
+static void js_render_value_node_init (GValue* value) {
+       value->data[0].v_pointer = NULL;
+}
+
+
+static void js_render_value_node_free_value (GValue* value) {
+       if (value->data[0].v_pointer) {
+               js_render_node_unref (value->data[0].v_pointer);
+       }
+}
+
+
+static void js_render_value_node_copy_value (const GValue* src_value, GValue* dest_value) {
+       if (src_value->data[0].v_pointer) {
+               dest_value->data[0].v_pointer = js_render_node_ref (src_value->data[0].v_pointer);
+       } else {
+               dest_value->data[0].v_pointer = NULL;
+       }
+}
+
+
+static gpointer js_render_value_node_peek_pointer (const GValue* value) {
+       return value->data[0].v_pointer;
+}
+
+
+static gchar* js_render_value_node_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+       if (collect_values[0].v_pointer) {
+               JsRenderNode* object;
+               object = collect_values[0].v_pointer;
+               if (object->parent_instance.g_class == NULL) {
+                       return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+               } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
+                       return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+               }
+               value->data[0].v_pointer = js_render_node_ref (object);
+       } else {
+               value->data[0].v_pointer = NULL;
+       }
+       return NULL;
+}
+
+
+static gchar* js_render_value_node_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+       JsRenderNode** object_p;
+       object_p = collect_values[0].v_pointer;
+       if (!object_p) {
+               return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
+       }
+       if (!value->data[0].v_pointer) {
+               *object_p = NULL;
+       } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
+               *object_p = value->data[0].v_pointer;
+       } else {
+               *object_p = js_render_node_ref (value->data[0].v_pointer);
+       }
+       return NULL;
+}
+
+
+GParamSpec* js_render_param_spec_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
+       JsRenderParamSpecNode* spec;
+       g_return_val_if_fail (g_type_is_a (object_type, JS_RENDER_TYPE_NODE), NULL);
+       spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
+       G_PARAM_SPEC (spec)->value_type = object_type;
+       return G_PARAM_SPEC (spec);
+}
+
+
+gpointer js_render_value_get_node (const GValue* value) {
+       g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, JS_RENDER_TYPE_NODE), NULL);
+       return value->data[0].v_pointer;
+}
+
+
+void js_render_value_set_node (GValue* value, gpointer v_object) {
+       JsRenderNode* old;
+       g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, JS_RENDER_TYPE_NODE));
+       old = value->data[0].v_pointer;
+       if (v_object) {
+               g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, JS_RENDER_TYPE_NODE));
+               g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+               value->data[0].v_pointer = v_object;
+               js_render_node_ref (value->data[0].v_pointer);
+       } else {
+               value->data[0].v_pointer = NULL;
+       }
+       if (old) {
+               js_render_node_unref (old);
+       }
+}
+
+
+void js_render_value_take_node (GValue* value, gpointer v_object) {
+       JsRenderNode* old;
+       g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, JS_RENDER_TYPE_NODE));
+       old = value->data[0].v_pointer;
+       if (v_object) {
+               g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, JS_RENDER_TYPE_NODE));
+               g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+               value->data[0].v_pointer = v_object;
+       } else {
+               value->data[0].v_pointer = NULL;
+       }
+       if (old) {
+               js_render_node_unref (old);
+       }
+}
+
+
+static void js_render_node_class_init (JsRenderNodeClass * klass) {
+       js_render_node_parent_class = g_type_class_peek_parent (klass);
+       JS_RENDER_NODE_CLASS (klass)->finalize = js_render_node_finalize;
+       g_type_class_add_private (klass, sizeof (JsRenderNodePrivate));
+}
+
+
+static void js_render_node_instance_init (JsRenderNode * self) {
+       self->priv = JS_RENDER_NODE_GET_PRIVATE (self);
+       self->ref_count = 1;
+}
+
+
+static void js_render_node_finalize (JsRenderNode* obj) {
+       JsRenderNode * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, JS_RENDER_TYPE_NODE, JsRenderNode);
+       __g_list_free__js_render_node_unref0_0 (self->priv->items);
+       _g_object_unref0 (self->priv->props);
+       _g_object_unref0 (self->priv->listeners);
+}
+
+
+GType js_render_node_get_type (void) {
+       static volatile gsize js_render_node_type_id__volatile = 0;
+       if (g_once_init_enter (&js_render_node_type_id__volatile)) {
+               static const GTypeValueTable g_define_type_value_table = { js_render_value_node_init, js_render_value_node_free_value, js_render_value_node_copy_value, js_render_value_node_peek_pointer, "p", js_render_value_node_collect_value, "p", js_render_value_node_lcopy_value };
+               static const GTypeInfo g_define_type_info = { sizeof (JsRenderNodeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) js_render_node_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (JsRenderNode), 0, (GInstanceInitFunc) js_render_node_instance_init, &g_define_type_value_table };
+               static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
+               GType js_render_node_type_id;
+               js_render_node_type_id = g_type_register_fundamental (g_type_fundamental_next (), "JsRenderNode", &g_define_type_info, &g_define_type_fundamental_info, 0);
+               g_once_init_leave (&js_render_node_type_id__volatile, js_render_node_type_id);
+       }
+       return js_render_node_type_id__volatile;
+}
+
+
+gpointer js_render_node_ref (gpointer instance) {
+       JsRenderNode* self;
+       self = instance;
+       g_atomic_int_inc (&self->ref_count);
+       return instance;
+}
+
+
+void js_render_node_unref (gpointer instance) {
+       JsRenderNode* self;
+       self = instance;
+       if (g_atomic_int_dec_and_test (&self->ref_count)) {
+               JS_RENDER_NODE_GET_CLASS (self)->finalize (self);
+               g_type_free_instance ((GTypeInstance *) self);
+       }
+}
+
+
+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);
+}
+
+
+static gint _vala_array_length (gpointer array) {
+       int length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
+
+
diff --git a/JsRender/Roo.vala.c b/JsRender/Roo.vala.c
new file mode 100644 (file)
index 0000000..6f48bcc
--- /dev/null
@@ -0,0 +1,1951 @@
+/* Roo.vala.c generated by valac 0.24.0, the Vala compiler
+ * generated from Roo.vala, do not modify */
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <json-glib/json-glib.h>
+#include <glib/gstdio.h>
+
+
+#define JS_RENDER_TYPE_JS_RENDER (js_render_js_render_get_type ())
+#define JS_RENDER_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRender))
+#define JS_RENDER_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+#define JS_RENDER_IS_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_IS_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_JS_RENDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+
+typedef struct _JsRenderJsRender JsRenderJsRender;
+typedef struct _JsRenderJsRenderClass JsRenderJsRenderClass;
+typedef struct _JsRenderJsRenderPrivate JsRenderJsRenderPrivate;
+
+#define PROJECT_TYPE_PROJECT (project_project_get_type ())
+#define PROJECT_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROJECT_TYPE_PROJECT, ProjectProject))
+#define PROJECT_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+#define PROJECT_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROJECT_TYPE_PROJECT))
+#define PROJECT_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROJECT_TYPE_PROJECT))
+#define PROJECT_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+
+typedef struct _ProjectProject ProjectProject;
+typedef struct _ProjectProjectClass ProjectProjectClass;
+
+#define JS_RENDER_TYPE_NODE (js_render_node_get_type ())
+#define JS_RENDER_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_NODE, JsRenderNode))
+#define JS_RENDER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_NODE, JsRenderNodeClass))
+#define JS_RENDER_IS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_NODE))
+#define JS_RENDER_IS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_NODE))
+#define JS_RENDER_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_NODE, JsRenderNodeClass))
+
+typedef struct _JsRenderNode JsRenderNode;
+typedef struct _JsRenderNodeClass JsRenderNodeClass;
+
+#define JS_RENDER_TYPE_ROO (js_render_roo_get_type ())
+#define JS_RENDER_ROO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_ROO, JsRenderRoo))
+#define JS_RENDER_ROO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_ROO, JsRenderRooClass))
+#define JS_RENDER_IS_ROO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_ROO))
+#define JS_RENDER_IS_ROO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_ROO))
+#define JS_RENDER_ROO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_ROO, JsRenderRooClass))
+
+typedef struct _JsRenderRoo JsRenderRoo;
+typedef struct _JsRenderRooClass JsRenderRooClass;
+typedef struct _JsRenderRooPrivate JsRenderRooPrivate;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define __vala_JsonNode_free0(var) ((var == NULL) ? NULL : (var = (_vala_JsonNode_free (var), NULL)))
+#define _js_render_node_unref0(var) ((var == NULL) ? NULL : (var = (js_render_node_unref (var), NULL)))
+#define _json_object_unref0(var) ((var == NULL) ? NULL : (var = (json_object_unref (var), NULL)))
+#define _json_array_unref0(var) ((var == NULL) ? NULL : (var = (json_array_unref (var), NULL)))
+#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+
+struct _JsRenderJsRender {
+       GObject parent_instance;
+       JsRenderJsRenderPrivate * priv;
+       GList* doubleStringProps;
+       gchar* id;
+       gchar* name;
+       gchar* fullname;
+       gchar* path;
+       gchar* parent;
+       gchar* title;
+       gchar* permname;
+       gchar* modOrder;
+       gchar* xtype;
+       ProjectProject* project;
+       JsRenderNode* tree;
+       GList* cn;
+       gboolean hasParent;
+};
+
+struct _JsRenderJsRenderClass {
+       GObjectClass parent_class;
+};
+
+struct _JsRenderRoo {
+       JsRenderJsRender parent_instance;
+       JsRenderRooPrivate * priv;
+};
+
+struct _JsRenderRooClass {
+       JsRenderJsRenderClass parent_class;
+};
+
+struct _JsRenderRooPrivate {
+       gchar* region;
+       gboolean disabled;
+};
+
+typedef enum  {
+       JS_RENDER_ERROR_INVALID_FORMAT
+} JsRenderError;
+#define JS_RENDER_ERROR js_render_error_quark ()
+
+extern gint js_render_rid;
+gint js_render_rid = 0;
+static gpointer js_render_roo_parent_class = NULL;
+
+GType js_render_js_render_get_type (void) G_GNUC_CONST;
+gpointer project_project_ref (gpointer instance);
+void project_project_unref (gpointer instance);
+GParamSpec* project_param_spec_project (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void project_value_set_project (GValue* value, gpointer v_object);
+void project_value_take_project (GValue* value, gpointer v_object);
+gpointer project_value_get_project (const GValue* value);
+GType project_project_get_type (void) G_GNUC_CONST;
+gpointer js_render_node_ref (gpointer instance);
+void js_render_node_unref (gpointer instance);
+GParamSpec* js_render_param_spec_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void js_render_value_set_node (GValue* value, gpointer v_object);
+void js_render_value_take_node (GValue* value, gpointer v_object);
+gpointer js_render_value_get_node (const GValue* value);
+GType js_render_node_get_type (void) G_GNUC_CONST;
+GType js_render_roo_get_type (void) G_GNUC_CONST;
+#define JS_RENDER_ROO_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), JS_RENDER_TYPE_ROO, JsRenderRooPrivate))
+enum  {
+       JS_RENDER_ROO_DUMMY_PROPERTY
+};
+JsRenderRoo* js_render_roo_new (ProjectProject* project, const gchar* path);
+JsRenderRoo* js_render_roo_construct (GType object_type, ProjectProject* project, const gchar* path);
+JsRenderJsRender* js_render_js_render_new (ProjectProject* project, const gchar* path);
+JsRenderJsRender* js_render_js_render_construct (GType object_type, ProjectProject* project, const gchar* path);
+GQuark js_render_error_quark (void);
+void js_render_roo_loadItems (JsRenderRoo* self, GError** error);
+static JsonNode* _vala_JsonNode_copy (JsonNode* self);
+static void _vala_JsonNode_free (JsonNode* self);
+JsRenderNode* js_render_node_new (void);
+JsRenderNode* js_render_node_construct (GType object_type);
+void js_render_node_loadFromJson (JsRenderNode* self, JsonObject* obj);
+void js_render_roo_save (JsRenderRoo* self);
+void js_render_js_render_save (JsRenderJsRender* self);
+gchar* js_render_roo_toSource (JsRenderRoo* self);
+static gchar* js_render_roo_toSourcePreview (JsRenderRoo* self);
+gchar* js_render_roo_guessName (JsRenderRoo* self, JsRenderNode* ar);
+gchar* js_render_roo_toSourceDialog (JsRenderRoo* self, gboolean isPreview);
+gchar* js_render_roo_toSourceModal (JsRenderRoo* self, gboolean isPreview);
+gchar* js_render_roo_toSourceLayout (JsRenderRoo* self, gboolean isPreview);
+gchar* js_render_roo_outputHeader (JsRenderRoo* self);
+gchar* js_render_js_render_mungeToString (JsRenderJsRender* self, const gchar* pad);
+gchar* js_render_roo_pathToPart (JsRenderRoo* self);
+gchar* js_render_node_quoteString (JsRenderNode* self, const gchar* str);
+gchar* js_render_node_get (JsRenderNode* self, const gchar* key);
+static void _vala_array_add1 (gchar*** array, int* length, int* size, gchar* value);
+static void _vala_array_add2 (gchar*** array, int* length, int* size, gchar* value);
+static gchar* js_render_roo_getHelpUrl (JsRenderRoo* self, const gchar* cls);
+static void js_render_roo_finalize (GObject* obj);
+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);
+static gint _vala_array_length (gpointer array);
+
+
+JsRenderRoo* js_render_roo_construct (GType object_type, ProjectProject* project, const gchar* path) {
+       JsRenderRoo * self = NULL;
+       ProjectProject* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gint _tmp5_ = 0;
+       gchar* _tmp6_ = NULL;
+       gchar** dsp = NULL;
+       gchar* _tmp7_ = NULL;
+       gchar* _tmp8_ = NULL;
+       gchar* _tmp9_ = NULL;
+       gchar* _tmp10_ = NULL;
+       gchar* _tmp11_ = NULL;
+       gchar* _tmp12_ = NULL;
+       gchar* _tmp13_ = NULL;
+       gchar* _tmp14_ = NULL;
+       gchar* _tmp15_ = NULL;
+       gchar** _tmp16_ = NULL;
+       gint dsp_length1 = 0;
+       gint _dsp_size_ = 0;
+       g_return_val_if_fail (project != NULL, NULL);
+       g_return_val_if_fail (path != NULL, NULL);
+       _tmp0_ = project;
+       _tmp1_ = path;
+       self = (JsRenderRoo*) js_render_js_render_construct (object_type, _tmp0_, _tmp1_);
+       _tmp2_ = g_strdup ("Roo");
+       _g_free0 (((JsRenderJsRender*) self)->xtype);
+       ((JsRenderJsRender*) self)->xtype = _tmp2_;
+       _tmp3_ = g_strdup ("001");
+       _g_free0 (((JsRenderJsRender*) self)->modOrder);
+       ((JsRenderJsRender*) self)->modOrder = _tmp3_;
+       _tmp4_ = g_strdup ("center");
+       _g_free0 (self->priv->region);
+       self->priv->region = _tmp4_;
+       self->priv->disabled = FALSE;
+       _tmp5_ = js_render_rid;
+       js_render_rid = _tmp5_ + 1;
+       _tmp6_ = g_strdup_printf ("file-roo-%d", _tmp5_);
+       _g_free0 (((JsRenderJsRender*) self)->id);
+       ((JsRenderJsRender*) self)->id = _tmp6_;
+       _tmp7_ = g_strdup ("title");
+       _tmp8_ = g_strdup ("legend");
+       _tmp9_ = g_strdup ("loadingText");
+       _tmp10_ = g_strdup ("emptyText");
+       _tmp11_ = g_strdup ("qtip");
+       _tmp12_ = g_strdup ("value");
+       _tmp13_ = g_strdup ("text");
+       _tmp14_ = g_strdup ("emptyMsg");
+       _tmp15_ = g_strdup ("displayMsg");
+       _tmp16_ = g_new0 (gchar*, 9 + 1);
+       _tmp16_[0] = _tmp7_;
+       _tmp16_[1] = _tmp8_;
+       _tmp16_[2] = _tmp9_;
+       _tmp16_[3] = _tmp10_;
+       _tmp16_[4] = _tmp11_;
+       _tmp16_[5] = _tmp12_;
+       _tmp16_[6] = _tmp13_;
+       _tmp16_[7] = _tmp14_;
+       _tmp16_[8] = _tmp15_;
+       dsp = _tmp16_;
+       dsp_length1 = 9;
+       _dsp_size_ = dsp_length1;
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp17_ = FALSE;
+                       _tmp17_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp19_ = 0;
+                               gchar** _tmp20_ = NULL;
+                               gint _tmp20__length1 = 0;
+                               gchar** _tmp21_ = NULL;
+                               gint _tmp21__length1 = 0;
+                               gint _tmp22_ = 0;
+                               const gchar* _tmp23_ = NULL;
+                               gchar* _tmp24_ = NULL;
+                               if (!_tmp17_) {
+                                       gint _tmp18_ = 0;
+                                       _tmp18_ = i;
+                                       i = _tmp18_ + 1;
+                               }
+                               _tmp17_ = FALSE;
+                               _tmp19_ = i;
+                               _tmp20_ = dsp;
+                               _tmp20__length1 = dsp_length1;
+                               if (!(_tmp19_ < _tmp20__length1)) {
+                                       break;
+                               }
+                               _tmp21_ = dsp;
+                               _tmp21__length1 = dsp_length1;
+                               _tmp22_ = i;
+                               _tmp23_ = _tmp21_[_tmp22_];
+                               _tmp24_ = g_strdup (_tmp23_);
+                               ((JsRenderJsRender*) self)->doubleStringProps = g_list_append (((JsRenderJsRender*) self)->doubleStringProps, _tmp24_);
+                       }
+               }
+       }
+       dsp = (_vala_array_free (dsp, dsp_length1, (GDestroyNotify) g_free), NULL);
+       return self;
+}
+
+
+JsRenderRoo* js_render_roo_new (ProjectProject* project, const gchar* path) {
+       return js_render_roo_construct (JS_RENDER_TYPE_ROO, project, path);
+}
+
+
+static JsonNode* _vala_JsonNode_copy (JsonNode* self) {
+       return g_boxed_copy (json_node_get_type (), self);
+}
+
+
+static gpointer __vala_JsonNode_copy0 (gpointer self) {
+       return self ? _vala_JsonNode_copy (self) : NULL;
+}
+
+
+static void _vala_JsonNode_free (JsonNode* self) {
+       g_boxed_free (json_node_get_type (), self);
+}
+
+
+static gpointer _json_object_ref0 (gpointer self) {
+       return self ? json_object_ref (self) : NULL;
+}
+
+
+static gpointer _json_array_ref0 (gpointer self) {
+       return self ? json_array_ref (self) : NULL;
+}
+
+
+void js_render_roo_loadItems (JsRenderRoo* self, GError** error) {
+       JsRenderNode* _tmp0_ = NULL;
+       JsonParser* pa = NULL;
+       JsonParser* _tmp1_ = NULL;
+       JsonParser* _tmp2_ = NULL;
+       const gchar* _tmp3_ = NULL;
+       JsonNode* node = NULL;
+       JsonParser* _tmp4_ = NULL;
+       JsonNode* _tmp5_ = NULL;
+       JsonNode* _tmp6_ = NULL;
+       JsonNode* _tmp7_ = NULL;
+       JsonNodeType _tmp8_ = 0;
+       JsonObject* obj = NULL;
+       JsonNode* _tmp12_ = NULL;
+       JsonObject* _tmp13_ = NULL;
+       JsonObject* _tmp14_ = NULL;
+       JsonObject* _tmp15_ = NULL;
+       const gchar* _tmp16_ = NULL;
+       gchar* _tmp17_ = NULL;
+       JsonObject* _tmp18_ = NULL;
+       const gchar* _tmp19_ = NULL;
+       gchar* _tmp20_ = NULL;
+       JsonObject* _tmp21_ = NULL;
+       const gchar* _tmp22_ = NULL;
+       gchar* _tmp23_ = NULL;
+       JsonObject* _tmp24_ = NULL;
+       const gchar* _tmp25_ = NULL;
+       gchar* _tmp26_ = NULL;
+       JsonObject* _tmp27_ = NULL;
+       const gchar* _tmp28_ = NULL;
+       gchar* _tmp29_ = NULL;
+       JsonObject* _tmp30_ = NULL;
+       const gchar* _tmp31_ = NULL;
+       gchar* _tmp32_ = NULL;
+       JsonArray* ar = NULL;
+       JsonObject* _tmp33_ = NULL;
+       JsonArray* _tmp34_ = NULL;
+       JsonArray* _tmp35_ = NULL;
+       JsonObject* tree_base = NULL;
+       JsonArray* _tmp36_ = NULL;
+       JsonObject* _tmp37_ = NULL;
+       JsonObject* _tmp38_ = NULL;
+       JsRenderNode* _tmp39_ = NULL;
+       JsRenderNode* _tmp40_ = NULL;
+       JsonObject* _tmp41_ = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_print ("load Items!");
+       _tmp0_ = ((JsRenderJsRender*) self)->tree;
+       if (_tmp0_ != NULL) {
+               return;
+       }
+       _tmp1_ = json_parser_new ();
+       pa = _tmp1_;
+       _tmp2_ = pa;
+       _tmp3_ = ((JsRenderJsRender*) self)->path;
+       json_parser_load_from_file (_tmp2_, _tmp3_, &_inner_error_);
+       if (_inner_error_ != NULL) {
+               if (_inner_error_->domain == JS_RENDER_ERROR) {
+                       g_propagate_error (error, _inner_error_);
+                       _g_object_unref0 (pa);
+                       return;
+               } else {
+                       _g_object_unref0 (pa);
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return;
+               }
+       }
+       _tmp4_ = pa;
+       _tmp5_ = json_parser_get_root (_tmp4_);
+       _tmp6_ = __vala_JsonNode_copy0 (_tmp5_);
+       node = _tmp6_;
+       _tmp7_ = node;
+       _tmp8_ = json_node_get_node_type (_tmp7_);
+       if (_tmp8_ != JSON_NODE_OBJECT) {
+               JsonNode* _tmp9_ = NULL;
+               const gchar* _tmp10_ = NULL;
+               GError* _tmp11_ = NULL;
+               _tmp9_ = node;
+               _tmp10_ = json_node_type_name (_tmp9_);
+               _tmp11_ = g_error_new (JS_RENDER_ERROR, JS_RENDER_ERROR_INVALID_FORMAT, "Unexpected element type %s", _tmp10_);
+               _inner_error_ = _tmp11_;
+               if (_inner_error_->domain == JS_RENDER_ERROR) {
+                       g_propagate_error (error, _inner_error_);
+                       __vala_JsonNode_free0 (node);
+                       _g_object_unref0 (pa);
+                       return;
+               } else {
+                       __vala_JsonNode_free0 (node);
+                       _g_object_unref0 (pa);
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return;
+               }
+       }
+       _tmp12_ = node;
+       _tmp13_ = json_node_get_object (_tmp12_);
+       _tmp14_ = _json_object_ref0 (_tmp13_);
+       obj = _tmp14_;
+       _tmp15_ = obj;
+       _tmp16_ = json_object_get_string_member (_tmp15_, "modOrder");
+       _tmp17_ = g_strdup (_tmp16_);
+       _g_free0 (((JsRenderJsRender*) self)->modOrder);
+       ((JsRenderJsRender*) self)->modOrder = _tmp17_;
+       _tmp18_ = obj;
+       _tmp19_ = json_object_get_string_member (_tmp18_, "name");
+       _tmp20_ = g_strdup (_tmp19_);
+       _g_free0 (((JsRenderJsRender*) self)->name);
+       ((JsRenderJsRender*) self)->name = _tmp20_;
+       _tmp21_ = obj;
+       _tmp22_ = json_object_get_string_member (_tmp21_, "parent");
+       _tmp23_ = g_strdup (_tmp22_);
+       _g_free0 (((JsRenderJsRender*) self)->parent);
+       ((JsRenderJsRender*) self)->parent = _tmp23_;
+       _tmp24_ = obj;
+       _tmp25_ = json_object_get_string_member (_tmp24_, "permname");
+       _tmp26_ = g_strdup (_tmp25_);
+       _g_free0 (((JsRenderJsRender*) self)->permname);
+       ((JsRenderJsRender*) self)->permname = _tmp26_;
+       _tmp27_ = obj;
+       _tmp28_ = json_object_get_string_member (_tmp27_, "title");
+       _tmp29_ = g_strdup (_tmp28_);
+       _g_free0 (((JsRenderJsRender*) self)->title);
+       ((JsRenderJsRender*) self)->title = _tmp29_;
+       _tmp30_ = obj;
+       _tmp31_ = json_object_get_string_member (_tmp30_, "modOrder");
+       _tmp32_ = g_strdup (_tmp31_);
+       _g_free0 (((JsRenderJsRender*) self)->modOrder);
+       ((JsRenderJsRender*) self)->modOrder = _tmp32_;
+       _tmp33_ = obj;
+       _tmp34_ = json_object_get_array_member (_tmp33_, "items");
+       _tmp35_ = _json_array_ref0 (_tmp34_);
+       ar = _tmp35_;
+       _tmp36_ = ar;
+       _tmp37_ = json_array_get_object_element (_tmp36_, (guint) 1);
+       _tmp38_ = _json_object_ref0 (_tmp37_);
+       tree_base = _tmp38_;
+       _tmp39_ = js_render_node_new ();
+       _js_render_node_unref0 (((JsRenderJsRender*) self)->tree);
+       ((JsRenderJsRender*) self)->tree = _tmp39_;
+       _tmp40_ = ((JsRenderJsRender*) self)->tree;
+       _tmp41_ = tree_base;
+       js_render_node_loadFromJson (_tmp40_, _tmp41_);
+       _json_object_unref0 (tree_base);
+       _json_array_unref0 (ar);
+       _json_object_unref0 (obj);
+       __vala_JsonNode_free0 (node);
+       _g_object_unref0 (pa);
+}
+
+
+/**
+         * old code had broken xtypes and used arrays differently,
+         * this code should try and clean it up..
+         * 
+         * 
+         * /
+        fixItems : function(node, fixthis)
+        {
+            if (fixthis) {
+                // fix xtype.
+                var fn = this.guessName(node);
+                //print("guessname got " + fn);
+                if (fn) {
+                    var bits = fn.split('.');
+                    node.xtype = bits.pop();
+                    node['|xns'] = bits.join('.');
+                    
+                }
+                // fix array???
+                 
+                
+            }
+            if (!node.items || !node.items.length) {
+                return;
+            }
+            var _this = this;
+            var aitems = [];
+            var nitems = [];
+            node.items.forEach(function(i) {
+                
+                
+                
+                _this.fixItems(i, true);
+                if (i.xtype == 'Array') {
+                    aitems.push(i);
+                    return;
+                }    
+                nitems.push(i);
+            });
+            node.items = nitems; 
+            
+            if (!aitems.length) {
+                return;
+            }
+            
+            aitems.forEach(function(i) {
+                
+                if (!i.items || !i.items.length) {
+                    return;
+                }
+                var prop = i['*prop'] + '[]';
+                // colModel to cm?
+                i.items.forEach(function(c) {
+                    c['*prop']  = prop;
+                    node.items.push(c);
+                    
+                });
+                
+                
+            });
+            
+            
+            // array handling.. 
+            
+            
+            
+            
+            
+        },
+    */
+void js_render_roo_save (JsRenderRoo* self) {
+       gchar* js = NULL;
+       gchar* js_src = NULL;
+       gchar* _tmp10_ = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_print ("--- JsRender.Roo.save");
+       js_render_js_render_save (G_TYPE_CHECK_INSTANCE_CAST (self, JS_RENDER_TYPE_JS_RENDER, JsRenderJsRender));
+       {
+               GRegex* regex = NULL;
+               GRegex* _tmp0_ = NULL;
+               gchar* _tmp1_ = NULL;
+               GRegex* _tmp2_ = NULL;
+               const gchar* _tmp3_ = NULL;
+               const gchar* _tmp4_ = NULL;
+               gint _tmp5_ = 0;
+               gint _tmp6_ = 0;
+               gchar* _tmp7_ = NULL;
+               gchar* _tmp8_ = NULL;
+               _tmp0_ = g_regex_new ("\\.(bjs|js)$", 0, 0, &_inner_error_);
+               regex = _tmp0_;
+               if (_inner_error_ != NULL) {
+                       if (_inner_error_->domain == G_REGEX_ERROR) {
+                               goto __catch6_g_regex_error;
+                       }
+                       _g_free0 (js);
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return;
+               }
+               _tmp2_ = regex;
+               _tmp3_ = ((JsRenderJsRender*) self)->path;
+               _tmp4_ = ((JsRenderJsRender*) self)->path;
+               _tmp5_ = strlen (_tmp4_);
+               _tmp6_ = _tmp5_;
+               _tmp7_ = g_regex_replace (_tmp2_, _tmp3_, (gssize) _tmp6_, 0, "", 0, &_inner_error_);
+               _tmp1_ = _tmp7_;
+               if (_inner_error_ != NULL) {
+                       _g_regex_unref0 (regex);
+                       if (_inner_error_->domain == G_REGEX_ERROR) {
+                               goto __catch6_g_regex_error;
+                       }
+                       _g_regex_unref0 (regex);
+                       _g_free0 (js);
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return;
+               }
+               _tmp8_ = _tmp1_;
+               _tmp1_ = NULL;
+               _g_free0 (js);
+               js = _tmp8_;
+               _g_free0 (_tmp1_);
+               _g_regex_unref0 (regex);
+       }
+       goto __finally6;
+       __catch6_g_regex_error:
+       {
+               GError* e = NULL;
+               gchar* _tmp9_ = NULL;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               _tmp9_ = g_strdup ("???");
+               _g_free0 (((JsRenderJsRender*) self)->name);
+               ((JsRenderJsRender*) self)->name = _tmp9_;
+               g_print ("count not make filename from path");
+               _g_error_free0 (e);
+               _g_free0 (js);
+               return;
+       }
+       __finally6:
+       if (_inner_error_ != NULL) {
+               _g_free0 (js);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return;
+       }
+       _tmp10_ = js_render_roo_toSource (self);
+       js_src = _tmp10_;
+       {
+               const gchar* _tmp11_ = NULL;
+               const gchar* _tmp12_ = NULL;
+               const gchar* _tmp13_ = NULL;
+               gint _tmp14_ = 0;
+               gint _tmp15_ = 0;
+               _tmp11_ = js;
+               _tmp12_ = js_src;
+               _tmp13_ = js_src;
+               _tmp14_ = strlen (_tmp13_);
+               _tmp15_ = _tmp14_;
+               g_file_set_contents (_tmp11_, _tmp12_, (gssize) _tmp15_, &_inner_error_);
+               if (_inner_error_ != NULL) {
+                       if (_inner_error_->domain == G_FILE_ERROR) {
+                               goto __catch7_g_file_error;
+                       }
+                       _g_free0 (js_src);
+                       _g_free0 (js);
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return;
+               }
+       }
+       goto __finally7;
+       __catch7_g_file_error:
+       {
+               GError* e = NULL;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               g_print ("Save failed\n");
+               _g_error_free0 (e);
+       }
+       __finally7:
+       if (_inner_error_ != NULL) {
+               _g_free0 (js_src);
+               _g_free0 (js);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return;
+       }
+       _g_free0 (js_src);
+       _g_free0 (js);
+}
+
+
+/**
+         * convert xtype for munged output..
+         * 
+         */
+static gboolean string_contains (const gchar* self, const gchar* needle) {
+       gboolean result = FALSE;
+       const gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (needle != NULL, FALSE);
+       _tmp0_ = needle;
+       _tmp1_ = strstr ((gchar*) self, (gchar*) _tmp0_);
+       result = _tmp1_ != NULL;
+       return result;
+}
+
+
+static gchar* js_render_roo_toSourcePreview (JsRenderRoo* self) {
+       gchar* result = NULL;
+       gchar* top = NULL;
+       JsRenderNode* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       const gchar* _tmp3_ = NULL;
+       gboolean _tmp4_ = FALSE;
+       const gchar* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       gchar* _tmp9_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = ((JsRenderJsRender*) self)->tree;
+       _tmp1_ = js_render_roo_guessName (self, _tmp0_);
+       top = _tmp1_;
+       _tmp2_ = top;
+       if (_tmp2_ == NULL) {
+               result = NULL;
+               _g_free0 (top);
+               return result;
+       }
+       _tmp3_ = top;
+       _tmp4_ = string_contains (_tmp3_, "Dialog");
+       if (_tmp4_) {
+               gchar* _tmp5_ = NULL;
+               _tmp5_ = js_render_roo_toSourceDialog (self, TRUE);
+               result = _tmp5_;
+               _g_free0 (top);
+               return result;
+       }
+       _tmp6_ = top;
+       _tmp7_ = string_contains (_tmp6_, "Modal");
+       if (_tmp7_) {
+               gchar* _tmp8_ = NULL;
+               _tmp8_ = js_render_roo_toSourceModal (self, TRUE);
+               result = _tmp8_;
+               _g_free0 (top);
+               return result;
+       }
+       _tmp9_ = js_render_roo_toSourceLayout (self, TRUE);
+       result = _tmp9_;
+       _g_free0 (top);
+       return result;
+}
+
+
+/**
+         * This needs to use some options on the project
+         * to determine how the file is output..
+         * 
+         * At present we are hard coding it..
+         * 
+         * 
+         */
+gchar* js_render_roo_toSource (JsRenderRoo* self) {
+       gchar* result = NULL;
+       gchar* top = NULL;
+       JsRenderNode* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       const gchar* _tmp4_ = NULL;
+       gboolean _tmp5_ = FALSE;
+       const gchar* _tmp7_ = NULL;
+       gboolean _tmp8_ = FALSE;
+       gchar* _tmp10_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = ((JsRenderJsRender*) self)->tree;
+       _tmp1_ = js_render_roo_guessName (self, _tmp0_);
+       top = _tmp1_;
+       _tmp2_ = top;
+       if (_tmp2_ != NULL) {
+               gchar* _tmp3_ = NULL;
+               _tmp3_ = g_strdup ("");
+               result = _tmp3_;
+               _g_free0 (top);
+               return result;
+       }
+       _tmp4_ = top;
+       _tmp5_ = string_contains (_tmp4_, "Dialog");
+       if (_tmp5_) {
+               gchar* _tmp6_ = NULL;
+               _tmp6_ = js_render_roo_toSourceDialog (self, FALSE);
+               result = _tmp6_;
+               _g_free0 (top);
+               return result;
+       }
+       _tmp7_ = top;
+       _tmp8_ = string_contains (_tmp7_, "Modal");
+       if (_tmp8_) {
+               gchar* _tmp9_ = NULL;
+               _tmp9_ = js_render_roo_toSourceModal (self, TRUE);
+               result = _tmp9_;
+               _g_free0 (top);
+               return result;
+       }
+       _tmp10_ = js_render_roo_toSourceLayout (self, FALSE);
+       result = _tmp10_;
+       _g_free0 (top);
+       return result;
+}
+
+
+gchar* js_render_roo_outputHeader (JsRenderRoo* self) {
+       gchar* result = NULL;
+       gchar** s = NULL;
+       gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gchar** _tmp4_ = NULL;
+       gint s_length1 = 0;
+       gint _s_size_ = 0;
+       gchar* _tmp5_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = g_strdup ("//<script type=\"text/javascript\">");
+       _tmp1_ = g_strdup ("");
+       _tmp2_ = g_strdup ("// Auto generated file - created by app.Builder.js- do not edit direct" \
+"ly (at present!)");
+       _tmp3_ = g_strdup ("");
+       _tmp4_ = g_new0 (gchar*, 4 + 1);
+       _tmp4_[0] = _tmp0_;
+       _tmp4_[1] = _tmp1_;
+       _tmp4_[2] = _tmp2_;
+       _tmp4_[3] = _tmp3_;
+       s = _tmp4_;
+       s_length1 = 4;
+       _s_size_ = s_length1;
+       _tmp5_ = g_strjoin ("\n", s, NULL);
+       result = _tmp5_;
+       s = (_vala_array_free (s, s_length1, (GDestroyNotify) g_free), NULL);
+       return result;
+}
+
+
+gchar* js_render_roo_toSourceDialog (JsRenderRoo* self, gboolean isPreview) {
+       gchar* result = NULL;
+       gchar* o = NULL;
+       gchar* _tmp0_ = NULL;
+       gchar** adda = NULL;
+       gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       gchar* _tmp7_ = NULL;
+       gchar* _tmp8_ = NULL;
+       gchar* _tmp9_ = NULL;
+       gchar* _tmp10_ = NULL;
+       gchar* _tmp11_ = NULL;
+       gchar* _tmp12_ = NULL;
+       gchar* _tmp13_ = NULL;
+       gchar* _tmp14_ = NULL;
+       gchar* _tmp15_ = NULL;
+       gchar* _tmp16_ = NULL;
+       gchar* _tmp17_ = NULL;
+       gchar* _tmp18_ = NULL;
+       gchar* _tmp19_ = NULL;
+       gchar* _tmp20_ = NULL;
+       gchar* _tmp21_ = NULL;
+       gchar* _tmp22_ = NULL;
+       gchar* _tmp23_ = NULL;
+       gchar* _tmp24_ = NULL;
+       gchar* _tmp25_ = NULL;
+       gchar* _tmp26_ = NULL;
+       gchar** _tmp27_ = NULL;
+       gint adda_length1 = 0;
+       gint _adda_size_ = 0;
+       gchar** addb = NULL;
+       gchar* _tmp28_ = NULL;
+       gchar* _tmp29_ = NULL;
+       gchar* _tmp30_ = NULL;
+       gchar* _tmp31_ = NULL;
+       gchar** _tmp32_ = NULL;
+       gint addb_length1 = 0;
+       gint _addb_size_ = 0;
+       gchar* _tmp33_ = NULL;
+       gchar* _tmp34_ = NULL;
+       gchar* _tmp35_ = NULL;
+       gchar* _tmp36_ = NULL;
+       const gchar* _tmp37_ = NULL;
+       gchar* _tmp38_ = NULL;
+       gchar* _tmp39_ = NULL;
+       gchar* _tmp40_ = NULL;
+       gchar* _tmp41_ = NULL;
+       gchar* _tmp42_ = NULL;
+       gchar* _tmp43_ = NULL;
+       gchar* _tmp44_ = NULL;
+       gchar* _tmp45_ = NULL;
+       gchar* _tmp46_ = NULL;
+       gchar* _tmp47_ = NULL;
+       gchar* _tmp48_ = NULL;
+       gchar* _tmp49_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = js_render_js_render_mungeToString ((JsRenderJsRender*) self, "            ");
+       o = _tmp0_;
+       _tmp1_ = g_strdup (" = {");
+       _tmp2_ = g_strdup ("");
+       _tmp3_ = g_strdup ("    dialog : false,");
+       _tmp4_ = g_strdup ("    callback:  false,");
+       _tmp5_ = g_strdup ("");
+       _tmp6_ = g_strdup ("    show : function(data, cb)");
+       _tmp7_ = g_strdup ("    {");
+       _tmp8_ = g_strdup ("        if (!this.dialog) {");
+       _tmp9_ = g_strdup ("            this.create();");
+       _tmp10_ = g_strdup ("        }");
+       _tmp11_ = g_strdup ("");
+       _tmp12_ = g_strdup ("        this.callback = cb;");
+       _tmp13_ = g_strdup ("        this.data = data;");
+       _tmp14_ = g_strdup ("        this.dialog.show(this.data._el);");
+       _tmp15_ = g_strdup ("        if (this.form) {");
+       _tmp16_ = g_strdup ("           this.form.reset();");
+       _tmp17_ = g_strdup ("           this.form.setValues(data);");
+       _tmp18_ = g_strdup ("           this.form.fireEvent('actioncomplete', this.form,  { type: '" \
+"setdata', data: data });");
+       _tmp19_ = g_strdup ("        }");
+       _tmp20_ = g_strdup ("");
+       _tmp21_ = g_strdup ("    },");
+       _tmp22_ = g_strdup ("");
+       _tmp23_ = g_strdup ("    create : function()");
+       _tmp24_ = g_strdup ("    {");
+       _tmp25_ = g_strdup ("        var _this = this;");
+       _tmp26_ = g_strdup ("        this.dialog = Roo.factory(");
+       _tmp27_ = g_new0 (gchar*, 26 + 1);
+       _tmp27_[0] = _tmp1_;
+       _tmp27_[1] = _tmp2_;
+       _tmp27_[2] = _tmp3_;
+       _tmp27_[3] = _tmp4_;
+       _tmp27_[4] = _tmp5_;
+       _tmp27_[5] = _tmp6_;
+       _tmp27_[6] = _tmp7_;
+       _tmp27_[7] = _tmp8_;
+       _tmp27_[8] = _tmp9_;
+       _tmp27_[9] = _tmp10_;
+       _tmp27_[10] = _tmp11_;
+       _tmp27_[11] = _tmp12_;
+       _tmp27_[12] = _tmp13_;
+       _tmp27_[13] = _tmp14_;
+       _tmp27_[14] = _tmp15_;
+       _tmp27_[15] = _tmp16_;
+       _tmp27_[16] = _tmp17_;
+       _tmp27_[17] = _tmp18_;
+       _tmp27_[18] = _tmp19_;
+       _tmp27_[19] = _tmp20_;
+       _tmp27_[20] = _tmp21_;
+       _tmp27_[21] = _tmp22_;
+       _tmp27_[22] = _tmp23_;
+       _tmp27_[23] = _tmp24_;
+       _tmp27_[24] = _tmp25_;
+       _tmp27_[25] = _tmp26_;
+       adda = _tmp27_;
+       adda_length1 = 26;
+       _adda_size_ = adda_length1;
+       _tmp28_ = g_strdup (");");
+       _tmp29_ = g_strdup ("    }");
+       _tmp30_ = g_strdup ("};");
+       _tmp31_ = g_strdup ("");
+       _tmp32_ = g_new0 (gchar*, 4 + 1);
+       _tmp32_[0] = _tmp28_;
+       _tmp32_[1] = _tmp29_;
+       _tmp32_[2] = _tmp30_;
+       _tmp32_[3] = _tmp31_;
+       addb = _tmp32_;
+       addb_length1 = 4;
+       _addb_size_ = addb_length1;
+       _tmp33_ = js_render_roo_outputHeader (self);
+       _tmp34_ = _tmp33_;
+       _tmp35_ = g_strconcat (_tmp34_, "\n", NULL);
+       _tmp36_ = _tmp35_;
+       _tmp37_ = ((JsRenderJsRender*) self)->name;
+       _tmp38_ = g_strconcat (_tmp36_, _tmp37_, NULL);
+       _tmp39_ = _tmp38_;
+       _tmp40_ = g_strjoin ("\n", adda, NULL);
+       _tmp41_ = _tmp40_;
+       _tmp42_ = g_strconcat (_tmp39_, _tmp41_, NULL);
+       _tmp43_ = _tmp42_;
+       _tmp44_ = g_strconcat (_tmp43_, o, NULL);
+       _tmp45_ = _tmp44_;
+       _tmp46_ = g_strjoin ("\n", addb, NULL);
+       _tmp47_ = _tmp46_;
+       _tmp48_ = g_strconcat (_tmp45_, _tmp47_, NULL);
+       _tmp49_ = _tmp48_;
+       _g_free0 (_tmp47_);
+       _g_free0 (_tmp45_);
+       _g_free0 (_tmp43_);
+       _g_free0 (_tmp41_);
+       _g_free0 (_tmp39_);
+       _g_free0 (_tmp36_);
+       _g_free0 (_tmp34_);
+       result = _tmp49_;
+       addb = (_vala_array_free (addb, addb_length1, (GDestroyNotify) g_free), NULL);
+       adda = (_vala_array_free (adda, adda_length1, (GDestroyNotify) g_free), NULL);
+       _g_free0 (o);
+       return result;
+}
+
+
+gchar* js_render_roo_toSourceModal (JsRenderRoo* self, gboolean isPreview) {
+       gchar* result = NULL;
+       gchar* o = NULL;
+       gchar* _tmp0_ = NULL;
+       gchar** adda = NULL;
+       gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       gchar* _tmp7_ = NULL;
+       gchar* _tmp8_ = NULL;
+       gchar* _tmp9_ = NULL;
+       gchar* _tmp10_ = NULL;
+       gchar* _tmp11_ = NULL;
+       gchar* _tmp12_ = NULL;
+       gchar* _tmp13_ = NULL;
+       gchar* _tmp14_ = NULL;
+       gchar* _tmp15_ = NULL;
+       gchar* _tmp16_ = NULL;
+       gchar* _tmp17_ = NULL;
+       gchar* _tmp18_ = NULL;
+       gchar* _tmp19_ = NULL;
+       gchar* _tmp20_ = NULL;
+       gchar* _tmp21_ = NULL;
+       gchar* _tmp22_ = NULL;
+       gchar* _tmp23_ = NULL;
+       gchar* _tmp24_ = NULL;
+       gchar* _tmp25_ = NULL;
+       gchar* _tmp26_ = NULL;
+       gchar** _tmp27_ = NULL;
+       gint adda_length1 = 0;
+       gint _adda_size_ = 0;
+       gchar** addb = NULL;
+       gchar* _tmp28_ = NULL;
+       gchar* _tmp29_ = NULL;
+       gchar* _tmp30_ = NULL;
+       gchar* _tmp31_ = NULL;
+       gchar** _tmp32_ = NULL;
+       gint addb_length1 = 0;
+       gint _addb_size_ = 0;
+       gchar* _tmp33_ = NULL;
+       gchar* _tmp34_ = NULL;
+       gchar* _tmp35_ = NULL;
+       gchar* _tmp36_ = NULL;
+       const gchar* _tmp37_ = NULL;
+       gchar* _tmp38_ = NULL;
+       gchar* _tmp39_ = NULL;
+       gchar* _tmp40_ = NULL;
+       gchar* _tmp41_ = NULL;
+       gchar* _tmp42_ = NULL;
+       gchar* _tmp43_ = NULL;
+       gchar* _tmp44_ = NULL;
+       gchar* _tmp45_ = NULL;
+       gchar* _tmp46_ = NULL;
+       gchar* _tmp47_ = NULL;
+       gchar* _tmp48_ = NULL;
+       gchar* _tmp49_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = js_render_js_render_mungeToString ((JsRenderJsRender*) self, "            ");
+       o = _tmp0_;
+       _tmp1_ = g_strdup (" = {");
+       _tmp2_ = g_strdup ("");
+       _tmp3_ = g_strdup ("    dialog : false,");
+       _tmp4_ = g_strdup ("    callback:  false,");
+       _tmp5_ = g_strdup ("");
+       _tmp6_ = g_strdup ("    show : function(data, cb)");
+       _tmp7_ = g_strdup ("    {");
+       _tmp8_ = g_strdup ("        if (!this.dialog) {");
+       _tmp9_ = g_strdup ("            this.create();");
+       _tmp10_ = g_strdup ("        }");
+       _tmp11_ = g_strdup ("");
+       _tmp12_ = g_strdup ("        this.callback = cb;");
+       _tmp13_ = g_strdup ("        this.data = data;");
+       _tmp14_ = g_strdup ("        this.dialog.show(this.data._el);");
+       _tmp15_ = g_strdup ("        if (this.form) {");
+       _tmp16_ = g_strdup ("           this.form.reset();");
+       _tmp17_ = g_strdup ("           this.form.setValues(data);");
+       _tmp18_ = g_strdup ("           this.form.fireEvent('actioncomplete', this.form,  { type: '" \
+"setdata', data: data });");
+       _tmp19_ = g_strdup ("        }");
+       _tmp20_ = g_strdup ("");
+       _tmp21_ = g_strdup ("    },");
+       _tmp22_ = g_strdup ("");
+       _tmp23_ = g_strdup ("    create : function()");
+       _tmp24_ = g_strdup ("    {");
+       _tmp25_ = g_strdup ("        var _this = this;");
+       _tmp26_ = g_strdup ("        this.dialog = Roo.factory(");
+       _tmp27_ = g_new0 (gchar*, 26 + 1);
+       _tmp27_[0] = _tmp1_;
+       _tmp27_[1] = _tmp2_;
+       _tmp27_[2] = _tmp3_;
+       _tmp27_[3] = _tmp4_;
+       _tmp27_[4] = _tmp5_;
+       _tmp27_[5] = _tmp6_;
+       _tmp27_[6] = _tmp7_;
+       _tmp27_[7] = _tmp8_;
+       _tmp27_[8] = _tmp9_;
+       _tmp27_[9] = _tmp10_;
+       _tmp27_[10] = _tmp11_;
+       _tmp27_[11] = _tmp12_;
+       _tmp27_[12] = _tmp13_;
+       _tmp27_[13] = _tmp14_;
+       _tmp27_[14] = _tmp15_;
+       _tmp27_[15] = _tmp16_;
+       _tmp27_[16] = _tmp17_;
+       _tmp27_[17] = _tmp18_;
+       _tmp27_[18] = _tmp19_;
+       _tmp27_[19] = _tmp20_;
+       _tmp27_[20] = _tmp21_;
+       _tmp27_[21] = _tmp22_;
+       _tmp27_[22] = _tmp23_;
+       _tmp27_[23] = _tmp24_;
+       _tmp27_[24] = _tmp25_;
+       _tmp27_[25] = _tmp26_;
+       adda = _tmp27_;
+       adda_length1 = 26;
+       _adda_size_ = adda_length1;
+       _tmp28_ = g_strdup (");");
+       _tmp29_ = g_strdup ("    }");
+       _tmp30_ = g_strdup ("};");
+       _tmp31_ = g_strdup ("");
+       _tmp32_ = g_new0 (gchar*, 4 + 1);
+       _tmp32_[0] = _tmp28_;
+       _tmp32_[1] = _tmp29_;
+       _tmp32_[2] = _tmp30_;
+       _tmp32_[3] = _tmp31_;
+       addb = _tmp32_;
+       addb_length1 = 4;
+       _addb_size_ = addb_length1;
+       _tmp33_ = js_render_roo_outputHeader (self);
+       _tmp34_ = _tmp33_;
+       _tmp35_ = g_strconcat (_tmp34_, "\n", NULL);
+       _tmp36_ = _tmp35_;
+       _tmp37_ = ((JsRenderJsRender*) self)->name;
+       _tmp38_ = g_strconcat (_tmp36_, _tmp37_, NULL);
+       _tmp39_ = _tmp38_;
+       _tmp40_ = g_strjoin ("\n", adda, NULL);
+       _tmp41_ = _tmp40_;
+       _tmp42_ = g_strconcat (_tmp39_, _tmp41_, NULL);
+       _tmp43_ = _tmp42_;
+       _tmp44_ = g_strconcat (_tmp43_, o, NULL);
+       _tmp45_ = _tmp44_;
+       _tmp46_ = g_strjoin ("\n", addb, NULL);
+       _tmp47_ = _tmp46_;
+       _tmp48_ = g_strconcat (_tmp45_, _tmp47_, NULL);
+       _tmp49_ = _tmp48_;
+       _g_free0 (_tmp47_);
+       _g_free0 (_tmp45_);
+       _g_free0 (_tmp43_);
+       _g_free0 (_tmp41_);
+       _g_free0 (_tmp39_);
+       _g_free0 (_tmp36_);
+       _g_free0 (_tmp34_);
+       result = _tmp49_;
+       addb = (_vala_array_free (addb, addb_length1, (GDestroyNotify) g_free), NULL);
+       adda = (_vala_array_free (adda, adda_length1, (GDestroyNotify) g_free), NULL);
+       _g_free0 (o);
+       return result;
+}
+
+
+static glong string_strnlen (gchar* str, glong maxlen) {
+       glong result = 0L;
+       gchar* end = NULL;
+       gchar* _tmp0_ = NULL;
+       glong _tmp1_ = 0L;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       _tmp0_ = str;
+       _tmp1_ = maxlen;
+       _tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_);
+       end = _tmp2_;
+       _tmp3_ = end;
+       if (_tmp3_ == NULL) {
+               glong _tmp4_ = 0L;
+               _tmp4_ = maxlen;
+               result = _tmp4_;
+               return result;
+       } else {
+               gchar* _tmp5_ = NULL;
+               gchar* _tmp6_ = NULL;
+               _tmp5_ = end;
+               _tmp6_ = str;
+               result = (glong) (_tmp5_ - _tmp6_);
+               return result;
+       }
+}
+
+
+static gchar* string_substring (const gchar* self, glong offset, glong len) {
+       gchar* result = NULL;
+       glong string_length = 0L;
+       gboolean _tmp0_ = FALSE;
+       glong _tmp1_ = 0L;
+       glong _tmp8_ = 0L;
+       glong _tmp14_ = 0L;
+       glong _tmp17_ = 0L;
+       glong _tmp18_ = 0L;
+       glong _tmp19_ = 0L;
+       glong _tmp20_ = 0L;
+       glong _tmp21_ = 0L;
+       gchar* _tmp22_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp1_ = offset;
+       if (_tmp1_ >= ((glong) 0)) {
+               glong _tmp2_ = 0L;
+               _tmp2_ = len;
+               _tmp0_ = _tmp2_ >= ((glong) 0);
+       } else {
+               _tmp0_ = FALSE;
+       }
+       if (_tmp0_) {
+               glong _tmp3_ = 0L;
+               glong _tmp4_ = 0L;
+               glong _tmp5_ = 0L;
+               _tmp3_ = offset;
+               _tmp4_ = len;
+               _tmp5_ = string_strnlen ((gchar*) self, _tmp3_ + _tmp4_);
+               string_length = _tmp5_;
+       } else {
+               gint _tmp6_ = 0;
+               gint _tmp7_ = 0;
+               _tmp6_ = strlen (self);
+               _tmp7_ = _tmp6_;
+               string_length = (glong) _tmp7_;
+       }
+       _tmp8_ = offset;
+       if (_tmp8_ < ((glong) 0)) {
+               glong _tmp9_ = 0L;
+               glong _tmp10_ = 0L;
+               glong _tmp11_ = 0L;
+               _tmp9_ = string_length;
+               _tmp10_ = offset;
+               offset = _tmp9_ + _tmp10_;
+               _tmp11_ = offset;
+               g_return_val_if_fail (_tmp11_ >= ((glong) 0), NULL);
+       } else {
+               glong _tmp12_ = 0L;
+               glong _tmp13_ = 0L;
+               _tmp12_ = offset;
+               _tmp13_ = string_length;
+               g_return_val_if_fail (_tmp12_ <= _tmp13_, NULL);
+       }
+       _tmp14_ = len;
+       if (_tmp14_ < ((glong) 0)) {
+               glong _tmp15_ = 0L;
+               glong _tmp16_ = 0L;
+               _tmp15_ = string_length;
+               _tmp16_ = offset;
+               len = _tmp15_ - _tmp16_;
+       }
+       _tmp17_ = offset;
+       _tmp18_ = len;
+       _tmp19_ = string_length;
+       g_return_val_if_fail ((_tmp17_ + _tmp18_) <= _tmp19_, NULL);
+       _tmp20_ = offset;
+       _tmp21_ = len;
+       _tmp22_ = g_strndup (((gchar*) self) + _tmp20_, (gsize) _tmp21_);
+       result = _tmp22_;
+       return result;
+}
+
+
+gchar* js_render_roo_pathToPart (JsRenderRoo* self) {
+       gchar* result = NULL;
+       gchar* dir = NULL;
+       const gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar** ar = NULL;
+       const gchar* _tmp5_ = NULL;
+       gchar** _tmp6_ = NULL;
+       gchar** _tmp7_ = NULL;
+       gint ar_length1 = 0;
+       gint _ar_size_ = 0;
+       gchar* modname = NULL;
+       gchar** _tmp8_ = NULL;
+       gint _tmp8__length1 = 0;
+       gchar** _tmp9_ = NULL;
+       gint _tmp9__length1 = 0;
+       const gchar* _tmp10_ = NULL;
+       gchar* _tmp11_ = NULL;
+       gchar** fbits = NULL;
+       const gchar* _tmp12_ = NULL;
+       gchar* _tmp13_ = NULL;
+       gchar* _tmp14_ = NULL;
+       gchar** _tmp15_ = NULL;
+       gchar** _tmp16_ = NULL;
+       gchar** _tmp17_ = NULL;
+       gint _tmp17__length1 = 0;
+       gint fbits_length1 = 0;
+       gint _fbits_size_ = 0;
+       gchar* npart = NULL;
+       gchar** _tmp18_ = NULL;
+       gint _tmp18__length1 = 0;
+       gchar** _tmp19_ = NULL;
+       gint _tmp19__length1 = 0;
+       const gchar* _tmp20_ = NULL;
+       gchar* _tmp21_ = NULL;
+       const gchar* _tmp22_ = NULL;
+       const gchar* _tmp23_ = NULL;
+       gint _tmp24_ = 0;
+       gint _tmp25_ = 0;
+       gchar* _tmp26_ = NULL;
+       gchar* _tmp27_ = NULL;
+       const gchar* _tmp28_ = NULL;
+       gboolean _tmp29_ = FALSE;
+       JsRenderNode* _tmp35_ = NULL;
+       const gchar* _tmp36_ = NULL;
+       gchar* _tmp37_ = NULL;
+       gchar* _tmp38_ = NULL;
+       gchar* _tmp39_ = NULL;
+       gchar* _tmp40_ = NULL;
+       gchar* _tmp41_ = NULL;
+       gchar* _tmp42_ = NULL;
+       JsRenderNode* _tmp43_ = NULL;
+       const gchar* _tmp44_ = NULL;
+       gchar* _tmp45_ = NULL;
+       gchar* _tmp46_ = NULL;
+       gchar* _tmp47_ = NULL;
+       gchar* _tmp48_ = NULL;
+       gchar* _tmp49_ = NULL;
+       gchar* _tmp50_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = ((JsRenderJsRender*) self)->path;
+       _tmp1_ = g_path_get_dirname (_tmp0_);
+       _tmp2_ = _tmp1_;
+       _tmp3_ = g_path_get_basename (_tmp2_);
+       _tmp4_ = _tmp3_;
+       _g_free0 (_tmp2_);
+       dir = _tmp4_;
+       _tmp5_ = dir;
+       _tmp7_ = _tmp6_ = g_strsplit (_tmp5_, ".", 0);
+       ar = _tmp7_;
+       ar_length1 = _vala_array_length (_tmp6_);
+       _ar_size_ = ar_length1;
+       _tmp8_ = ar;
+       _tmp8__length1 = ar_length1;
+       _tmp9_ = ar;
+       _tmp9__length1 = ar_length1;
+       _tmp10_ = _tmp8_[_tmp9__length1 - 1];
+       _tmp11_ = g_strdup (_tmp10_);
+       modname = _tmp11_;
+       _tmp12_ = ((JsRenderJsRender*) self)->path;
+       _tmp13_ = g_path_get_basename (_tmp12_);
+       _tmp14_ = _tmp13_;
+       _tmp16_ = _tmp15_ = g_strsplit (_tmp14_, ".", 0);
+       _tmp17_ = _tmp16_;
+       _tmp17__length1 = _vala_array_length (_tmp15_);
+       _g_free0 (_tmp14_);
+       fbits = _tmp17_;
+       fbits_length1 = _tmp17__length1;
+       _fbits_size_ = fbits_length1;
+       _tmp18_ = fbits;
+       _tmp18__length1 = fbits_length1;
+       _tmp19_ = fbits;
+       _tmp19__length1 = fbits_length1;
+       _tmp20_ = _tmp18_[_tmp19__length1 - 2];
+       _tmp21_ = g_strdup (_tmp20_);
+       npart = _tmp21_;
+       _tmp22_ = npart;
+       _tmp23_ = modname;
+       _tmp24_ = strlen (_tmp23_);
+       _tmp25_ = _tmp24_;
+       _tmp26_ = string_substring (_tmp22_, (glong) 0, (glong) _tmp25_);
+       _tmp27_ = _tmp26_;
+       _tmp28_ = modname;
+       _tmp29_ = g_strcmp0 (_tmp27_, _tmp28_) == 0;
+       _g_free0 (_tmp27_);
+       if (_tmp29_) {
+               const gchar* _tmp30_ = NULL;
+               const gchar* _tmp31_ = NULL;
+               gint _tmp32_ = 0;
+               gint _tmp33_ = 0;
+               gchar* _tmp34_ = NULL;
+               _tmp30_ = npart;
+               _tmp31_ = modname;
+               _tmp32_ = strlen (_tmp31_);
+               _tmp33_ = _tmp32_;
+               _tmp34_ = string_substring (_tmp30_, (glong) _tmp33_, (glong) (-1));
+               _g_free0 (npart);
+               npart = _tmp34_;
+       }
+       _tmp35_ = ((JsRenderJsRender*) self)->tree;
+       _tmp36_ = modname;
+       _tmp37_ = js_render_node_quoteString (_tmp35_, _tmp36_);
+       _tmp38_ = _tmp37_;
+       _tmp39_ = g_strconcat ("[", _tmp38_, NULL);
+       _tmp40_ = _tmp39_;
+       _tmp41_ = g_strconcat (_tmp40_, ", ", NULL);
+       _tmp42_ = _tmp41_;
+       _tmp43_ = ((JsRenderJsRender*) self)->tree;
+       _tmp44_ = npart;
+       _tmp45_ = js_render_node_quoteString (_tmp43_, _tmp44_);
+       _tmp46_ = _tmp45_;
+       _tmp47_ = g_strconcat (_tmp42_, _tmp46_, NULL);
+       _tmp48_ = _tmp47_;
+       _tmp49_ = g_strconcat (_tmp48_, " ]", NULL);
+       _tmp50_ = _tmp49_;
+       _g_free0 (_tmp48_);
+       _g_free0 (_tmp46_);
+       _g_free0 (_tmp42_);
+       _g_free0 (_tmp40_);
+       _g_free0 (_tmp38_);
+       result = _tmp50_;
+       _g_free0 (npart);
+       fbits = (_vala_array_free (fbits, fbits_length1, (GDestroyNotify) g_free), NULL);
+       _g_free0 (modname);
+       ar = (_vala_array_free (ar, ar_length1, (GDestroyNotify) g_free), NULL);
+       _g_free0 (dir);
+       return result;
+}
+
+
+gchar* js_render_roo_toSourceLayout (JsRenderRoo* self, gboolean isPreview) {
+       gchar* result = NULL;
+       gboolean _tmp0_ = FALSE;
+       gchar* o = NULL;
+       gchar* _tmp1_ = NULL;
+       GRegex* reg = NULL;
+       GRegex* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       GRegex* _tmp4_ = NULL;
+       const gchar* _tmp5_ = NULL;
+       const gchar* _tmp6_ = NULL;
+       gint _tmp7_ = 0;
+       gint _tmp8_ = 0;
+       gchar* _tmp9_ = NULL;
+       gchar* modkey = NULL;
+       const gchar* _tmp10_ = NULL;
+       gchar* _tmp11_ = NULL;
+       gchar* _tmp12_ = NULL;
+       gchar* _tmp13_ = NULL;
+       gchar* _tmp14_ = NULL;
+       gchar* _tmp15_ = NULL;
+       gchar* _tmp16_ = NULL;
+       gchar* _tmp17_ = NULL;
+       const gchar* _tmp18_ = NULL;
+       gint _tmp19_ = 0;
+       gint _tmp20_ = 0;
+       gchar* parent = NULL;
+       gchar* _tmp26_ = NULL;
+       gboolean _tmp27_ = FALSE;
+       const gchar* _tmp29_ = NULL;
+       const gchar* _tmp30_ = NULL;
+       gint _tmp31_ = 0;
+       gint _tmp32_ = 0;
+       const gchar* _tmp34_ = NULL;
+       gboolean _tmp35_ = FALSE;
+       const gchar* _tmp36_ = NULL;
+       const gchar* _tmp37_ = NULL;
+       gint _tmp38_ = 0;
+       gint _tmp39_ = 0;
+       gchar* _tmp41_ = NULL;
+       gchar* _tmp42_ = NULL;
+       gchar* _tmp43_ = NULL;
+       gchar* _tmp44_ = NULL;
+       const gchar* _tmp45_ = NULL;
+       gchar* _tmp46_ = NULL;
+       gchar* _tmp47_ = NULL;
+       gchar* _tmp48_ = NULL;
+       gchar* _tmp49_ = NULL;
+       gchar* _tmp50_ = NULL;
+       gchar* _tmp51_ = NULL;
+       gchar* _tmp52_ = NULL;
+       gchar* _tmp53_ = NULL;
+       gchar* _tmp54_ = NULL;
+       gchar* _tmp55_ = NULL;
+       gchar* _tmp56_ = NULL;
+       gchar* _tmp57_ = NULL;
+       gchar* _tmp58_ = NULL;
+       gchar* _tmp59_ = NULL;
+       const gchar* _tmp60_ = NULL;
+       gchar* _tmp61_ = NULL;
+       gchar* _tmp62_ = NULL;
+       gchar* _tmp63_ = NULL;
+       gchar* _tmp64_ = NULL;
+       gchar* _tmp65_ = NULL;
+       gchar* _tmp66_ = NULL;
+       const gchar* _tmp67_ = NULL;
+       gchar* _tmp68_ = NULL;
+       gchar* _tmp69_ = NULL;
+       gchar* _tmp70_ = NULL;
+       gchar* _tmp71_ = NULL;
+       gchar* _tmp72_ = NULL;
+       gchar* _tmp73_ = NULL;
+       const gchar* _tmp74_ = NULL;
+       gchar* _tmp75_ = NULL;
+       gchar* _tmp76_ = NULL;
+       gchar* _tmp77_ = NULL;
+       gchar* _tmp78_ = NULL;
+       gchar* _tmp79_ = NULL;
+       gchar* _tmp80_ = NULL;
+       JsRenderNode* _tmp81_ = NULL;
+       gchar* _tmp82_ = NULL;
+       gchar* _tmp83_ = NULL;
+       gchar* _tmp84_ = NULL;
+       gchar* _tmp85_ = NULL;
+       gchar* _tmp86_ = NULL;
+       gchar* _tmp87_ = NULL;
+       gchar* _tmp88_ = NULL;
+       gchar* _tmp89_ = NULL;
+       gchar* _tmp90_ = NULL;
+       gchar* _tmp91_ = NULL;
+       gchar* _tmp92_ = NULL;
+       gchar* _tmp93_ = NULL;
+       gchar* _tmp94_ = NULL;
+       gchar* _tmp95_ = NULL;
+       gchar* _tmp96_ = NULL;
+       gchar* _tmp97_ = NULL;
+       gchar* _tmp98_ = NULL;
+       gchar* _tmp99_ = NULL;
+       gchar* _tmp100_ = NULL;
+       gchar* _tmp101_ = NULL;
+       gchar* _tmp102_ = NULL;
+       gchar* _tmp103_ = NULL;
+       gchar* _tmp104_ = NULL;
+       gchar* _tmp105_ = NULL;
+       gchar* _tmp106_ = NULL;
+       gchar* _tmp107_ = NULL;
+       gchar* _tmp108_ = NULL;
+       gchar* _tmp109_ = NULL;
+       const gchar* _tmp110_ = NULL;
+       gchar* _tmp111_ = NULL;
+       gchar* _tmp112_ = NULL;
+       gchar* _tmp113_ = NULL;
+       gchar* _tmp114_ = NULL;
+       gchar* _tmp115_ = NULL;
+       gchar* _tmp116_ = NULL;
+       gchar* _tmp117_ = NULL;
+       gchar* _tmp118_ = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = isPreview;
+       if (_tmp0_) {
+       }
+       _tmp1_ = js_render_js_render_mungeToString ((JsRenderJsRender*) self, "            ");
+       o = _tmp1_;
+       _tmp2_ = g_regex_new ("[^A-Za-z.]+", 0, 0, &_inner_error_);
+       reg = _tmp2_;
+       if (_inner_error_ != NULL) {
+               _g_free0 (o);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return NULL;
+       }
+       _tmp4_ = reg;
+       _tmp5_ = ((JsRenderJsRender*) self)->name;
+       _tmp6_ = ((JsRenderJsRender*) self)->name;
+       _tmp7_ = strlen (_tmp6_);
+       _tmp8_ = _tmp7_;
+       _tmp9_ = g_regex_replace (_tmp4_, _tmp5_, (gssize) _tmp8_, 0, "-", 0, &_inner_error_);
+       _tmp3_ = _tmp9_;
+       if (_inner_error_ != NULL) {
+               _g_regex_unref0 (reg);
+               _g_free0 (o);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return NULL;
+       }
+       _tmp10_ = ((JsRenderJsRender*) self)->modOrder;
+       _tmp11_ = g_strconcat (_tmp10_, "-", NULL);
+       _tmp12_ = _tmp11_;
+       _tmp13_ = _tmp3_;
+       _tmp3_ = NULL;
+       _tmp14_ = _tmp13_;
+       _tmp15_ = g_strconcat (_tmp12_, _tmp14_, NULL);
+       _tmp16_ = _tmp15_;
+       _g_free0 (_tmp14_);
+       _g_free0 (_tmp12_);
+       modkey = _tmp16_;
+       _tmp18_ = ((JsRenderJsRender*) self)->parent;
+       _tmp19_ = strlen (_tmp18_);
+       _tmp20_ = _tmp19_;
+       if (_tmp20_ > 0) {
+               const gchar* _tmp21_ = NULL;
+               gchar* _tmp22_ = NULL;
+               gchar* _tmp23_ = NULL;
+               gchar* _tmp24_ = NULL;
+               _tmp21_ = ((JsRenderJsRender*) self)->parent;
+               _tmp22_ = g_strconcat ("'", _tmp21_, NULL);
+               _tmp23_ = _tmp22_;
+               _tmp24_ = g_strconcat (_tmp23_, "'", NULL);
+               _g_free0 (_tmp17_);
+               _tmp17_ = _tmp24_;
+               _g_free0 (_tmp23_);
+       } else {
+               gchar* _tmp25_ = NULL;
+               _tmp25_ = g_strdup ("false");
+               _g_free0 (_tmp17_);
+               _tmp17_ = _tmp25_;
+       }
+       _tmp26_ = g_strdup (_tmp17_);
+       parent = _tmp26_;
+       _tmp27_ = isPreview;
+       if (_tmp27_) {
+               gchar* _tmp28_ = NULL;
+               _tmp28_ = g_strdup ("false");
+               _g_free0 (parent);
+               parent = _tmp28_;
+       }
+       _tmp30_ = ((JsRenderJsRender*) self)->title;
+       _tmp31_ = strlen (_tmp30_);
+       _tmp32_ = _tmp31_;
+       if (_tmp32_ > 0) {
+               const gchar* _tmp33_ = NULL;
+               _tmp33_ = ((JsRenderJsRender*) self)->title;
+               _tmp29_ = _tmp33_;
+       } else {
+               _tmp29_ = "unnamed module";
+       }
+       _tmp35_ = self->priv->disabled;
+       if (_tmp35_) {
+               _tmp34_ = "true";
+       } else {
+               _tmp34_ = "false";
+       }
+       _tmp37_ = ((JsRenderJsRender*) self)->permname;
+       _tmp38_ = strlen (_tmp37_);
+       _tmp39_ = _tmp38_;
+       if (_tmp39_ > 0) {
+               const gchar* _tmp40_ = NULL;
+               _tmp40_ = ((JsRenderJsRender*) self)->permname;
+               _tmp36_ = _tmp40_;
+       } else {
+               _tmp36_ = "";
+       }
+       _tmp41_ = js_render_roo_outputHeader (self);
+       _tmp42_ = _tmp41_;
+       _tmp43_ = g_strconcat (_tmp42_, "\n", NULL);
+       _tmp44_ = _tmp43_;
+       _tmp45_ = ((JsRenderJsRender*) self)->name;
+       _tmp46_ = g_strconcat (_tmp44_, _tmp45_, NULL);
+       _tmp47_ = _tmp46_;
+       _tmp48_ = g_strconcat (_tmp47_, " = new Roo.XComponent({\n", NULL);
+       _tmp49_ = _tmp48_;
+       _tmp50_ = g_strconcat (_tmp49_, "    part     :  ", NULL);
+       _tmp51_ = _tmp50_;
+       _tmp52_ = js_render_roo_pathToPart (self);
+       _tmp53_ = _tmp52_;
+       _tmp54_ = g_strconcat (_tmp51_, _tmp53_, NULL);
+       _tmp55_ = _tmp54_;
+       _tmp56_ = g_strconcat (_tmp55_, ",\n", NULL);
+       _tmp57_ = _tmp56_;
+       _tmp58_ = g_strconcat (_tmp57_, "    order    : '", NULL);
+       _tmp59_ = _tmp58_;
+       _tmp60_ = modkey;
+       _tmp61_ = g_strconcat (_tmp59_, _tmp60_, NULL);
+       _tmp62_ = _tmp61_;
+       _tmp63_ = g_strconcat (_tmp62_, "',\n", NULL);
+       _tmp64_ = _tmp63_;
+       _tmp65_ = g_strconcat (_tmp64_, "    region   : '", NULL);
+       _tmp66_ = _tmp65_;
+       _tmp67_ = self->priv->region;
+       _tmp68_ = g_strconcat (_tmp66_, _tmp67_, NULL);
+       _tmp69_ = _tmp68_;
+       _tmp70_ = g_strconcat (_tmp69_, "',\n", NULL);
+       _tmp71_ = _tmp70_;
+       _tmp72_ = g_strconcat (_tmp71_, "    parent   : ", NULL);
+       _tmp73_ = _tmp72_;
+       _tmp74_ = parent;
+       _tmp75_ = g_strconcat (_tmp73_, _tmp74_, NULL);
+       _tmp76_ = _tmp75_;
+       _tmp77_ = g_strconcat (_tmp76_, ",\n", NULL);
+       _tmp78_ = _tmp77_;
+       _tmp79_ = g_strconcat (_tmp78_, "    name     : ", NULL);
+       _tmp80_ = _tmp79_;
+       _tmp81_ = ((JsRenderJsRender*) self)->tree;
+       _tmp82_ = js_render_node_quoteString (_tmp81_, _tmp29_);
+       _tmp83_ = _tmp82_;
+       _tmp84_ = g_strconcat (_tmp80_, _tmp83_, NULL);
+       _tmp85_ = _tmp84_;
+       _tmp86_ = g_strconcat (_tmp85_, ",\n", NULL);
+       _tmp87_ = _tmp86_;
+       _tmp88_ = g_strconcat (_tmp87_, "    disabled : ", NULL);
+       _tmp89_ = _tmp88_;
+       _tmp90_ = g_strconcat (_tmp89_, _tmp34_, NULL);
+       _tmp91_ = _tmp90_;
+       _tmp92_ = g_strconcat (_tmp91_, ", \n", NULL);
+       _tmp93_ = _tmp92_;
+       _tmp94_ = g_strconcat (_tmp93_, "    permname : '", NULL);
+       _tmp95_ = _tmp94_;
+       _tmp96_ = g_strconcat (_tmp95_, _tmp36_, NULL);
+       _tmp97_ = _tmp96_;
+       _tmp98_ = g_strconcat (_tmp97_, "', \n", NULL);
+       _tmp99_ = _tmp98_;
+       _tmp100_ = g_strconcat (_tmp99_, "    _tree : function()\n", NULL);
+       _tmp101_ = _tmp100_;
+       _tmp102_ = g_strconcat (_tmp101_, "    {\n", NULL);
+       _tmp103_ = _tmp102_;
+       _tmp104_ = g_strconcat (_tmp103_, "        var _this = this;\n", NULL);
+       _tmp105_ = _tmp104_;
+       _tmp106_ = g_strconcat (_tmp105_, "        var MODULE = this;\n", NULL);
+       _tmp107_ = _tmp106_;
+       _tmp108_ = g_strconcat (_tmp107_, "        return ", NULL);
+       _tmp109_ = _tmp108_;
+       _tmp110_ = o;
+       _tmp111_ = g_strconcat (_tmp109_, _tmp110_, NULL);
+       _tmp112_ = _tmp111_;
+       _tmp113_ = g_strconcat (_tmp112_, ";", NULL);
+       _tmp114_ = _tmp113_;
+       _tmp115_ = g_strconcat (_tmp114_, "    }\n", NULL);
+       _tmp116_ = _tmp115_;
+       _tmp117_ = g_strconcat (_tmp116_, "});\n", NULL);
+       _tmp118_ = _tmp117_;
+       _g_free0 (_tmp116_);
+       _g_free0 (_tmp114_);
+       _g_free0 (_tmp112_);
+       _g_free0 (_tmp109_);
+       _g_free0 (_tmp107_);
+       _g_free0 (_tmp105_);
+       _g_free0 (_tmp103_);
+       _g_free0 (_tmp101_);
+       _g_free0 (_tmp99_);
+       _g_free0 (_tmp97_);
+       _g_free0 (_tmp95_);
+       _g_free0 (_tmp93_);
+       _g_free0 (_tmp91_);
+       _g_free0 (_tmp89_);
+       _g_free0 (_tmp87_);
+       _g_free0 (_tmp85_);
+       _g_free0 (_tmp83_);
+       _g_free0 (_tmp80_);
+       _g_free0 (_tmp78_);
+       _g_free0 (_tmp76_);
+       _g_free0 (_tmp73_);
+       _g_free0 (_tmp71_);
+       _g_free0 (_tmp69_);
+       _g_free0 (_tmp66_);
+       _g_free0 (_tmp64_);
+       _g_free0 (_tmp62_);
+       _g_free0 (_tmp59_);
+       _g_free0 (_tmp57_);
+       _g_free0 (_tmp55_);
+       _g_free0 (_tmp53_);
+       _g_free0 (_tmp51_);
+       _g_free0 (_tmp49_);
+       _g_free0 (_tmp47_);
+       _g_free0 (_tmp44_);
+       _g_free0 (_tmp42_);
+       result = _tmp118_;
+       _g_free0 (parent);
+       _g_free0 (_tmp17_);
+       _g_free0 (modkey);
+       _g_free0 (_tmp3_);
+       _g_regex_unref0 (reg);
+       _g_free0 (o);
+       return result;
+}
+
+
+static void _vala_array_add1 (gchar*** array, int* length, int* size, gchar* value) {
+       if ((*length) == (*size)) {
+               *size = (*size) ? (2 * (*size)) : 4;
+               *array = g_renew (gchar*, *array, (*size) + 1);
+       }
+       (*array)[(*length)++] = value;
+       (*array)[*length] = NULL;
+}
+
+
+static gchar string_get (const gchar* self, glong index) {
+       gchar result = '\0';
+       glong _tmp0_ = 0L;
+       gchar _tmp1_ = '\0';
+       g_return_val_if_fail (self != NULL, '\0');
+       _tmp0_ = index;
+       _tmp1_ = ((gchar*) self)[_tmp0_];
+       result = _tmp1_;
+       return result;
+}
+
+
+static void _vala_array_add2 (gchar*** array, int* length, int* size, gchar* value) {
+       if ((*length) == (*size)) {
+               *size = (*size) ? (2 * (*size)) : 4;
+               *array = g_renew (gchar*, *array, (*size) + 1);
+       }
+       (*array)[(*length)++] = value;
+       (*array)[*length] = NULL;
+}
+
+
+gchar* js_render_roo_guessName (JsRenderRoo* self, JsRenderNode* ar) {
+       gchar* result = NULL;
+       JsRenderNode* _tmp0_ = NULL;
+       gchar** ret = NULL;
+       gchar** _tmp1_ = NULL;
+       gint ret_length1 = 0;
+       gint _ret_size_ = 0;
+       gchar* _tmp2_ = NULL;
+       JsRenderNode* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gint _tmp6_ = 0;
+       gint _tmp7_ = 0;
+       gboolean _tmp8_ = FALSE;
+       gchar** _tmp12_ = NULL;
+       gint _tmp12__length1 = 0;
+       gchar* _tmp13_ = NULL;
+       JsRenderNode* _tmp14_ = NULL;
+       gchar* _tmp15_ = NULL;
+       gchar* _tmp16_ = NULL;
+       gint _tmp17_ = 0;
+       gint _tmp18_ = 0;
+       gboolean _tmp19_ = FALSE;
+       gchar* xtype = NULL;
+       JsRenderNode* _tmp20_ = NULL;
+       gchar* _tmp21_ = NULL;
+       const gchar* _tmp22_ = NULL;
+       gchar _tmp23_ = '\0';
+       const gchar* _tmp26_ = NULL;
+       gboolean _tmp27_ = FALSE;
+       gchar** _tmp29_ = NULL;
+       gint _tmp29__length1 = 0;
+       const gchar* _tmp30_ = NULL;
+       gchar* _tmp31_ = NULL;
+       gchar* str = NULL;
+       gchar** _tmp32_ = NULL;
+       gint _tmp32__length1 = 0;
+       gchar* _tmp33_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = ar;
+       if (_tmp0_ == NULL) {
+               result = NULL;
+               return result;
+       }
+       _tmp1_ = g_new0 (gchar*, 0 + 1);
+       ret = _tmp1_;
+       ret_length1 = 0;
+       _ret_size_ = ret_length1;
+       _tmp3_ = ar;
+       _tmp4_ = js_render_node_get (_tmp3_, "|xns");
+       _tmp5_ = _tmp4_;
+       _tmp6_ = strlen (_tmp5_);
+       _tmp7_ = _tmp6_;
+       _tmp8_ = _tmp7_ < 1;
+       _g_free0 (_tmp5_);
+       if (_tmp8_) {
+               gchar* _tmp9_ = NULL;
+               _tmp9_ = g_strdup ("Roo");
+               _g_free0 (_tmp2_);
+               _tmp2_ = _tmp9_;
+       } else {
+               JsRenderNode* _tmp10_ = NULL;
+               gchar* _tmp11_ = NULL;
+               _tmp10_ = ar;
+               _tmp11_ = js_render_node_get (_tmp10_, "|xns");
+               _g_free0 (_tmp2_);
+               _tmp2_ = _tmp11_;
+       }
+       _tmp12_ = ret;
+       _tmp12__length1 = ret_length1;
+       _tmp13_ = g_strdup (_tmp2_);
+       _vala_array_add1 (&ret, &ret_length1, &_ret_size_, _tmp13_);
+       _tmp14_ = ar;
+       _tmp15_ = js_render_node_get (_tmp14_, "xtype");
+       _tmp16_ = _tmp15_;
+       _tmp17_ = strlen (_tmp16_);
+       _tmp18_ = _tmp17_;
+       _tmp19_ = _tmp18_ < 1;
+       _g_free0 (_tmp16_);
+       if (_tmp19_) {
+               result = NULL;
+               _g_free0 (_tmp2_);
+               ret = (_vala_array_free (ret, ret_length1, (GDestroyNotify) g_free), NULL);
+               return result;
+       }
+       _tmp20_ = ar;
+       _tmp21_ = js_render_node_get (_tmp20_, "xtype");
+       xtype = _tmp21_;
+       _tmp22_ = xtype;
+       _tmp23_ = string_get (_tmp22_, (glong) 0);
+       if (_tmp23_ == '*') {
+               const gchar* _tmp24_ = NULL;
+               gchar* _tmp25_ = NULL;
+               _tmp24_ = xtype;
+               _tmp25_ = string_substring (_tmp24_, (glong) 1, (glong) (-1));
+               _g_free0 (xtype);
+               xtype = _tmp25_;
+       }
+       _tmp26_ = xtype;
+       _tmp27_ = g_regex_match_simple ("^Roo", _tmp26_, 0, 0);
+       if (!_tmp27_) {
+               gchar** _tmp28_ = NULL;
+               _tmp28_ = g_new0 (gchar*, 0 + 1);
+               ret = (_vala_array_free (ret, ret_length1, (GDestroyNotify) g_free), NULL);
+               ret = _tmp28_;
+               ret_length1 = 0;
+               _ret_size_ = ret_length1;
+       }
+       _tmp29_ = ret;
+       _tmp29__length1 = ret_length1;
+       _tmp30_ = xtype;
+       _tmp31_ = g_strdup (_tmp30_);
+       _vala_array_add2 (&ret, &ret_length1, &_ret_size_, _tmp31_);
+       _tmp32_ = ret;
+       _tmp32__length1 = ret_length1;
+       _tmp33_ = g_strjoin (".", _tmp32_, NULL);
+       str = _tmp33_;
+       result = str;
+       _g_free0 (xtype);
+       _g_free0 (_tmp2_);
+       ret = (_vala_array_free (ret, ret_length1, (GDestroyNotify) g_free), NULL);
+       return result;
+}
+
+
+static gchar* js_render_roo_getHelpUrl (JsRenderRoo* self, const gchar* cls) {
+       gchar* result = NULL;
+       const gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (cls != NULL, NULL);
+       _tmp0_ = cls;
+       _tmp1_ = g_strconcat ("http://www.roojs.com/roojs1/docs/symbols/", _tmp0_, NULL);
+       _tmp2_ = _tmp1_;
+       _tmp3_ = g_strconcat (_tmp2_, ".html", NULL);
+       _tmp4_ = _tmp3_;
+       _g_free0 (_tmp2_);
+       result = _tmp4_;
+       return result;
+}
+
+
+static void js_render_roo_class_init (JsRenderRooClass * klass) {
+       js_render_roo_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (JsRenderRooPrivate));
+       G_OBJECT_CLASS (klass)->finalize = js_render_roo_finalize;
+}
+
+
+static void js_render_roo_instance_init (JsRenderRoo * self) {
+       self->priv = JS_RENDER_ROO_GET_PRIVATE (self);
+}
+
+
+static void js_render_roo_finalize (GObject* obj) {
+       JsRenderRoo * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, JS_RENDER_TYPE_ROO, JsRenderRoo);
+       _g_free0 (self->priv->region);
+       G_OBJECT_CLASS (js_render_roo_parent_class)->finalize (obj);
+}
+
+
+GType js_render_roo_get_type (void) {
+       static volatile gsize js_render_roo_type_id__volatile = 0;
+       if (g_once_init_enter (&js_render_roo_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (JsRenderRooClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) js_render_roo_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (JsRenderRoo), 0, (GInstanceInitFunc) js_render_roo_instance_init, NULL };
+               GType js_render_roo_type_id;
+               js_render_roo_type_id = g_type_register_static (JS_RENDER_TYPE_JS_RENDER, "JsRenderRoo", &g_define_type_info, 0);
+               g_once_init_leave (&js_render_roo_type_id__volatile, js_render_roo_type_id);
+       }
+       return js_render_roo_type_id__volatile;
+}
+
+
+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);
+}
+
+
+static gint _vala_array_length (gpointer array) {
+       int length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
+
+
index 8026177..dcc4f0e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -12,8 +12,8 @@ all:
                JsRender/*.vala \
                Project/*.vala \
                Palete/*.vala \
-               Builder4/*.vala \
                -o /tmp/test
+#              Builder4/*.vala \
 
 clean:
        rm -rf /tmp/test
diff --git a/Palete/Gir.vala.c b/Palete/Gir.vala.c
new file mode 100644 (file)
index 0000000..b981726
--- /dev/null
@@ -0,0 +1,2310 @@
+/* Gir.vala.c generated by valac 0.24.0, the Vala compiler
+ * generated from Gir.vala, do not modify */
+
+/* valac -g  --pkg gee-1.0 --pkg libxml-2.0 --pkg gobject-introspection-1.0 --pkg json-glib-1.0  Palete/Gir.vala -o /tmp/Gir*/
+/* 
+public static int main (string[] args) {
+    
+    var g = new Palete.Gir("Gtk");
+    var generator = new Json.Generator ();
+    var n = new Json.Node(Json.NodeType.OBJECT);
+    n.set_object(g.toJSON());
+    generator.set_root(n);
+    generator.indent = 4;
+    generator.pretty = true;
+    
+    print(generator.to_data(null));
+    return 0;
+}
+*/
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+#include <json-glib/json-glib.h>
+#include <girepository.h>
+#include <libxml/tree.h>
+#include <libxml/parser.h>
+
+
+#define PALETE_TYPE_GIR_OBJECT (palete_gir_object_get_type ())
+#define PALETE_GIR_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PALETE_TYPE_GIR_OBJECT, PaleteGirObject))
+#define PALETE_GIR_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PALETE_TYPE_GIR_OBJECT, PaleteGirObjectClass))
+#define PALETE_IS_GIR_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PALETE_TYPE_GIR_OBJECT))
+#define PALETE_IS_GIR_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PALETE_TYPE_GIR_OBJECT))
+#define PALETE_GIR_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PALETE_TYPE_GIR_OBJECT, PaleteGirObjectClass))
+
+typedef struct _PaleteGirObject PaleteGirObject;
+typedef struct _PaleteGirObjectClass PaleteGirObjectClass;
+typedef struct _PaleteGirObjectPrivate PaleteGirObjectPrivate;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define __g_list_free__g_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_free0_ (var), NULL)))
+
+#define PALETE_TYPE_GIR (palete_gir_get_type ())
+#define PALETE_GIR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PALETE_TYPE_GIR, PaleteGir))
+#define PALETE_GIR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PALETE_TYPE_GIR, PaleteGirClass))
+#define PALETE_IS_GIR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PALETE_TYPE_GIR))
+#define PALETE_IS_GIR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PALETE_TYPE_GIR))
+#define PALETE_GIR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PALETE_TYPE_GIR, PaleteGirClass))
+
+typedef struct _PaleteGir PaleteGir;
+typedef struct _PaleteGirClass PaleteGirClass;
+#define _json_object_unref0(var) ((var == NULL) ? NULL : (var = (json_object_unref (var), NULL)))
+#define _json_array_unref0(var) ((var == NULL) ? NULL : (var = (json_array_unref (var), NULL)))
+typedef struct _PaleteGirPrivate PaleteGirPrivate;
+#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+
+struct _PaleteGirObject {
+       GObject parent_instance;
+       PaleteGirObjectPrivate * priv;
+       gchar* name;
+       gchar* ns;
+       gchar* type;
+       gchar* nodetype;
+       gchar* package;
+       PaleteGirObject* paramset;
+       PaleteGirObject* return_value;
+       gboolean is_instance;
+       gboolean is_array;
+       gboolean is_varargs;
+       gchar* parent;
+       gchar* value;
+       GeeHashMap* params;
+       GList* implements;
+       GList* inherits;
+       GeeHashMap* ctors;
+       GeeHashMap* methods;
+       GeeHashMap* includes;
+       GeeHashMap* classes;
+       GeeHashMap* props;
+       GeeHashMap* consts;
+       GeeHashMap* signals;
+       gchar* doc;
+};
+
+struct _PaleteGirObjectClass {
+       GObjectClass parent_class;
+};
+
+struct _PaleteGirObjectPrivate {
+       gboolean is_overlaid;
+};
+
+struct _PaleteGir {
+       PaleteGirObject parent_instance;
+       PaleteGirPrivate * priv;
+};
+
+struct _PaleteGirClass {
+       PaleteGirObjectClass parent_class;
+};
+
+
+static gpointer palete_gir_object_parent_class = NULL;
+static gpointer palete_gir_parent_class = NULL;
+static GeeHashMap* palete_gir_cache;
+static GeeHashMap* palete_gir_cache = NULL;
+
+GType palete_gir_object_get_type (void) G_GNUC_CONST;
+#define PALETE_GIR_OBJECT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PALETE_TYPE_GIR_OBJECT, PaleteGirObjectPrivate))
+enum  {
+       PALETE_GIR_OBJECT_DUMMY_PROPERTY
+};
+static void _g_free0_ (gpointer var);
+static void _g_list_free__g_free0_ (GList* self);
+PaleteGirObject* palete_gir_object_new (const gchar* nodetype, const gchar* n);
+PaleteGirObject* palete_gir_object_construct (GType object_type, const gchar* nodetype, const gchar* n);
+GType palete_gir_get_type (void) G_GNUC_CONST;
+void palete_gir_object_overlayParent (PaleteGirObject* self, PaleteGir* in_gir);
+PaleteGirObject* palete_gir_object_clsToObject (PaleteGirObject* self, PaleteGir* in_gir, const gchar* in_pn);
+void palete_gir_object_copyFrom (PaleteGirObject* self, PaleteGirObject* pcls, gboolean is_interface);
+PaleteGir* palete_gir_factory (const gchar* ns);
+gchar* palete_gir_object_fqn (PaleteGirObject* self);
+JsonObject* palete_gir_object_toJSON (PaleteGirObject* self);
+JsonArray* palete_gir_object_toJSONArrayString (PaleteGirObject* self, GList* map);
+JsonObject* palete_gir_object_toJSONObject (PaleteGirObject* self, GeeHashMap* map);
+JsonObject* palete_gir_object_toJSONObjectString (PaleteGirObject* self, GeeHashMap* map);
+static void palete_gir_object_finalize (GObject* obj);
+enum  {
+       PALETE_GIR_DUMMY_PROPERTY
+};
+PaleteGir* palete_gir_new (const gchar* ns);
+PaleteGir* palete_gir_construct (GType object_type, const gchar* ns);
+void palete_gir_walk (PaleteGir* self, xmlNode* element, PaleteGirObject* parent);
+gchar* palete_gir_doc (PaleteGir* self, const gchar* what);
+static void palete_gir_finalize (GObject* obj);
+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);
+static gint _vala_array_length (gpointer array);
+
+
+static void _g_free0_ (gpointer var) {
+       var = (g_free (var), NULL);
+}
+
+
+static void _g_list_free__g_free0_ (GList* self) {
+       g_list_foreach (self, (GFunc) _g_free0_, NULL);
+       g_list_free (self);
+}
+
+
+PaleteGirObject* palete_gir_object_construct (GType object_type, const gchar* nodetype, const gchar* n) {
+       PaleteGirObject * self = NULL;
+       const gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       GeeHashMap* _tmp7_ = NULL;
+       GeeHashMap* _tmp8_ = NULL;
+       GeeHashMap* _tmp9_ = NULL;
+       GeeHashMap* _tmp10_ = NULL;
+       GeeHashMap* _tmp11_ = NULL;
+       GeeHashMap* _tmp12_ = NULL;
+       GeeHashMap* _tmp13_ = NULL;
+       GeeHashMap* _tmp14_ = NULL;
+       g_return_val_if_fail (nodetype != NULL, NULL);
+       g_return_val_if_fail (n != NULL, NULL);
+       self = (PaleteGirObject*) g_object_new (object_type, NULL);
+       _tmp0_ = nodetype;
+       _tmp1_ = g_strdup (_tmp0_);
+       _g_free0 (self->nodetype);
+       self->nodetype = _tmp1_;
+       _tmp2_ = n;
+       _tmp3_ = g_strdup (_tmp2_);
+       _g_free0 (self->name);
+       self->name = _tmp3_;
+       _tmp4_ = g_strdup ("");
+       _g_free0 (self->ns);
+       self->ns = _tmp4_;
+       _tmp5_ = g_strdup ("");
+       _g_free0 (self->parent);
+       self->parent = _tmp5_;
+       _tmp6_ = g_strdup ("");
+       _g_free0 (self->type);
+       self->type = _tmp6_;
+       self->is_array = FALSE;
+       self->is_instance = FALSE;
+       self->is_varargs = FALSE;
+       __g_list_free__g_free0_0 (self->implements);
+       self->implements = NULL;
+       __g_list_free__g_free0_0 (self->inherits);
+       self->inherits = NULL;
+       _tmp7_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
+       _g_object_unref0 (self->includes);
+       self->includes = _tmp7_;
+       _tmp8_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, PALETE_TYPE_GIR_OBJECT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+       _g_object_unref0 (self->params);
+       self->params = _tmp8_;
+       _tmp9_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, PALETE_TYPE_GIR_OBJECT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+       _g_object_unref0 (self->ctors);
+       self->ctors = _tmp9_;
+       _tmp10_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, PALETE_TYPE_GIR_OBJECT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+       _g_object_unref0 (self->methods);
+       self->methods = _tmp10_;
+       _tmp11_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, PALETE_TYPE_GIR_OBJECT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+       _g_object_unref0 (self->classes);
+       self->classes = _tmp11_;
+       _tmp12_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, PALETE_TYPE_GIR_OBJECT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+       _g_object_unref0 (self->props);
+       self->props = _tmp12_;
+       _tmp13_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, PALETE_TYPE_GIR_OBJECT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+       _g_object_unref0 (self->consts);
+       self->consts = _tmp13_;
+       _tmp14_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, PALETE_TYPE_GIR_OBJECT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+       _g_object_unref0 (self->signals);
+       self->signals = _tmp14_;
+       self->priv->is_overlaid = FALSE;
+       return self;
+}
+
+
+PaleteGirObject* palete_gir_object_new (const gchar* nodetype, const gchar* n) {
+       return palete_gir_object_construct (PALETE_TYPE_GIR_OBJECT, nodetype, n);
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+       return self ? g_object_ref (self) : NULL;
+}
+
+
+void palete_gir_object_overlayParent (PaleteGirObject* self, PaleteGir* in_gir) {
+       PaleteGir* gir = NULL;
+       PaleteGir* _tmp0_ = NULL;
+       PaleteGir* _tmp1_ = NULL;
+       gboolean _tmp2_ = FALSE;
+       const gchar* _tmp3_ = NULL;
+       gint _tmp4_ = 0;
+       gint _tmp5_ = 0;
+       PaleteGirObject* pcls = NULL;
+       PaleteGir* _tmp7_ = NULL;
+       const gchar* _tmp8_ = NULL;
+       PaleteGirObject* _tmp9_ = NULL;
+       PaleteGirObject* _tmp10_ = NULL;
+       PaleteGir* _tmp11_ = NULL;
+       PaleteGirObject* _tmp12_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (in_gir != NULL);
+       _tmp0_ = in_gir;
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+       gir = _tmp1_;
+       _tmp3_ = self->parent;
+       _tmp4_ = strlen (_tmp3_);
+       _tmp5_ = _tmp4_;
+       if (_tmp5_ < 1) {
+               _tmp2_ = TRUE;
+       } else {
+               gboolean _tmp6_ = FALSE;
+               _tmp6_ = self->priv->is_overlaid;
+               _tmp2_ = _tmp6_;
+       }
+       if (_tmp2_) {
+               self->priv->is_overlaid = TRUE;
+               _g_object_unref0 (gir);
+               return;
+       }
+       _tmp7_ = gir;
+       _tmp8_ = self->parent;
+       _tmp9_ = palete_gir_object_clsToObject (self, _tmp7_, _tmp8_);
+       pcls = _tmp9_;
+       _tmp10_ = pcls;
+       _tmp11_ = gir;
+       palete_gir_object_overlayParent (_tmp10_, _tmp11_);
+       _tmp12_ = pcls;
+       palete_gir_object_copyFrom (self, _tmp12_, FALSE);
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp13_ = FALSE;
+                       _tmp13_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp15_ = 0;
+                               GList* _tmp16_ = NULL;
+                               guint _tmp17_ = 0U;
+                               PaleteGirObject* picls = NULL;
+                               PaleteGir* _tmp18_ = NULL;
+                               GList* _tmp19_ = NULL;
+                               gint _tmp20_ = 0;
+                               gconstpointer _tmp21_ = NULL;
+                               PaleteGirObject* _tmp22_ = NULL;
+                               PaleteGirObject* _tmp23_ = NULL;
+                               if (!_tmp13_) {
+                                       gint _tmp14_ = 0;
+                                       _tmp14_ = i;
+                                       i = _tmp14_ + 1;
+                               }
+                               _tmp13_ = FALSE;
+                               _tmp15_ = i;
+                               _tmp16_ = self->implements;
+                               _tmp17_ = g_list_length (_tmp16_);
+                               if (!(((guint) _tmp15_) < _tmp17_)) {
+                                       break;
+                               }
+                               _tmp18_ = gir;
+                               _tmp19_ = self->implements;
+                               _tmp20_ = i;
+                               _tmp21_ = g_list_nth_data (_tmp19_, (guint) _tmp20_);
+                               _tmp22_ = palete_gir_object_clsToObject (self, _tmp18_, (const gchar*) _tmp21_);
+                               picls = _tmp22_;
+                               _tmp23_ = picls;
+                               palete_gir_object_copyFrom (self, _tmp23_, TRUE);
+                               _g_object_unref0 (picls);
+                       }
+               }
+       }
+       self->priv->is_overlaid = TRUE;
+       _g_object_unref0 (pcls);
+       _g_object_unref0 (gir);
+}
+
+
+static gboolean string_contains (const gchar* self, const gchar* needle) {
+       gboolean result = FALSE;
+       const gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (needle != NULL, FALSE);
+       _tmp0_ = needle;
+       _tmp1_ = strstr ((gchar*) self, (gchar*) _tmp0_);
+       result = _tmp1_ != NULL;
+       return result;
+}
+
+
+PaleteGirObject* palete_gir_object_clsToObject (PaleteGirObject* self, PaleteGir* in_gir, const gchar* in_pn) {
+       PaleteGirObject* result = NULL;
+       gchar* pn = NULL;
+       const gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       PaleteGir* gir = NULL;
+       PaleteGir* _tmp2_ = NULL;
+       PaleteGir* _tmp3_ = NULL;
+       const gchar* _tmp4_ = NULL;
+       gboolean _tmp5_ = FALSE;
+       PaleteGir* _tmp18_ = NULL;
+       GeeHashMap* _tmp19_ = NULL;
+       const gchar* _tmp20_ = NULL;
+       gpointer _tmp21_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (in_gir != NULL, NULL);
+       g_return_val_if_fail (in_pn != NULL, NULL);
+       _tmp0_ = in_pn;
+       _tmp1_ = g_strdup (_tmp0_);
+       pn = _tmp1_;
+       _tmp2_ = in_gir;
+       _tmp3_ = _g_object_ref0 (_tmp2_);
+       gir = _tmp3_;
+       _tmp4_ = self->parent;
+       _tmp5_ = string_contains (_tmp4_, ".");
+       if (_tmp5_) {
+               const gchar* _tmp6_ = NULL;
+               gchar** _tmp7_ = NULL;
+               gchar** _tmp8_ = NULL;
+               gchar** _tmp9_ = NULL;
+               gint _tmp9__length1 = 0;
+               const gchar* _tmp10_ = NULL;
+               PaleteGir* _tmp11_ = NULL;
+               const gchar* _tmp12_ = NULL;
+               gchar** _tmp13_ = NULL;
+               gchar** _tmp14_ = NULL;
+               gchar** _tmp15_ = NULL;
+               gint _tmp15__length1 = 0;
+               const gchar* _tmp16_ = NULL;
+               gchar* _tmp17_ = NULL;
+               _tmp6_ = self->parent;
+               _tmp8_ = _tmp7_ = g_strsplit (_tmp6_, ".", 0);
+               _tmp9_ = _tmp8_;
+               _tmp9__length1 = _vala_array_length (_tmp7_);
+               _tmp10_ = _tmp9_[0];
+               _tmp11_ = palete_gir_factory (_tmp10_);
+               _g_object_unref0 (gir);
+               gir = _tmp11_;
+               _tmp9_ = (_vala_array_free (_tmp9_, _tmp9__length1, (GDestroyNotify) g_free), NULL);
+               _tmp12_ = self->parent;
+               _tmp14_ = _tmp13_ = g_strsplit (_tmp12_, ".", 0);
+               _tmp15_ = _tmp14_;
+               _tmp15__length1 = _vala_array_length (_tmp13_);
+               _tmp16_ = _tmp15_[1];
+               _tmp17_ = g_strdup (_tmp16_);
+               _g_free0 (pn);
+               pn = _tmp17_;
+               _tmp15_ = (_vala_array_free (_tmp15_, _tmp15__length1, (GDestroyNotify) g_free), NULL);
+       }
+       _tmp18_ = gir;
+       _tmp19_ = ((PaleteGirObject*) _tmp18_)->classes;
+       _tmp20_ = pn;
+       _tmp21_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp19_, _tmp20_);
+       result = (PaleteGirObject*) _tmp21_;
+       _g_object_unref0 (gir);
+       _g_free0 (pn);
+       return result;
+}
+
+
+gchar* palete_gir_object_fqn (PaleteGirObject* self) {
+       gchar* result = NULL;
+       const gchar* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = self->ns;
+       _tmp1_ = self->name;
+       _tmp2_ = g_strconcat (_tmp0_, _tmp1_, NULL);
+       result = _tmp2_;
+       return result;
+}
+
+
+void palete_gir_object_copyFrom (PaleteGirObject* self, PaleteGirObject* pcls, gboolean is_interface) {
+       PaleteGirObject* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       GeeMapIterator* iter = NULL;
+       PaleteGirObject* _tmp2_ = NULL;
+       GeeHashMap* _tmp3_ = NULL;
+       GeeMapIterator* _tmp4_ = NULL;
+       PaleteGirObject* _tmp21_ = NULL;
+       GeeHashMap* _tmp22_ = NULL;
+       GeeMapIterator* _tmp23_ = NULL;
+       PaleteGirObject* _tmp40_ = NULL;
+       GeeHashMap* _tmp41_ = NULL;
+       GeeMapIterator* _tmp42_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (pcls != NULL);
+       _tmp0_ = pcls;
+       _tmp1_ = palete_gir_object_fqn (_tmp0_);
+       self->inherits = g_list_append (self->inherits, _tmp1_);
+       _tmp2_ = pcls;
+       _tmp3_ = _tmp2_->methods;
+       _tmp4_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp3_);
+       iter = _tmp4_;
+       while (TRUE) {
+               GeeMapIterator* _tmp5_ = NULL;
+               gboolean _tmp6_ = FALSE;
+               GeeHashMap* _tmp7_ = NULL;
+               GeeMapIterator* _tmp8_ = NULL;
+               gpointer _tmp9_ = NULL;
+               gchar* _tmp10_ = NULL;
+               gpointer _tmp11_ = NULL;
+               PaleteGirObject* _tmp12_ = NULL;
+               gboolean _tmp13_ = FALSE;
+               GeeHashMap* _tmp14_ = NULL;
+               GeeMapIterator* _tmp15_ = NULL;
+               gpointer _tmp16_ = NULL;
+               gchar* _tmp17_ = NULL;
+               GeeMapIterator* _tmp18_ = NULL;
+               gpointer _tmp19_ = NULL;
+               PaleteGirObject* _tmp20_ = NULL;
+               _tmp5_ = iter;
+               _tmp6_ = gee_map_iterator_next (_tmp5_);
+               if (!_tmp6_) {
+                       break;
+               }
+               _tmp7_ = self->methods;
+               _tmp8_ = iter;
+               _tmp9_ = gee_map_iterator_get_key (_tmp8_);
+               _tmp10_ = (gchar*) _tmp9_;
+               _tmp11_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp7_, _tmp10_);
+               _tmp12_ = (PaleteGirObject*) _tmp11_;
+               _tmp13_ = NULL == _tmp12_;
+               _g_object_unref0 (_tmp12_);
+               _g_free0 (_tmp10_);
+               if (_tmp13_) {
+                       continue;
+               }
+               _tmp14_ = self->methods;
+               _tmp15_ = iter;
+               _tmp16_ = gee_map_iterator_get_key (_tmp15_);
+               _tmp17_ = (gchar*) _tmp16_;
+               _tmp18_ = iter;
+               _tmp19_ = gee_map_iterator_get_value (_tmp18_);
+               _tmp20_ = (PaleteGirObject*) _tmp19_;
+               gee_abstract_map_set ((GeeAbstractMap*) _tmp14_, _tmp17_, _tmp20_);
+               _g_object_unref0 (_tmp20_);
+               _g_free0 (_tmp17_);
+       }
+       _tmp21_ = pcls;
+       _tmp22_ = _tmp21_->props;
+       _tmp23_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp22_);
+       _g_object_unref0 (iter);
+       iter = _tmp23_;
+       while (TRUE) {
+               GeeMapIterator* _tmp24_ = NULL;
+               gboolean _tmp25_ = FALSE;
+               GeeHashMap* _tmp26_ = NULL;
+               GeeMapIterator* _tmp27_ = NULL;
+               gpointer _tmp28_ = NULL;
+               gchar* _tmp29_ = NULL;
+               gpointer _tmp30_ = NULL;
+               PaleteGirObject* _tmp31_ = NULL;
+               gboolean _tmp32_ = FALSE;
+               GeeHashMap* _tmp33_ = NULL;
+               GeeMapIterator* _tmp34_ = NULL;
+               gpointer _tmp35_ = NULL;
+               gchar* _tmp36_ = NULL;
+               GeeMapIterator* _tmp37_ = NULL;
+               gpointer _tmp38_ = NULL;
+               PaleteGirObject* _tmp39_ = NULL;
+               _tmp24_ = iter;
+               _tmp25_ = gee_map_iterator_next (_tmp24_);
+               if (!_tmp25_) {
+                       break;
+               }
+               _tmp26_ = self->props;
+               _tmp27_ = iter;
+               _tmp28_ = gee_map_iterator_get_key (_tmp27_);
+               _tmp29_ = (gchar*) _tmp28_;
+               _tmp30_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp26_, _tmp29_);
+               _tmp31_ = (PaleteGirObject*) _tmp30_;
+               _tmp32_ = NULL == _tmp31_;
+               _g_object_unref0 (_tmp31_);
+               _g_free0 (_tmp29_);
+               if (_tmp32_) {
+                       continue;
+               }
+               _tmp33_ = self->props;
+               _tmp34_ = iter;
+               _tmp35_ = gee_map_iterator_get_key (_tmp34_);
+               _tmp36_ = (gchar*) _tmp35_;
+               _tmp37_ = iter;
+               _tmp38_ = gee_map_iterator_get_value (_tmp37_);
+               _tmp39_ = (PaleteGirObject*) _tmp38_;
+               gee_abstract_map_set ((GeeAbstractMap*) _tmp33_, _tmp36_, _tmp39_);
+               _g_object_unref0 (_tmp39_);
+               _g_free0 (_tmp36_);
+       }
+       _tmp40_ = pcls;
+       _tmp41_ = _tmp40_->signals;
+       _tmp42_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp41_);
+       _g_object_unref0 (iter);
+       iter = _tmp42_;
+       while (TRUE) {
+               GeeMapIterator* _tmp43_ = NULL;
+               gboolean _tmp44_ = FALSE;
+               GeeHashMap* _tmp45_ = NULL;
+               GeeMapIterator* _tmp46_ = NULL;
+               gpointer _tmp47_ = NULL;
+               gchar* _tmp48_ = NULL;
+               gpointer _tmp49_ = NULL;
+               PaleteGirObject* _tmp50_ = NULL;
+               gboolean _tmp51_ = FALSE;
+               GeeHashMap* _tmp52_ = NULL;
+               GeeMapIterator* _tmp53_ = NULL;
+               gpointer _tmp54_ = NULL;
+               gchar* _tmp55_ = NULL;
+               GeeMapIterator* _tmp56_ = NULL;
+               gpointer _tmp57_ = NULL;
+               PaleteGirObject* _tmp58_ = NULL;
+               _tmp43_ = iter;
+               _tmp44_ = gee_map_iterator_next (_tmp43_);
+               if (!_tmp44_) {
+                       break;
+               }
+               _tmp45_ = self->signals;
+               _tmp46_ = iter;
+               _tmp47_ = gee_map_iterator_get_key (_tmp46_);
+               _tmp48_ = (gchar*) _tmp47_;
+               _tmp49_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp45_, _tmp48_);
+               _tmp50_ = (PaleteGirObject*) _tmp49_;
+               _tmp51_ = NULL == _tmp50_;
+               _g_object_unref0 (_tmp50_);
+               _g_free0 (_tmp48_);
+               if (_tmp51_) {
+                       continue;
+               }
+               _tmp52_ = self->signals;
+               _tmp53_ = iter;
+               _tmp54_ = gee_map_iterator_get_key (_tmp53_);
+               _tmp55_ = (gchar*) _tmp54_;
+               _tmp56_ = iter;
+               _tmp57_ = gee_map_iterator_get_value (_tmp56_);
+               _tmp58_ = (PaleteGirObject*) _tmp57_;
+               gee_abstract_map_set ((GeeAbstractMap*) _tmp52_, _tmp55_, _tmp58_);
+               _g_object_unref0 (_tmp58_);
+               _g_free0 (_tmp55_);
+       }
+       _g_object_unref0 (iter);
+}
+
+
+JsonObject* palete_gir_object_toJSON (PaleteGirObject* self) {
+       JsonObject* result = NULL;
+       JsonObject* r = NULL;
+       JsonObject* _tmp0_ = NULL;
+       JsonObject* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       JsonObject* _tmp3_ = NULL;
+       const gchar* _tmp4_ = NULL;
+       const gchar* _tmp5_ = NULL;
+       gint _tmp6_ = 0;
+       gint _tmp7_ = 0;
+       gboolean _tmp10_ = FALSE;
+       const gchar* _tmp11_ = NULL;
+       GList* _tmp17_ = NULL;
+       guint _tmp18_ = 0U;
+       GeeHashMap* _tmp22_ = NULL;
+       gint _tmp23_ = 0;
+       gint _tmp24_ = 0;
+       GeeHashMap* _tmp28_ = NULL;
+       gint _tmp29_ = 0;
+       gint _tmp30_ = 0;
+       GeeHashMap* _tmp34_ = NULL;
+       gint _tmp35_ = 0;
+       gint _tmp36_ = 0;
+       GeeHashMap* _tmp40_ = NULL;
+       gint _tmp41_ = 0;
+       gint _tmp42_ = 0;
+       GeeHashMap* _tmp46_ = NULL;
+       gint _tmp47_ = 0;
+       gint _tmp48_ = 0;
+       GeeHashMap* _tmp52_ = NULL;
+       gint _tmp53_ = 0;
+       gint _tmp54_ = 0;
+       GeeHashMap* _tmp58_ = NULL;
+       gint _tmp59_ = 0;
+       gint _tmp60_ = 0;
+       GeeHashMap* _tmp64_ = NULL;
+       gint _tmp65_ = 0;
+       gint _tmp66_ = 0;
+       PaleteGirObject* _tmp70_ = NULL;
+       PaleteGirObject* _tmp74_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = json_object_new ();
+       r = _tmp0_;
+       _tmp1_ = r;
+       _tmp2_ = self->nodetype;
+       json_object_set_string_member (_tmp1_, "nodetype", _tmp2_);
+       _tmp3_ = r;
+       _tmp4_ = self->name;
+       json_object_set_string_member (_tmp3_, "name", _tmp4_);
+       _tmp5_ = self->type;
+       _tmp6_ = strlen (_tmp5_);
+       _tmp7_ = _tmp6_;
+       if (_tmp7_ > 0) {
+               JsonObject* _tmp8_ = NULL;
+               const gchar* _tmp9_ = NULL;
+               _tmp8_ = r;
+               _tmp9_ = self->type;
+               json_object_set_string_member (_tmp8_, "type", _tmp9_);
+       }
+       _tmp11_ = self->parent;
+       if (_tmp11_ != NULL) {
+               const gchar* _tmp12_ = NULL;
+               gint _tmp13_ = 0;
+               gint _tmp14_ = 0;
+               _tmp12_ = self->parent;
+               _tmp13_ = strlen (_tmp12_);
+               _tmp14_ = _tmp13_;
+               _tmp10_ = _tmp14_ > 0;
+       } else {
+               _tmp10_ = FALSE;
+       }
+       if (_tmp10_) {
+               JsonObject* _tmp15_ = NULL;
+               const gchar* _tmp16_ = NULL;
+               _tmp15_ = r;
+               _tmp16_ = self->parent;
+               json_object_set_string_member (_tmp15_, "parent", _tmp16_);
+       }
+       _tmp17_ = self->implements;
+       _tmp18_ = g_list_length (_tmp17_);
+       if (_tmp18_ > ((guint) 0)) {
+               JsonObject* _tmp19_ = NULL;
+               GList* _tmp20_ = NULL;
+               JsonArray* _tmp21_ = NULL;
+               _tmp19_ = r;
+               _tmp20_ = self->implements;
+               _tmp21_ = palete_gir_object_toJSONArrayString (self, _tmp20_);
+               json_object_set_array_member (_tmp19_, "length", _tmp21_);
+       }
+       _tmp22_ = self->params;
+       _tmp23_ = gee_abstract_map_get_size ((GeeMap*) _tmp22_);
+       _tmp24_ = _tmp23_;
+       if (_tmp24_ > 0) {
+               JsonObject* _tmp25_ = NULL;
+               GeeHashMap* _tmp26_ = NULL;
+               JsonObject* _tmp27_ = NULL;
+               _tmp25_ = r;
+               _tmp26_ = self->params;
+               _tmp27_ = palete_gir_object_toJSONObject (self, _tmp26_);
+               json_object_set_object_member (_tmp25_, "params", _tmp27_);
+       }
+       _tmp28_ = self->ctors;
+       _tmp29_ = gee_abstract_map_get_size ((GeeMap*) _tmp28_);
+       _tmp30_ = _tmp29_;
+       if (_tmp30_ > 0) {
+               JsonObject* _tmp31_ = NULL;
+               GeeHashMap* _tmp32_ = NULL;
+               JsonObject* _tmp33_ = NULL;
+               _tmp31_ = r;
+               _tmp32_ = self->ctors;
+               _tmp33_ = palete_gir_object_toJSONObject (self, _tmp32_);
+               json_object_set_object_member (_tmp31_, "ctors", _tmp33_);
+       }
+       _tmp34_ = self->methods;
+       _tmp35_ = gee_abstract_map_get_size ((GeeMap*) _tmp34_);
+       _tmp36_ = _tmp35_;
+       if (_tmp36_ > 0) {
+               JsonObject* _tmp37_ = NULL;
+               GeeHashMap* _tmp38_ = NULL;
+               JsonObject* _tmp39_ = NULL;
+               _tmp37_ = r;
+               _tmp38_ = self->methods;
+               _tmp39_ = palete_gir_object_toJSONObject (self, _tmp38_);
+               json_object_set_object_member (_tmp37_, "methods", _tmp39_);
+       }
+       _tmp40_ = self->includes;
+       _tmp41_ = gee_abstract_map_get_size ((GeeMap*) _tmp40_);
+       _tmp42_ = _tmp41_;
+       if (_tmp42_ > 0) {
+               JsonObject* _tmp43_ = NULL;
+               GeeHashMap* _tmp44_ = NULL;
+               JsonObject* _tmp45_ = NULL;
+               _tmp43_ = r;
+               _tmp44_ = self->includes;
+               _tmp45_ = palete_gir_object_toJSONObjectString (self, _tmp44_);
+               json_object_set_object_member (_tmp43_, "includes", _tmp45_);
+       }
+       _tmp46_ = self->classes;
+       _tmp47_ = gee_abstract_map_get_size ((GeeMap*) _tmp46_);
+       _tmp48_ = _tmp47_;
+       if (_tmp48_ > 0) {
+               JsonObject* _tmp49_ = NULL;
+               GeeHashMap* _tmp50_ = NULL;
+               JsonObject* _tmp51_ = NULL;
+               _tmp49_ = r;
+               _tmp50_ = self->classes;
+               _tmp51_ = palete_gir_object_toJSONObject (self, _tmp50_);
+               json_object_set_object_member (_tmp49_, "classes", _tmp51_);
+       }
+       _tmp52_ = self->props;
+       _tmp53_ = gee_abstract_map_get_size ((GeeMap*) _tmp52_);
+       _tmp54_ = _tmp53_;
+       if (_tmp54_ > 0) {
+               JsonObject* _tmp55_ = NULL;
+               GeeHashMap* _tmp56_ = NULL;
+               JsonObject* _tmp57_ = NULL;
+               _tmp55_ = r;
+               _tmp56_ = self->props;
+               _tmp57_ = palete_gir_object_toJSONObject (self, _tmp56_);
+               json_object_set_object_member (_tmp55_, "props", _tmp57_);
+       }
+       _tmp58_ = self->consts;
+       _tmp59_ = gee_abstract_map_get_size ((GeeMap*) _tmp58_);
+       _tmp60_ = _tmp59_;
+       if (_tmp60_ > 0) {
+               JsonObject* _tmp61_ = NULL;
+               GeeHashMap* _tmp62_ = NULL;
+               JsonObject* _tmp63_ = NULL;
+               _tmp61_ = r;
+               _tmp62_ = self->consts;
+               _tmp63_ = palete_gir_object_toJSONObject (self, _tmp62_);
+               json_object_set_object_member (_tmp61_, "consts", _tmp63_);
+       }
+       _tmp64_ = self->signals;
+       _tmp65_ = gee_abstract_map_get_size ((GeeMap*) _tmp64_);
+       _tmp66_ = _tmp65_;
+       if (_tmp66_ > 0) {
+               JsonObject* _tmp67_ = NULL;
+               GeeHashMap* _tmp68_ = NULL;
+               JsonObject* _tmp69_ = NULL;
+               _tmp67_ = r;
+               _tmp68_ = self->signals;
+               _tmp69_ = palete_gir_object_toJSONObject (self, _tmp68_);
+               json_object_set_object_member (_tmp67_, "signals", _tmp69_);
+       }
+       _tmp70_ = self->paramset;
+       if (_tmp70_ != NULL) {
+               JsonObject* _tmp71_ = NULL;
+               PaleteGirObject* _tmp72_ = NULL;
+               JsonObject* _tmp73_ = NULL;
+               _tmp71_ = r;
+               _tmp72_ = self->paramset;
+               _tmp73_ = palete_gir_object_toJSON (_tmp72_);
+               json_object_set_object_member (_tmp71_, "params", _tmp73_);
+       }
+       _tmp74_ = self->return_value;
+       if (_tmp74_ != NULL) {
+               JsonObject* _tmp75_ = NULL;
+               PaleteGirObject* _tmp76_ = NULL;
+               JsonObject* _tmp77_ = NULL;
+               _tmp75_ = r;
+               _tmp76_ = self->return_value;
+               _tmp77_ = palete_gir_object_toJSON (_tmp76_);
+               json_object_set_object_member (_tmp75_, "return_value", _tmp77_);
+       }
+       result = r;
+       return result;
+}
+
+
+JsonObject* palete_gir_object_toJSONObject (PaleteGirObject* self, GeeHashMap* map) {
+       JsonObject* result = NULL;
+       JsonObject* r = NULL;
+       JsonObject* _tmp0_ = NULL;
+       GeeMapIterator* iter = NULL;
+       GeeHashMap* _tmp1_ = NULL;
+       GeeMapIterator* _tmp2_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (map != NULL, NULL);
+       _tmp0_ = json_object_new ();
+       r = _tmp0_;
+       _tmp1_ = map;
+       _tmp2_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp1_);
+       iter = _tmp2_;
+       while (TRUE) {
+               GeeMapIterator* _tmp3_ = NULL;
+               gboolean _tmp4_ = FALSE;
+               JsonObject* _tmp5_ = NULL;
+               GeeMapIterator* _tmp6_ = NULL;
+               gpointer _tmp7_ = NULL;
+               gchar* _tmp8_ = NULL;
+               GeeMapIterator* _tmp9_ = NULL;
+               gpointer _tmp10_ = NULL;
+               PaleteGirObject* _tmp11_ = NULL;
+               JsonObject* _tmp12_ = NULL;
+               _tmp3_ = iter;
+               _tmp4_ = gee_map_iterator_next (_tmp3_);
+               if (!_tmp4_) {
+                       break;
+               }
+               _tmp5_ = r;
+               _tmp6_ = iter;
+               _tmp7_ = gee_map_iterator_get_key (_tmp6_);
+               _tmp8_ = (gchar*) _tmp7_;
+               _tmp9_ = iter;
+               _tmp10_ = gee_map_iterator_get_value (_tmp9_);
+               _tmp11_ = (PaleteGirObject*) _tmp10_;
+               _tmp12_ = palete_gir_object_toJSON (_tmp11_);
+               json_object_set_object_member (_tmp5_, _tmp8_, _tmp12_);
+               _g_object_unref0 (_tmp11_);
+               _g_free0 (_tmp8_);
+       }
+       result = r;
+       _g_object_unref0 (iter);
+       return result;
+}
+
+
+JsonObject* palete_gir_object_toJSONObjectString (PaleteGirObject* self, GeeHashMap* map) {
+       JsonObject* result = NULL;
+       JsonObject* r = NULL;
+       JsonObject* _tmp0_ = NULL;
+       GeeMapIterator* iter = NULL;
+       GeeHashMap* _tmp1_ = NULL;
+       GeeMapIterator* _tmp2_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (map != NULL, NULL);
+       _tmp0_ = json_object_new ();
+       r = _tmp0_;
+       _tmp1_ = map;
+       _tmp2_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp1_);
+       iter = _tmp2_;
+       while (TRUE) {
+               GeeMapIterator* _tmp3_ = NULL;
+               gboolean _tmp4_ = FALSE;
+               JsonObject* _tmp5_ = NULL;
+               GeeMapIterator* _tmp6_ = NULL;
+               gpointer _tmp7_ = NULL;
+               gchar* _tmp8_ = NULL;
+               GeeMapIterator* _tmp9_ = NULL;
+               gpointer _tmp10_ = NULL;
+               gchar* _tmp11_ = NULL;
+               _tmp3_ = iter;
+               _tmp4_ = gee_map_iterator_next (_tmp3_);
+               if (!_tmp4_) {
+                       break;
+               }
+               _tmp5_ = r;
+               _tmp6_ = iter;
+               _tmp7_ = gee_map_iterator_get_key (_tmp6_);
+               _tmp8_ = (gchar*) _tmp7_;
+               _tmp9_ = iter;
+               _tmp10_ = gee_map_iterator_get_value (_tmp9_);
+               _tmp11_ = (gchar*) _tmp10_;
+               json_object_set_string_member (_tmp5_, _tmp8_, _tmp11_);
+               _g_free0 (_tmp11_);
+               _g_free0 (_tmp8_);
+       }
+       result = r;
+       _g_object_unref0 (iter);
+       return result;
+}
+
+
+JsonArray* palete_gir_object_toJSONArrayString (PaleteGirObject* self, GList* map) {
+       JsonArray* result = NULL;
+       JsonArray* r = NULL;
+       JsonArray* _tmp0_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = json_array_new ();
+       r = _tmp0_;
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp1_ = FALSE;
+                       _tmp1_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp3_ = 0;
+                               GList* _tmp4_ = NULL;
+                               guint _tmp5_ = 0U;
+                               JsonArray* _tmp6_ = NULL;
+                               GList* _tmp7_ = NULL;
+                               gint _tmp8_ = 0;
+                               gconstpointer _tmp9_ = NULL;
+                               if (!_tmp1_) {
+                                       gint _tmp2_ = 0;
+                                       _tmp2_ = i;
+                                       i = _tmp2_ + 1;
+                               }
+                               _tmp1_ = FALSE;
+                               _tmp3_ = i;
+                               _tmp4_ = map;
+                               _tmp5_ = g_list_length (_tmp4_);
+                               if (!(((guint) _tmp3_) < _tmp5_)) {
+                                       break;
+                               }
+                               _tmp6_ = r;
+                               _tmp7_ = map;
+                               _tmp8_ = i;
+                               _tmp9_ = g_list_nth_data (_tmp7_, (guint) _tmp8_);
+                               json_array_add_string_element (_tmp6_, (const gchar*) _tmp9_);
+                       }
+               }
+       }
+       result = r;
+       return result;
+}
+
+
+static void palete_gir_object_class_init (PaleteGirObjectClass * klass) {
+       palete_gir_object_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (PaleteGirObjectPrivate));
+       G_OBJECT_CLASS (klass)->finalize = palete_gir_object_finalize;
+}
+
+
+static void palete_gir_object_instance_init (PaleteGirObject * self) {
+       self->priv = PALETE_GIR_OBJECT_GET_PRIVATE (self);
+       self->paramset = NULL;
+       self->return_value = NULL;
+}
+
+
+static void palete_gir_object_finalize (GObject* obj) {
+       PaleteGirObject * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, PALETE_TYPE_GIR_OBJECT, PaleteGirObject);
+       _g_free0 (self->name);
+       _g_free0 (self->ns);
+       _g_free0 (self->type);
+       _g_free0 (self->nodetype);
+       _g_free0 (self->package);
+       _g_object_unref0 (self->paramset);
+       _g_object_unref0 (self->return_value);
+       _g_free0 (self->parent);
+       _g_free0 (self->value);
+       _g_object_unref0 (self->params);
+       __g_list_free__g_free0_0 (self->implements);
+       __g_list_free__g_free0_0 (self->inherits);
+       _g_object_unref0 (self->ctors);
+       _g_object_unref0 (self->methods);
+       _g_object_unref0 (self->includes);
+       _g_object_unref0 (self->classes);
+       _g_object_unref0 (self->props);
+       _g_object_unref0 (self->consts);
+       _g_object_unref0 (self->signals);
+       _g_free0 (self->doc);
+       G_OBJECT_CLASS (palete_gir_object_parent_class)->finalize (obj);
+}
+
+
+GType palete_gir_object_get_type (void) {
+       static volatile gsize palete_gir_object_type_id__volatile = 0;
+       if (g_once_init_enter (&palete_gir_object_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (PaleteGirObjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) palete_gir_object_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PaleteGirObject), 0, (GInstanceInitFunc) palete_gir_object_instance_init, NULL };
+               GType palete_gir_object_type_id;
+               palete_gir_object_type_id = g_type_register_static (G_TYPE_OBJECT, "PaleteGirObject", &g_define_type_info, 0);
+               g_once_init_leave (&palete_gir_object_type_id__volatile, palete_gir_object_type_id);
+       }
+       return palete_gir_object_type_id__volatile;
+}
+
+
+PaleteGir* palete_gir_factory (const gchar* ns) {
+       PaleteGir* result = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       PaleteGir* ret = NULL;
+       GeeHashMap* _tmp2_ = NULL;
+       const gchar* _tmp3_ = NULL;
+       gpointer _tmp4_ = NULL;
+       PaleteGir* _tmp5_ = NULL;
+       GeeHashMap* _tmp6_ = NULL;
+       const gchar* _tmp7_ = NULL;
+       const gchar* _tmp8_ = NULL;
+       PaleteGir* _tmp9_ = NULL;
+       PaleteGir* _tmp10_ = NULL;
+       GeeHashMap* _tmp11_ = NULL;
+       const gchar* _tmp12_ = NULL;
+       gpointer _tmp13_ = NULL;
+       g_return_val_if_fail (ns != NULL, NULL);
+       _tmp0_ = palete_gir_cache;
+       if (_tmp0_ == NULL) {
+               GeeHashMap* _tmp1_ = NULL;
+               _tmp1_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, PALETE_TYPE_GIR, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+               _g_object_unref0 (palete_gir_cache);
+               palete_gir_cache = _tmp1_;
+       }
+       _tmp2_ = palete_gir_cache;
+       _tmp3_ = ns;
+       _tmp4_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp2_, _tmp3_);
+       ret = (PaleteGir*) _tmp4_;
+       _tmp5_ = ret;
+       if (_tmp5_ != NULL) {
+               result = ret;
+               return result;
+       }
+       _tmp6_ = palete_gir_cache;
+       _tmp7_ = ns;
+       _tmp8_ = ns;
+       _tmp9_ = palete_gir_new (_tmp8_);
+       _tmp10_ = _tmp9_;
+       gee_abstract_map_set ((GeeAbstractMap*) _tmp6_, _tmp7_, _tmp10_);
+       _g_object_unref0 (_tmp10_);
+       _tmp11_ = palete_gir_cache;
+       _tmp12_ = ns;
+       _tmp13_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp11_, _tmp12_);
+       result = (PaleteGir*) _tmp13_;
+       _g_object_unref0 (ret);
+       return result;
+}
+
+
+static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) {
+       gchar* result = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (old != NULL, NULL);
+       g_return_val_if_fail (replacement != NULL, NULL);
+       {
+               GRegex* regex = NULL;
+               const gchar* _tmp0_ = NULL;
+               gchar* _tmp1_ = NULL;
+               gchar* _tmp2_ = NULL;
+               GRegex* _tmp3_ = NULL;
+               GRegex* _tmp4_ = NULL;
+               gchar* _tmp5_ = NULL;
+               GRegex* _tmp6_ = NULL;
+               const gchar* _tmp7_ = NULL;
+               gchar* _tmp8_ = NULL;
+               gchar* _tmp9_ = NULL;
+               _tmp0_ = old;
+               _tmp1_ = g_regex_escape_string (_tmp0_, -1);
+               _tmp2_ = _tmp1_;
+               _tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_);
+               _tmp4_ = _tmp3_;
+               _g_free0 (_tmp2_);
+               regex = _tmp4_;
+               if (_inner_error_ != NULL) {
+                       if (_inner_error_->domain == G_REGEX_ERROR) {
+                               goto __catch9_g_regex_error;
+                       }
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return NULL;
+               }
+               _tmp6_ = regex;
+               _tmp7_ = replacement;
+               _tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) (-1), 0, _tmp7_, 0, &_inner_error_);
+               _tmp5_ = _tmp8_;
+               if (_inner_error_ != NULL) {
+                       _g_regex_unref0 (regex);
+                       if (_inner_error_->domain == G_REGEX_ERROR) {
+                               goto __catch9_g_regex_error;
+                       }
+                       _g_regex_unref0 (regex);
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                       g_clear_error (&_inner_error_);
+                       return NULL;
+               }
+               _tmp9_ = _tmp5_;
+               _tmp5_ = NULL;
+               result = _tmp9_;
+               _g_free0 (_tmp5_);
+               _g_regex_unref0 (regex);
+               return result;
+       }
+       goto __finally9;
+       __catch9_g_regex_error:
+       {
+               GError* e = NULL;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               g_assert_not_reached ();
+               _g_error_free0 (e);
+       }
+       __finally9:
+       if (_inner_error_ != NULL) {
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return NULL;
+       }
+}
+
+
+PaleteGir* palete_gir_construct (GType object_type, const gchar* ns) {
+       PaleteGir * self = NULL;
+       GIRepository* gi = NULL;
+       GIRepository* _tmp0_ = NULL;
+       GIRepository* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       gchar* ver = NULL;
+       const gchar* _tmp3_ = NULL;
+       const gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       GSList* pth = NULL;
+       GSList* _tmp6_ = NULL;
+       gchar* gir_path = NULL;
+       GSList* _tmp7_ = NULL;
+       gconstpointer _tmp8_ = NULL;
+       gchar* _tmp9_ = NULL;
+       gchar* file = NULL;
+       const gchar* _tmp10_ = NULL;
+       gchar* _tmp11_ = NULL;
+       gchar* _tmp12_ = NULL;
+       const gchar* _tmp13_ = NULL;
+       gchar* _tmp14_ = NULL;
+       gchar* _tmp15_ = NULL;
+       gchar* _tmp16_ = NULL;
+       gchar* _tmp17_ = NULL;
+       const gchar* _tmp18_ = NULL;
+       gchar* _tmp19_ = NULL;
+       gchar* _tmp20_ = NULL;
+       gchar* _tmp21_ = NULL;
+       gchar* _tmp22_ = NULL;
+       const gchar* _tmp23_ = NULL;
+       gchar* _tmp24_ = NULL;
+       gchar* _tmp25_ = NULL;
+       gchar* _tmp26_ = NULL;
+       gchar* _tmp27_ = NULL;
+       const gchar* _tmp28_ = NULL;
+       gchar* _tmp29_ = NULL;
+       gchar* _tmp30_ = NULL;
+       gchar* _tmp31_ = NULL;
+       gchar* _tmp32_ = NULL;
+       const gchar* _tmp33_ = NULL;
+       const gchar* _tmp34_ = NULL;
+       xmlDoc* doc = NULL;
+       const gchar* _tmp35_ = NULL;
+       xmlDoc* _tmp36_ = NULL;
+       xmlNode* root = NULL;
+       xmlDoc* _tmp37_ = NULL;
+       xmlNode* _tmp38_ = NULL;
+       xmlNode* _tmp39_ = NULL;
+       xmlDoc* _tmp40_ = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_val_if_fail (ns != NULL, NULL);
+       _tmp0_ = g_irepository_get_default ();
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+       gi = _tmp1_;
+       _tmp2_ = ns;
+       g_irepository_require (gi, _tmp2_, NULL, 0, &_inner_error_);
+       if (_inner_error_ != NULL) {
+               _g_object_unref0 (gi);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return NULL;
+       }
+       _tmp3_ = ns;
+       _tmp4_ = g_irepository_get_version (gi, _tmp3_);
+       _tmp5_ = g_strdup (_tmp4_);
+       ver = _tmp5_;
+       _tmp6_ = g_irepository_get_search_path ();
+       pth = _tmp6_;
+       _tmp7_ = pth;
+       _tmp8_ = g_slist_nth_data (_tmp7_, (guint) 0);
+       _tmp9_ = string_replace ((const gchar*) _tmp8_, "/lib/girepository-1.0", "/share/gir-1.0");
+       gir_path = _tmp9_;
+       _tmp10_ = gir_path;
+       _tmp11_ = g_strconcat (_tmp10_, "/", NULL);
+       _tmp12_ = _tmp11_;
+       _tmp13_ = ns;
+       _tmp14_ = g_strconcat (_tmp12_, _tmp13_, NULL);
+       _tmp15_ = _tmp14_;
+       _tmp16_ = g_strconcat (_tmp15_, "-", NULL);
+       _tmp17_ = _tmp16_;
+       _tmp18_ = ver;
+       _tmp19_ = g_strconcat (_tmp17_, _tmp18_, NULL);
+       _tmp20_ = _tmp19_;
+       _tmp21_ = g_strconcat (_tmp20_, ".gir", NULL);
+       _tmp22_ = _tmp21_;
+       _g_free0 (_tmp20_);
+       _g_free0 (_tmp17_);
+       _g_free0 (_tmp15_);
+       _g_free0 (_tmp12_);
+       file = _tmp22_;
+       _tmp23_ = ns;
+       _tmp24_ = g_strconcat ("ns: ", _tmp23_, NULL);
+       _tmp25_ = _tmp24_;
+       _tmp26_ = g_strconcat (_tmp25_, "\n", NULL);
+       _tmp27_ = _tmp26_;
+       g_print ("%s", _tmp27_);
+       _g_free0 (_tmp27_);
+       _g_free0 (_tmp25_);
+       _tmp28_ = ver;
+       _tmp29_ = g_strconcat ("ver: ", _tmp28_, NULL);
+       _tmp30_ = _tmp29_;
+       _tmp31_ = g_strconcat (_tmp30_, "\n", NULL);
+       _tmp32_ = _tmp31_;
+       g_print ("%s", _tmp32_);
+       _g_free0 (_tmp32_);
+       _g_free0 (_tmp30_);
+       _tmp33_ = file;
+       g_print ("%s", _tmp33_);
+       _tmp34_ = ns;
+       self = (PaleteGir*) palete_gir_object_construct (object_type, "Package", _tmp34_);
+       _tmp35_ = file;
+       _tmp36_ = xmlParseFile (_tmp35_);
+       doc = _tmp36_;
+       _tmp37_ = doc;
+       _tmp38_ = xmlDocGetRootElement (_tmp37_);
+       root = _tmp38_;
+       _tmp39_ = root;
+       palete_gir_walk (self, _tmp39_, G_TYPE_CHECK_INSTANCE_CAST (self, PALETE_TYPE_GIR_OBJECT, PaleteGirObject));
+       _tmp40_ = doc;
+       xmlFreeDoc (_tmp40_);
+       _g_free0 (file);
+       _g_free0 (gir_path);
+       _g_free0 (ver);
+       _g_object_unref0 (gi);
+       return self;
+}
+
+
+PaleteGir* palete_gir_new (const gchar* ns) {
+       return palete_gir_construct (PALETE_TYPE_GIR, ns);
+}
+
+
+void palete_gir_walk (PaleteGir* self, xmlNode* element, PaleteGirObject* parent) {
+       gchar* n = NULL;
+       xmlNode* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       xmlNode* _tmp4_ = NULL;
+       const gchar* _tmp5_ = NULL;
+       const gchar* _tmp6_ = NULL;
+       GQuark _tmp8_ = 0U;
+       static GQuark _tmp7_label0 = 0;
+       static GQuark _tmp7_label1 = 0;
+       static GQuark _tmp7_label2 = 0;
+       static GQuark _tmp7_label3 = 0;
+       static GQuark _tmp7_label4 = 0;
+       static GQuark _tmp7_label5 = 0;
+       static GQuark _tmp7_label6 = 0;
+       static GQuark _tmp7_label7 = 0;
+       static GQuark _tmp7_label8 = 0;
+       static GQuark _tmp7_label9 = 0;
+       static GQuark _tmp7_label10 = 0;
+       static GQuark _tmp7_label11 = 0;
+       static GQuark _tmp7_label12 = 0;
+       static GQuark _tmp7_label13 = 0;
+       static GQuark _tmp7_label14 = 0;
+       static GQuark _tmp7_label15 = 0;
+       static GQuark _tmp7_label16 = 0;
+       static GQuark _tmp7_label17 = 0;
+       static GQuark _tmp7_label18 = 0;
+       static GQuark _tmp7_label19 = 0;
+       static GQuark _tmp7_label20 = 0;
+       static GQuark _tmp7_label21 = 0;
+       static GQuark _tmp7_label22 = 0;
+       static GQuark _tmp7_label23 = 0;
+       static GQuark _tmp7_label24 = 0;
+       static GQuark _tmp7_label25 = 0;
+       static GQuark _tmp7_label26 = 0;
+       static GQuark _tmp7_label27 = 0;
+       static GQuark _tmp7_label28 = 0;
+       static GQuark _tmp7_label29 = 0;
+       static GQuark _tmp7_label30 = 0;
+       static GQuark _tmp7_label31 = 0;
+       g_return_if_fail (self != NULL);
+       _tmp0_ = element;
+       _tmp1_ = (gchar*) xmlGetProp (_tmp0_, (xmlChar*) "name");
+       n = _tmp1_;
+       _tmp2_ = n;
+       if (_tmp2_ == NULL) {
+               gchar* _tmp3_ = NULL;
+               _tmp3_ = g_strdup ("");
+               _g_free0 (n);
+               n = _tmp3_;
+       }
+       _tmp4_ = element;
+       _tmp5_ = _tmp4_->name;
+       _tmp6_ = _tmp5_;
+       _tmp8_ = (NULL == _tmp6_) ? 0 : g_quark_from_string (_tmp6_);
+       if (_tmp8_ == ((0 != _tmp7_label0) ? _tmp7_label0 : (_tmp7_label0 = g_quark_from_static_string ("repository")))) {
+               switch (0) {
+                       default:
+                       {
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label1) ? _tmp7_label1 : (_tmp7_label1 = g_quark_from_static_string ("include")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* _tmp9_ = NULL;
+                               GeeHashMap* _tmp10_ = NULL;
+                               const gchar* _tmp11_ = NULL;
+                               xmlNode* _tmp12_ = NULL;
+                               gchar* _tmp13_ = NULL;
+                               gchar* _tmp14_ = NULL;
+                               _tmp9_ = parent;
+                               _tmp10_ = _tmp9_->includes;
+                               _tmp11_ = n;
+                               _tmp12_ = element;
+                               _tmp13_ = (gchar*) xmlGetProp (_tmp12_, (xmlChar*) "version");
+                               _tmp14_ = _tmp13_;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp10_, _tmp11_, _tmp14_);
+                               _g_free0 (_tmp14_);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label2) ? _tmp7_label2 : (_tmp7_label2 = g_quark_from_static_string ("package")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* _tmp15_ = NULL;
+                               const gchar* _tmp16_ = NULL;
+                               gchar* _tmp17_ = NULL;
+                               _tmp15_ = parent;
+                               _tmp16_ = n;
+                               _tmp17_ = g_strdup (_tmp16_);
+                               _g_free0 (_tmp15_->package);
+                               _tmp15_->package = _tmp17_;
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label3) ? _tmp7_label3 : (_tmp7_label3 = g_quark_from_static_string ("c:include")))) {
+               switch (0) {
+                       default:
+                       {
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label4) ? _tmp7_label4 : (_tmp7_label4 = g_quark_from_static_string ("namespace")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* _tmp18_ = NULL;
+                               const gchar* _tmp19_ = NULL;
+                               gchar* _tmp20_ = NULL;
+                               _tmp18_ = parent;
+                               _tmp19_ = n;
+                               _tmp20_ = g_strdup (_tmp19_);
+                               _g_free0 (_tmp18_->name);
+                               _tmp18_->name = _tmp20_;
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label5) ? _tmp7_label5 : (_tmp7_label5 = g_quark_from_static_string ("alias")))) {
+               switch (0) {
+                       default:
+                       {
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label6) ? _tmp7_label6 : (_tmp7_label6 = g_quark_from_static_string ("class")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               PaleteGirObject* _tmp21_ = NULL;
+                               const gchar* _tmp22_ = NULL;
+                               gchar* _tmp23_ = NULL;
+                               gchar* _tmp24_ = NULL;
+                               const gchar* _tmp25_ = NULL;
+                               gchar* _tmp26_ = NULL;
+                               gchar* _tmp27_ = NULL;
+                               PaleteGirObject* _tmp28_ = NULL;
+                               PaleteGirObject* _tmp29_ = NULL;
+                               PaleteGirObject* _tmp30_ = NULL;
+                               GeeHashMap* _tmp31_ = NULL;
+                               const gchar* _tmp32_ = NULL;
+                               PaleteGirObject* _tmp33_ = NULL;
+                               PaleteGirObject* _tmp34_ = NULL;
+                               PaleteGirObject* _tmp35_ = NULL;
+                               const gchar* _tmp36_ = NULL;
+                               gchar* _tmp37_ = NULL;
+                               PaleteGirObject* _tmp38_ = NULL;
+                               xmlNode* _tmp39_ = NULL;
+                               gchar* _tmp40_ = NULL;
+                               PaleteGirObject* _tmp41_ = NULL;
+                               const gchar* _tmp42_ = NULL;
+                               PaleteGirObject* _tmp45_ = NULL;
+                               _tmp21_ = parent;
+                               _tmp22_ = _tmp21_->name;
+                               _tmp23_ = g_strconcat (_tmp22_, ".", NULL);
+                               _tmp24_ = _tmp23_;
+                               _tmp25_ = n;
+                               _tmp26_ = g_strconcat (_tmp24_, _tmp25_, NULL);
+                               _tmp27_ = _tmp26_;
+                               _tmp28_ = palete_gir_object_new ("Class", _tmp27_);
+                               _tmp29_ = _tmp28_;
+                               _g_free0 (_tmp27_);
+                               _g_free0 (_tmp24_);
+                               c = _tmp29_;
+                               _tmp30_ = parent;
+                               _tmp31_ = _tmp30_->classes;
+                               _tmp32_ = n;
+                               _tmp33_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp31_, _tmp32_, _tmp33_);
+                               _tmp34_ = c;
+                               _tmp35_ = parent;
+                               _tmp36_ = _tmp35_->name;
+                               _tmp37_ = g_strdup (_tmp36_);
+                               _g_free0 (_tmp34_->ns);
+                               _tmp34_->ns = _tmp37_;
+                               _tmp38_ = c;
+                               _tmp39_ = element;
+                               _tmp40_ = (gchar*) xmlGetProp (_tmp39_, (xmlChar*) "parent");
+                               _g_free0 (_tmp38_->parent);
+                               _tmp38_->parent = _tmp40_;
+                               _tmp41_ = c;
+                               _tmp42_ = _tmp41_->parent;
+                               if (_tmp42_ == NULL) {
+                                       PaleteGirObject* _tmp43_ = NULL;
+                                       gchar* _tmp44_ = NULL;
+                                       _tmp43_ = c;
+                                       _tmp44_ = g_strdup ("");
+                                       _g_free0 (_tmp43_->parent);
+                                       _tmp43_->parent = _tmp44_;
+                               }
+                               _tmp45_ = c;
+                               parent = _tmp45_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label7) ? _tmp7_label7 : (_tmp7_label7 = g_quark_from_static_string ("interface")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               PaleteGirObject* _tmp46_ = NULL;
+                               const gchar* _tmp47_ = NULL;
+                               gchar* _tmp48_ = NULL;
+                               gchar* _tmp49_ = NULL;
+                               const gchar* _tmp50_ = NULL;
+                               gchar* _tmp51_ = NULL;
+                               gchar* _tmp52_ = NULL;
+                               PaleteGirObject* _tmp53_ = NULL;
+                               PaleteGirObject* _tmp54_ = NULL;
+                               PaleteGirObject* _tmp55_ = NULL;
+                               GeeHashMap* _tmp56_ = NULL;
+                               const gchar* _tmp57_ = NULL;
+                               PaleteGirObject* _tmp58_ = NULL;
+                               PaleteGirObject* _tmp59_ = NULL;
+                               PaleteGirObject* _tmp60_ = NULL;
+                               const gchar* _tmp61_ = NULL;
+                               gchar* _tmp62_ = NULL;
+                               PaleteGirObject* _tmp63_ = NULL;
+                               xmlNode* _tmp64_ = NULL;
+                               gchar* _tmp65_ = NULL;
+                               PaleteGirObject* _tmp66_ = NULL;
+                               const gchar* _tmp67_ = NULL;
+                               PaleteGirObject* _tmp70_ = NULL;
+                               _tmp46_ = parent;
+                               _tmp47_ = _tmp46_->name;
+                               _tmp48_ = g_strconcat (_tmp47_, ".", NULL);
+                               _tmp49_ = _tmp48_;
+                               _tmp50_ = n;
+                               _tmp51_ = g_strconcat (_tmp49_, _tmp50_, NULL);
+                               _tmp52_ = _tmp51_;
+                               _tmp53_ = palete_gir_object_new ("Interface", _tmp52_);
+                               _tmp54_ = _tmp53_;
+                               _g_free0 (_tmp52_);
+                               _g_free0 (_tmp49_);
+                               c = _tmp54_;
+                               _tmp55_ = parent;
+                               _tmp56_ = _tmp55_->classes;
+                               _tmp57_ = n;
+                               _tmp58_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp56_, _tmp57_, _tmp58_);
+                               _tmp59_ = c;
+                               _tmp60_ = parent;
+                               _tmp61_ = _tmp60_->name;
+                               _tmp62_ = g_strdup (_tmp61_);
+                               _g_free0 (_tmp59_->ns);
+                               _tmp59_->ns = _tmp62_;
+                               _tmp63_ = c;
+                               _tmp64_ = element;
+                               _tmp65_ = (gchar*) xmlGetProp (_tmp64_, (xmlChar*) "parent");
+                               _g_free0 (_tmp63_->parent);
+                               _tmp63_->parent = _tmp65_;
+                               _tmp66_ = c;
+                               _tmp67_ = _tmp66_->parent;
+                               if (_tmp67_ == NULL) {
+                                       PaleteGirObject* _tmp68_ = NULL;
+                                       gchar* _tmp69_ = NULL;
+                                       _tmp68_ = c;
+                                       _tmp69_ = g_strdup ("");
+                                       _g_free0 (_tmp68_->parent);
+                                       _tmp68_->parent = _tmp69_;
+                               }
+                               _tmp70_ = c;
+                               parent = _tmp70_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label8) ? _tmp7_label8 : (_tmp7_label8 = g_quark_from_static_string ("doc")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* _tmp71_ = NULL;
+                               xmlNode* _tmp72_ = NULL;
+                               gchar* _tmp73_ = NULL;
+                               _tmp71_ = parent;
+                               _tmp72_ = element;
+                               _tmp73_ = (gchar*) xmlNodeGetContent (_tmp72_);
+                               _g_free0 (_tmp71_->doc);
+                               _tmp71_->doc = _tmp73_;
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label9) ? _tmp7_label9 : (_tmp7_label9 = g_quark_from_static_string ("implements")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* _tmp74_ = NULL;
+                               const gchar* _tmp75_ = NULL;
+                               gchar* _tmp76_ = NULL;
+                               _tmp74_ = parent;
+                               _tmp75_ = n;
+                               _tmp76_ = g_strdup (_tmp75_);
+                               _tmp74_->implements = g_list_append (_tmp74_->implements, _tmp76_);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label10) ? _tmp7_label10 : (_tmp7_label10 = g_quark_from_static_string ("constructor")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp77_ = NULL;
+                               PaleteGirObject* _tmp78_ = NULL;
+                               PaleteGirObject* _tmp79_ = NULL;
+                               PaleteGirObject* _tmp80_ = NULL;
+                               const gchar* _tmp81_ = NULL;
+                               gchar* _tmp82_ = NULL;
+                               PaleteGirObject* _tmp83_ = NULL;
+                               GeeHashMap* _tmp84_ = NULL;
+                               const gchar* _tmp85_ = NULL;
+                               PaleteGirObject* _tmp86_ = NULL;
+                               PaleteGirObject* _tmp87_ = NULL;
+                               _tmp77_ = n;
+                               _tmp78_ = palete_gir_object_new ("Ctor", _tmp77_);
+                               c = _tmp78_;
+                               _tmp79_ = c;
+                               _tmp80_ = parent;
+                               _tmp81_ = _tmp80_->ns;
+                               _tmp82_ = g_strdup (_tmp81_);
+                               _g_free0 (_tmp79_->ns);
+                               _tmp79_->ns = _tmp82_;
+                               _tmp83_ = parent;
+                               _tmp84_ = _tmp83_->ctors;
+                               _tmp85_ = n;
+                               _tmp86_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp84_, _tmp85_, _tmp86_);
+                               _tmp87_ = c;
+                               parent = _tmp87_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label11) ? _tmp7_label11 : (_tmp7_label11 = g_quark_from_static_string ("return-value")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               PaleteGirObject* _tmp88_ = NULL;
+                               PaleteGirObject* _tmp89_ = NULL;
+                               PaleteGirObject* _tmp90_ = NULL;
+                               const gchar* _tmp91_ = NULL;
+                               gchar* _tmp92_ = NULL;
+                               PaleteGirObject* _tmp93_ = NULL;
+                               PaleteGirObject* _tmp94_ = NULL;
+                               PaleteGirObject* _tmp95_ = NULL;
+                               PaleteGirObject* _tmp96_ = NULL;
+                               _tmp88_ = palete_gir_object_new ("Return", "return-value");
+                               c = _tmp88_;
+                               _tmp89_ = c;
+                               _tmp90_ = parent;
+                               _tmp91_ = _tmp90_->ns;
+                               _tmp92_ = g_strdup (_tmp91_);
+                               _g_free0 (_tmp89_->ns);
+                               _tmp89_->ns = _tmp92_;
+                               _tmp93_ = parent;
+                               _tmp94_ = c;
+                               _tmp95_ = _g_object_ref0 (_tmp94_);
+                               _g_object_unref0 (_tmp93_->return_value);
+                               _tmp93_->return_value = _tmp95_;
+                               _tmp96_ = c;
+                               parent = _tmp96_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label12) ? _tmp7_label12 : (_tmp7_label12 = g_quark_from_static_string ("virtual-method")))) {
+               switch (0) {
+                       default:
+                       {
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label13) ? _tmp7_label13 : (_tmp7_label13 = g_quark_from_static_string ("signal")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp97_ = NULL;
+                               PaleteGirObject* _tmp98_ = NULL;
+                               PaleteGirObject* _tmp99_ = NULL;
+                               PaleteGirObject* _tmp100_ = NULL;
+                               const gchar* _tmp101_ = NULL;
+                               gchar* _tmp102_ = NULL;
+                               PaleteGirObject* _tmp103_ = NULL;
+                               GeeHashMap* _tmp104_ = NULL;
+                               const gchar* _tmp105_ = NULL;
+                               PaleteGirObject* _tmp106_ = NULL;
+                               PaleteGirObject* _tmp107_ = NULL;
+                               _tmp97_ = n;
+                               _tmp98_ = palete_gir_object_new ("Signal", _tmp97_);
+                               c = _tmp98_;
+                               _tmp99_ = c;
+                               _tmp100_ = parent;
+                               _tmp101_ = _tmp100_->ns;
+                               _tmp102_ = g_strdup (_tmp101_);
+                               _g_free0 (_tmp99_->ns);
+                               _tmp99_->ns = _tmp102_;
+                               _tmp103_ = parent;
+                               _tmp104_ = _tmp103_->signals;
+                               _tmp105_ = n;
+                               _tmp106_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp104_, _tmp105_, _tmp106_);
+                               _tmp107_ = c;
+                               parent = _tmp107_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label14) ? _tmp7_label14 : (_tmp7_label14 = g_quark_from_static_string ("callback")))) {
+               switch (0) {
+                       default:
+                       {
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label15) ? _tmp7_label15 : (_tmp7_label15 = g_quark_from_static_string ("type")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* _tmp108_ = NULL;
+                               const gchar* _tmp109_ = NULL;
+                               gchar* _tmp110_ = NULL;
+                               _tmp108_ = parent;
+                               _tmp109_ = n;
+                               _tmp110_ = g_strdup (_tmp109_);
+                               _g_free0 (_tmp108_->type);
+                               _tmp108_->type = _tmp110_;
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label16) ? _tmp7_label16 : (_tmp7_label16 = g_quark_from_static_string ("method")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp111_ = NULL;
+                               PaleteGirObject* _tmp112_ = NULL;
+                               PaleteGirObject* _tmp113_ = NULL;
+                               PaleteGirObject* _tmp114_ = NULL;
+                               const gchar* _tmp115_ = NULL;
+                               gchar* _tmp116_ = NULL;
+                               PaleteGirObject* _tmp117_ = NULL;
+                               GeeHashMap* _tmp118_ = NULL;
+                               const gchar* _tmp119_ = NULL;
+                               PaleteGirObject* _tmp120_ = NULL;
+                               PaleteGirObject* _tmp121_ = NULL;
+                               _tmp111_ = n;
+                               _tmp112_ = palete_gir_object_new ("Method", _tmp111_);
+                               c = _tmp112_;
+                               _tmp113_ = c;
+                               _tmp114_ = parent;
+                               _tmp115_ = _tmp114_->ns;
+                               _tmp116_ = g_strdup (_tmp115_);
+                               _g_free0 (_tmp113_->ns);
+                               _tmp113_->ns = _tmp116_;
+                               _tmp117_ = parent;
+                               _tmp118_ = _tmp117_->methods;
+                               _tmp119_ = n;
+                               _tmp120_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp118_, _tmp119_, _tmp120_);
+                               _tmp121_ = c;
+                               parent = _tmp121_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label17) ? _tmp7_label17 : (_tmp7_label17 = g_quark_from_static_string ("parameters")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp122_ = NULL;
+                               PaleteGirObject* _tmp123_ = NULL;
+                               PaleteGirObject* _tmp124_ = NULL;
+                               PaleteGirObject* _tmp125_ = NULL;
+                               const gchar* _tmp126_ = NULL;
+                               gchar* _tmp127_ = NULL;
+                               PaleteGirObject* _tmp128_ = NULL;
+                               PaleteGirObject* _tmp129_ = NULL;
+                               PaleteGirObject* _tmp130_ = NULL;
+                               PaleteGirObject* _tmp131_ = NULL;
+                               _tmp122_ = n;
+                               _tmp123_ = palete_gir_object_new ("Paramset", _tmp122_);
+                               c = _tmp123_;
+                               _tmp124_ = c;
+                               _tmp125_ = parent;
+                               _tmp126_ = _tmp125_->ns;
+                               _tmp127_ = g_strdup (_tmp126_);
+                               _g_free0 (_tmp124_->ns);
+                               _tmp124_->ns = _tmp127_;
+                               _tmp128_ = parent;
+                               _tmp129_ = c;
+                               _tmp130_ = _g_object_ref0 (_tmp129_);
+                               _g_object_unref0 (_tmp128_->paramset);
+                               _tmp128_->paramset = _tmp130_;
+                               _tmp131_ = c;
+                               parent = _tmp131_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label18) ? _tmp7_label18 : (_tmp7_label18 = g_quark_from_static_string ("instance-parameter")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp132_ = NULL;
+                               PaleteGirObject* _tmp133_ = NULL;
+                               PaleteGirObject* _tmp134_ = NULL;
+                               PaleteGirObject* _tmp135_ = NULL;
+                               const gchar* _tmp136_ = NULL;
+                               gchar* _tmp137_ = NULL;
+                               PaleteGirObject* _tmp138_ = NULL;
+                               PaleteGirObject* _tmp139_ = NULL;
+                               GeeHashMap* _tmp140_ = NULL;
+                               const gchar* _tmp141_ = NULL;
+                               PaleteGirObject* _tmp142_ = NULL;
+                               PaleteGirObject* _tmp143_ = NULL;
+                               _tmp132_ = n;
+                               _tmp133_ = palete_gir_object_new ("Param", _tmp132_);
+                               c = _tmp133_;
+                               _tmp134_ = c;
+                               _tmp135_ = parent;
+                               _tmp136_ = _tmp135_->ns;
+                               _tmp137_ = g_strdup (_tmp136_);
+                               _g_free0 (_tmp134_->ns);
+                               _tmp134_->ns = _tmp137_;
+                               _tmp138_ = c;
+                               _tmp138_->is_instance = TRUE;
+                               _tmp139_ = parent;
+                               _tmp140_ = _tmp139_->params;
+                               _tmp141_ = n;
+                               _tmp142_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp140_, _tmp141_, _tmp142_);
+                               _tmp143_ = c;
+                               parent = _tmp143_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label19) ? _tmp7_label19 : (_tmp7_label19 = g_quark_from_static_string ("parameter")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp144_ = NULL;
+                               PaleteGirObject* _tmp145_ = NULL;
+                               PaleteGirObject* _tmp146_ = NULL;
+                               PaleteGirObject* _tmp147_ = NULL;
+                               const gchar* _tmp148_ = NULL;
+                               gchar* _tmp149_ = NULL;
+                               PaleteGirObject* _tmp150_ = NULL;
+                               GeeHashMap* _tmp151_ = NULL;
+                               const gchar* _tmp152_ = NULL;
+                               PaleteGirObject* _tmp153_ = NULL;
+                               PaleteGirObject* _tmp154_ = NULL;
+                               _tmp144_ = n;
+                               _tmp145_ = palete_gir_object_new ("Param", _tmp144_);
+                               c = _tmp145_;
+                               _tmp146_ = c;
+                               _tmp147_ = parent;
+                               _tmp148_ = _tmp147_->ns;
+                               _tmp149_ = g_strdup (_tmp148_);
+                               _g_free0 (_tmp146_->ns);
+                               _tmp146_->ns = _tmp149_;
+                               _tmp150_ = parent;
+                               _tmp151_ = _tmp150_->params;
+                               _tmp152_ = n;
+                               _tmp153_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp151_, _tmp152_, _tmp153_);
+                               _tmp154_ = c;
+                               parent = _tmp154_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if ((_tmp8_ == ((0 != _tmp7_label20) ? _tmp7_label20 : (_tmp7_label20 = g_quark_from_static_string ("property")))) || (_tmp8_ == ((0 != _tmp7_label21) ? _tmp7_label21 : (_tmp7_label21 = g_quark_from_static_string ("field"))))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp155_ = NULL;
+                               PaleteGirObject* _tmp156_ = NULL;
+                               PaleteGirObject* _tmp157_ = NULL;
+                               PaleteGirObject* _tmp158_ = NULL;
+                               const gchar* _tmp159_ = NULL;
+                               gchar* _tmp160_ = NULL;
+                               PaleteGirObject* _tmp161_ = NULL;
+                               GeeHashMap* _tmp162_ = NULL;
+                               const gchar* _tmp163_ = NULL;
+                               PaleteGirObject* _tmp164_ = NULL;
+                               PaleteGirObject* _tmp165_ = NULL;
+                               _tmp155_ = n;
+                               _tmp156_ = palete_gir_object_new ("Prop", _tmp155_);
+                               c = _tmp156_;
+                               _tmp157_ = c;
+                               _tmp158_ = parent;
+                               _tmp159_ = _tmp158_->ns;
+                               _tmp160_ = g_strdup (_tmp159_);
+                               _g_free0 (_tmp157_->ns);
+                               _tmp157_->ns = _tmp160_;
+                               _tmp161_ = parent;
+                               _tmp162_ = _tmp161_->props;
+                               _tmp163_ = n;
+                               _tmp164_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp162_, _tmp163_, _tmp164_);
+                               _tmp165_ = c;
+                               parent = _tmp165_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label22) ? _tmp7_label22 : (_tmp7_label22 = g_quark_from_static_string ("function")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp166_ = NULL;
+                               PaleteGirObject* _tmp167_ = NULL;
+                               PaleteGirObject* _tmp168_ = NULL;
+                               PaleteGirObject* _tmp169_ = NULL;
+                               const gchar* _tmp170_ = NULL;
+                               gchar* _tmp171_ = NULL;
+                               PaleteGirObject* _tmp172_ = NULL;
+                               GeeHashMap* _tmp173_ = NULL;
+                               const gchar* _tmp174_ = NULL;
+                               PaleteGirObject* _tmp175_ = NULL;
+                               PaleteGirObject* _tmp176_ = NULL;
+                               _tmp166_ = n;
+                               _tmp167_ = palete_gir_object_new ("Function", _tmp166_);
+                               c = _tmp167_;
+                               _tmp168_ = c;
+                               _tmp169_ = parent;
+                               _tmp170_ = _tmp169_->ns;
+                               _tmp171_ = g_strdup (_tmp170_);
+                               _g_free0 (_tmp168_->ns);
+                               _tmp168_->ns = _tmp171_;
+                               _tmp172_ = parent;
+                               _tmp173_ = _tmp172_->methods;
+                               _tmp174_ = n;
+                               _tmp175_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp173_, _tmp174_, _tmp175_);
+                               _tmp176_ = c;
+                               parent = _tmp176_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label23) ? _tmp7_label23 : (_tmp7_label23 = g_quark_from_static_string ("array")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* _tmp177_ = NULL;
+                               _tmp177_ = parent;
+                               _tmp177_->is_array = TRUE;
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label24) ? _tmp7_label24 : (_tmp7_label24 = g_quark_from_static_string ("varargs")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* _tmp178_ = NULL;
+                               _tmp178_ = parent;
+                               _tmp178_->is_varargs = TRUE;
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label25) ? _tmp7_label25 : (_tmp7_label25 = g_quark_from_static_string ("constant")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp179_ = NULL;
+                               PaleteGirObject* _tmp180_ = NULL;
+                               PaleteGirObject* _tmp181_ = NULL;
+                               xmlNode* _tmp182_ = NULL;
+                               gchar* _tmp183_ = NULL;
+                               PaleteGirObject* _tmp184_ = NULL;
+                               PaleteGirObject* _tmp185_ = NULL;
+                               const gchar* _tmp186_ = NULL;
+                               gchar* _tmp187_ = NULL;
+                               PaleteGirObject* _tmp188_ = NULL;
+                               GeeHashMap* _tmp189_ = NULL;
+                               const gchar* _tmp190_ = NULL;
+                               PaleteGirObject* _tmp191_ = NULL;
+                               PaleteGirObject* _tmp192_ = NULL;
+                               _tmp179_ = n;
+                               _tmp180_ = palete_gir_object_new ("Const", _tmp179_);
+                               c = _tmp180_;
+                               _tmp181_ = c;
+                               _tmp182_ = element;
+                               _tmp183_ = (gchar*) xmlGetProp (_tmp182_, (xmlChar*) "value");
+                               _g_free0 (_tmp181_->value);
+                               _tmp181_->value = _tmp183_;
+                               _tmp184_ = c;
+                               _tmp185_ = parent;
+                               _tmp186_ = _tmp185_->ns;
+                               _tmp187_ = g_strdup (_tmp186_);
+                               _g_free0 (_tmp184_->ns);
+                               _tmp184_->ns = _tmp187_;
+                               _tmp188_ = parent;
+                               _tmp189_ = _tmp188_->consts;
+                               _tmp190_ = n;
+                               _tmp191_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp189_, _tmp190_, _tmp191_);
+                               _tmp192_ = c;
+                               parent = _tmp192_;
+                               _g_object_unref0 (c);
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label26) ? _tmp7_label26 : (_tmp7_label26 = g_quark_from_static_string ("enumeration")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp193_ = NULL;
+                               PaleteGirObject* _tmp194_ = NULL;
+                               PaleteGirObject* _tmp195_ = NULL;
+                               PaleteGirObject* _tmp196_ = NULL;
+                               const gchar* _tmp197_ = NULL;
+                               gchar* _tmp198_ = NULL;
+                               PaleteGirObject* _tmp199_ = NULL;
+                               GeeHashMap* _tmp200_ = NULL;
+                               const gchar* _tmp201_ = NULL;
+                               PaleteGirObject* _tmp202_ = NULL;
+                               PaleteGirObject* _tmp203_ = NULL;
+                               _tmp193_ = n;
+                               _tmp194_ = palete_gir_object_new ("Enum", _tmp193_);
+                               c = _tmp194_;
+                               _tmp195_ = c;
+                               _tmp196_ = parent;
+                               _tmp197_ = _tmp196_->ns;
+                               _tmp198_ = g_strdup (_tmp197_);
+                               _g_free0 (_tmp195_->ns);
+                               _tmp195_->ns = _tmp198_;
+                               _tmp199_ = parent;
+                               _tmp200_ = _tmp199_->consts;
+                               _tmp201_ = n;
+                               _tmp202_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp200_, _tmp201_, _tmp202_);
+                               _tmp203_ = c;
+                               parent = _tmp203_;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label27) ? _tmp7_label27 : (_tmp7_label27 = g_quark_from_static_string ("member")))) {
+               switch (0) {
+                       default:
+                       {
+                               PaleteGirObject* c = NULL;
+                               const gchar* _tmp204_ = NULL;
+                               PaleteGirObject* _tmp205_ = NULL;
+                               PaleteGirObject* _tmp206_ = NULL;
+                               PaleteGirObject* _tmp207_ = NULL;
+                               const gchar* _tmp208_ = NULL;
+                               gchar* _tmp209_ = NULL;
+                               PaleteGirObject* _tmp210_ = NULL;
+                               xmlNode* _tmp211_ = NULL;
+                               gchar* _tmp212_ = NULL;
+                               PaleteGirObject* _tmp213_ = NULL;
+                               GeeHashMap* _tmp214_ = NULL;
+                               const gchar* _tmp215_ = NULL;
+                               PaleteGirObject* _tmp216_ = NULL;
+                               _tmp204_ = n;
+                               _tmp205_ = palete_gir_object_new ("EnumMember", _tmp204_);
+                               c = _tmp205_;
+                               _tmp206_ = c;
+                               _tmp207_ = parent;
+                               _tmp208_ = _tmp207_->ns;
+                               _tmp209_ = g_strdup (_tmp208_);
+                               _g_free0 (_tmp206_->ns);
+                               _tmp206_->ns = _tmp209_;
+                               _tmp210_ = c;
+                               _tmp211_ = element;
+                               _tmp212_ = (gchar*) xmlGetProp (_tmp211_, (xmlChar*) "value");
+                               _g_free0 (_tmp210_->value);
+                               _tmp210_->value = _tmp212_;
+                               _tmp213_ = parent;
+                               _tmp214_ = _tmp213_->consts;
+                               _tmp215_ = n;
+                               _tmp216_ = c;
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp214_, _tmp215_, _tmp216_);
+                               _g_object_unref0 (c);
+                               _g_free0 (n);
+                               return;
+                               _g_object_unref0 (c);
+                               break;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label28) ? _tmp7_label28 : (_tmp7_label28 = g_quark_from_static_string ("doc-deprecated")))) {
+               switch (0) {
+                       default:
+                       {
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label29) ? _tmp7_label29 : (_tmp7_label29 = g_quark_from_static_string ("record")))) {
+               switch (0) {
+                       default:
+                       {
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label30) ? _tmp7_label30 : (_tmp7_label30 = g_quark_from_static_string ("bitfield")))) {
+               switch (0) {
+                       default:
+                       {
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else if (_tmp8_ == ((0 != _tmp7_label31) ? _tmp7_label31 : (_tmp7_label31 = g_quark_from_static_string ("prerequisite")))) {
+               switch (0) {
+                       default:
+                       {
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       } else {
+               switch (0) {
+                       default:
+                       {
+                               xmlNode* _tmp217_ = NULL;
+                               const gchar* _tmp218_ = NULL;
+                               gchar* _tmp219_ = NULL;
+                               gchar* _tmp220_ = NULL;
+                               gchar* _tmp221_ = NULL;
+                               gchar* _tmp222_ = NULL;
+                               _tmp217_ = element;
+                               _tmp218_ = _tmp217_->name;
+                               _tmp219_ = g_strconcat ("UNHANDLED", _tmp218_, NULL);
+                               _tmp220_ = _tmp219_;
+                               _tmp221_ = g_strconcat (_tmp220_, "\n", NULL);
+                               _tmp222_ = _tmp221_;
+                               g_print ("%s", _tmp222_);
+                               _g_free0 (_tmp222_);
+                               _g_free0 (_tmp220_);
+                               _g_free0 (n);
+                               return;
+                       }
+               }
+       }
+       {
+               xmlNode* iter = NULL;
+               xmlNode* _tmp223_ = NULL;
+               xmlNode* _tmp224_ = NULL;
+               _tmp223_ = element;
+               _tmp224_ = _tmp223_->children;
+               iter = _tmp224_;
+               {
+                       gboolean _tmp225_ = FALSE;
+                       _tmp225_ = TRUE;
+                       while (TRUE) {
+                               xmlNode* _tmp228_ = NULL;
+                               xmlNode* _tmp229_ = NULL;
+                               xmlElementType _tmp230_ = 0;
+                               xmlNode* _tmp231_ = NULL;
+                               PaleteGirObject* _tmp232_ = NULL;
+                               if (!_tmp225_) {
+                                       xmlNode* _tmp226_ = NULL;
+                                       xmlNode* _tmp227_ = NULL;
+                                       _tmp226_ = iter;
+                                       _tmp227_ = _tmp226_->next;
+                                       iter = _tmp227_;
+                               }
+                               _tmp225_ = FALSE;
+                               _tmp228_ = iter;
+                               if (!(_tmp228_ != NULL)) {
+                                       break;
+                               }
+                               _tmp229_ = iter;
+                               _tmp230_ = _tmp229_->type;
+                               if (_tmp230_ == XML_TEXT_NODE) {
+                                       continue;
+                               }
+                               _tmp231_ = iter;
+                               _tmp232_ = parent;
+                               palete_gir_walk (self, _tmp231_, _tmp232_);
+                       }
+               }
+       }
+       _g_free0 (n);
+}
+
+
+gchar* palete_gir_doc (PaleteGir* self, const gchar* what) {
+       gchar* result = NULL;
+       gchar** ar = NULL;
+       const gchar* _tmp0_ = NULL;
+       gchar** _tmp1_ = NULL;
+       gchar** _tmp2_ = NULL;
+       gint ar_length1 = 0;
+       gint _ar_size_ = 0;
+       PaleteGirObject* cls = NULL;
+       GeeHashMap* _tmp3_ = NULL;
+       gchar** _tmp4_ = NULL;
+       gint _tmp4__length1 = 0;
+       const gchar* _tmp5_ = NULL;
+       gpointer _tmp6_ = NULL;
+       gchar** _tmp7_ = NULL;
+       gint _tmp7__length1 = 0;
+       PaleteGirObject* pr = NULL;
+       PaleteGirObject* _tmp14_ = NULL;
+       GeeHashMap* _tmp15_ = NULL;
+       gchar** _tmp16_ = NULL;
+       gint _tmp16__length1 = 0;
+       const gchar* _tmp17_ = NULL;
+       gpointer _tmp18_ = NULL;
+       const gchar* _tmp19_ = NULL;
+       PaleteGirObject* _tmp20_ = NULL;
+       const gchar* _tmp21_ = NULL;
+       gchar* _tmp24_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (what != NULL, NULL);
+       _tmp0_ = what;
+       _tmp2_ = _tmp1_ = g_strsplit (_tmp0_, ".", 0);
+       ar = _tmp2_;
+       ar_length1 = _vala_array_length (_tmp1_);
+       _ar_size_ = ar_length1;
+       _tmp3_ = ((PaleteGirObject*) self)->classes;
+       _tmp4_ = ar;
+       _tmp4__length1 = ar_length1;
+       _tmp5_ = _tmp4_[1];
+       _tmp6_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp3_, _tmp5_);
+       cls = (PaleteGirObject*) _tmp6_;
+       _tmp7_ = ar;
+       _tmp7__length1 = ar_length1;
+       if (_tmp7__length1 == 2) {
+               const gchar* _tmp8_ = NULL;
+               PaleteGirObject* _tmp9_ = NULL;
+               const gchar* _tmp10_ = NULL;
+               gchar* _tmp13_ = NULL;
+               _tmp9_ = cls;
+               _tmp10_ = _tmp9_->doc;
+               if (_tmp10_ != NULL) {
+                       PaleteGirObject* _tmp11_ = NULL;
+                       const gchar* _tmp12_ = NULL;
+                       _tmp11_ = cls;
+                       _tmp12_ = _tmp11_->doc;
+                       _tmp8_ = _tmp12_;
+               } else {
+                       _tmp8_ = "";
+               }
+               _tmp13_ = g_strdup (_tmp8_);
+               result = _tmp13_;
+               _g_object_unref0 (cls);
+               ar = (_vala_array_free (ar, ar_length1, (GDestroyNotify) g_free), NULL);
+               return result;
+       }
+       _tmp14_ = cls;
+       _tmp15_ = _tmp14_->props;
+       _tmp16_ = ar;
+       _tmp16__length1 = ar_length1;
+       _tmp17_ = _tmp16_[2];
+       _tmp18_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp15_, _tmp17_);
+       pr = (PaleteGirObject*) _tmp18_;
+       _tmp20_ = pr;
+       _tmp21_ = _tmp20_->doc;
+       if (_tmp21_ != NULL) {
+               PaleteGirObject* _tmp22_ = NULL;
+               const gchar* _tmp23_ = NULL;
+               _tmp22_ = pr;
+               _tmp23_ = _tmp22_->doc;
+               _tmp19_ = _tmp23_;
+       } else {
+               _tmp19_ = "";
+       }
+       _tmp24_ = g_strdup (_tmp19_);
+       result = _tmp24_;
+       _g_object_unref0 (pr);
+       _g_object_unref0 (cls);
+       ar = (_vala_array_free (ar, ar_length1, (GDestroyNotify) g_free), NULL);
+       return result;
+}
+
+
+static void palete_gir_class_init (PaleteGirClass * klass) {
+       palete_gir_parent_class = g_type_class_peek_parent (klass);
+       G_OBJECT_CLASS (klass)->finalize = palete_gir_finalize;
+}
+
+
+static void palete_gir_instance_init (PaleteGir * self) {
+}
+
+
+static void palete_gir_finalize (GObject* obj) {
+       PaleteGir * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, PALETE_TYPE_GIR, PaleteGir);
+       G_OBJECT_CLASS (palete_gir_parent_class)->finalize (obj);
+}
+
+
+GType palete_gir_get_type (void) {
+       static volatile gsize palete_gir_type_id__volatile = 0;
+       if (g_once_init_enter (&palete_gir_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (PaleteGirClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) palete_gir_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PaleteGir), 0, (GInstanceInitFunc) palete_gir_instance_init, NULL };
+               GType palete_gir_type_id;
+               palete_gir_type_id = g_type_register_static (PALETE_TYPE_GIR_OBJECT, "PaleteGir", &g_define_type_info, 0);
+               g_once_init_leave (&palete_gir_type_id__volatile, palete_gir_type_id);
+       }
+       return palete_gir_type_id__volatile;
+}
+
+
+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);
+}
+
+
+static gint _vala_array_length (gpointer array) {
+       int length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
+
+
diff --git a/Project/Gtk.vala.c b/Project/Gtk.vala.c
new file mode 100644 (file)
index 0000000..d30deae
--- /dev/null
@@ -0,0 +1,142 @@
+/* Gtk.vala.c generated by valac 0.24.0, the Vala compiler
+ * generated from Gtk.vala, do not modify */
+
+/*<Script type="text/javascript">*/
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+
+
+#define PROJECT_TYPE_PROJECT (project_project_get_type ())
+#define PROJECT_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROJECT_TYPE_PROJECT, ProjectProject))
+#define PROJECT_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+#define PROJECT_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROJECT_TYPE_PROJECT))
+#define PROJECT_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROJECT_TYPE_PROJECT))
+#define PROJECT_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+
+typedef struct _ProjectProject ProjectProject;
+typedef struct _ProjectProjectClass ProjectProjectClass;
+typedef struct _ProjectProjectPrivate ProjectProjectPrivate;
+
+#define JS_RENDER_TYPE_JS_RENDER (js_render_js_render_get_type ())
+#define JS_RENDER_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRender))
+#define JS_RENDER_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+#define JS_RENDER_IS_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_IS_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_JS_RENDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+
+typedef struct _JsRenderJsRender JsRenderJsRender;
+typedef struct _JsRenderJsRenderClass JsRenderJsRenderClass;
+
+#define PROJECT_TYPE_GTK (project_gtk_get_type ())
+#define PROJECT_GTK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROJECT_TYPE_GTK, ProjectGtk))
+#define PROJECT_GTK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROJECT_TYPE_GTK, ProjectGtkClass))
+#define PROJECT_IS_GTK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROJECT_TYPE_GTK))
+#define PROJECT_IS_GTK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROJECT_TYPE_GTK))
+#define PROJECT_GTK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROJECT_TYPE_GTK, ProjectGtkClass))
+
+typedef struct _ProjectGtk ProjectGtk;
+typedef struct _ProjectGtkClass ProjectGtkClass;
+typedef struct _ProjectGtkPrivate ProjectGtkPrivate;
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+struct _ProjectProject {
+       GTypeInstance parent_instance;
+       volatile int ref_count;
+       ProjectProjectPrivate * priv;
+       gchar* id;
+       gchar* fn;
+       gchar* name;
+       GeeHashMap* paths;
+       GList* files;
+       gchar* xtype;
+};
+
+struct _ProjectProjectClass {
+       GTypeClass parent_class;
+       void (*finalize) (ProjectProject *self);
+};
+
+struct _ProjectGtk {
+       ProjectProject parent_instance;
+       ProjectGtkPrivate * priv;
+};
+
+struct _ProjectGtkClass {
+       ProjectProjectClass parent_class;
+};
+
+
+extern gint project_gtk_id;
+gint project_gtk_id = 1;
+static gpointer project_gtk_parent_class = NULL;
+
+gpointer project_project_ref (gpointer instance);
+void project_project_unref (gpointer instance);
+GParamSpec* project_param_spec_project (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void project_value_set_project (GValue* value, gpointer v_object);
+void project_value_take_project (GValue* value, gpointer v_object);
+gpointer project_value_get_project (const GValue* value);
+GType project_project_get_type (void) G_GNUC_CONST;
+GType js_render_js_render_get_type (void) G_GNUC_CONST;
+GType project_gtk_get_type (void) G_GNUC_CONST;
+enum  {
+       PROJECT_GTK_DUMMY_PROPERTY
+};
+static ProjectGtk* project_gtk_new (const gchar* path);
+static ProjectGtk* project_gtk_construct (GType object_type, const gchar* path);
+ProjectProject* project_project_new (const gchar* path);
+ProjectProject* project_project_construct (GType object_type, const gchar* path);
+
+
+static ProjectGtk* project_gtk_construct (GType object_type, const gchar* path) {
+       ProjectGtk* self = NULL;
+       const gchar* _tmp0_ = NULL;
+       gint _tmp1_ = 0;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       g_return_val_if_fail (path != NULL, NULL);
+       _tmp0_ = path;
+       self = (ProjectGtk*) project_project_construct (object_type, _tmp0_);
+       _tmp1_ = project_gtk_id;
+       project_gtk_id = _tmp1_ + 1;
+       _tmp2_ = g_strdup_printf ("project-gtk-%d", _tmp1_);
+       _g_free0 (((ProjectProject*) self)->id);
+       ((ProjectProject*) self)->id = _tmp2_;
+       _tmp3_ = g_strdup ("Gtk");
+       _g_free0 (((ProjectProject*) self)->xtype);
+       ((ProjectProject*) self)->xtype = _tmp3_;
+       return self;
+}
+
+
+static ProjectGtk* project_gtk_new (const gchar* path) {
+       return project_gtk_construct (PROJECT_TYPE_GTK, path);
+}
+
+
+static void project_gtk_class_init (ProjectGtkClass * klass) {
+       project_gtk_parent_class = g_type_class_peek_parent (klass);
+}
+
+
+static void project_gtk_instance_init (ProjectGtk * self) {
+}
+
+
+GType project_gtk_get_type (void) {
+       static volatile gsize project_gtk_type_id__volatile = 0;
+       if (g_once_init_enter (&project_gtk_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (ProjectGtkClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) project_gtk_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProjectGtk), 0, (GInstanceInitFunc) project_gtk_instance_init, NULL };
+               GType project_gtk_type_id;
+               project_gtk_type_id = g_type_register_static (PROJECT_TYPE_PROJECT, "ProjectGtk", &g_define_type_info, 0);
+               g_once_init_leave (&project_gtk_type_id__volatile, project_gtk_type_id);
+       }
+       return project_gtk_type_id__volatile;
+}
+
+
+
diff --git a/Project/Project.vala.c b/Project/Project.vala.c
new file mode 100644 (file)
index 0000000..90e1570
--- /dev/null
@@ -0,0 +1,1142 @@
+/* Project.vala.c generated by valac 0.24.0, the Vala compiler
+ * generated from Project.vala, do not modify */
+
+/*<Script type="text/javascript">*/
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+#include <json-glib/json-glib.h>
+#include <gio/gio.h>
+#include <glib/gstdio.h>
+#include <gobject/gvaluecollector.h>
+
+
+#define PROJECT_TYPE_PROJECT (project_project_get_type ())
+#define PROJECT_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROJECT_TYPE_PROJECT, ProjectProject))
+#define PROJECT_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+#define PROJECT_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROJECT_TYPE_PROJECT))
+#define PROJECT_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROJECT_TYPE_PROJECT))
+#define PROJECT_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+
+typedef struct _ProjectProject ProjectProject;
+typedef struct _ProjectProjectClass ProjectProjectClass;
+typedef struct _ProjectProjectPrivate ProjectProjectPrivate;
+
+#define JS_RENDER_TYPE_JS_RENDER (js_render_js_render_get_type ())
+#define JS_RENDER_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRender))
+#define JS_RENDER_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+#define JS_RENDER_IS_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_IS_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_JS_RENDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+
+typedef struct _JsRenderJsRender JsRenderJsRender;
+typedef struct _JsRenderJsRenderClass JsRenderJsRenderClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL)))
+#define __vala_JsonNode_free0(var) ((var == NULL) ? NULL : (var = (_vala_JsonNode_free (var), NULL)))
+typedef struct _JsRenderJsRenderPrivate JsRenderJsRenderPrivate;
+
+#define JS_RENDER_TYPE_NODE (js_render_node_get_type ())
+#define JS_RENDER_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_NODE, JsRenderNode))
+#define JS_RENDER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_NODE, JsRenderNodeClass))
+#define JS_RENDER_IS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_NODE))
+#define JS_RENDER_IS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_NODE))
+#define JS_RENDER_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_NODE, JsRenderNodeClass))
+
+typedef struct _JsRenderNode JsRenderNode;
+typedef struct _JsRenderNodeClass JsRenderNodeClass;
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#define __g_list_free__g_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_free0_ (var), NULL)))
+typedef struct _ProjectParamSpecProject ProjectParamSpecProject;
+
+struct _ProjectProject {
+       GTypeInstance parent_instance;
+       volatile int ref_count;
+       ProjectProjectPrivate * priv;
+       gchar* id;
+       gchar* fn;
+       gchar* name;
+       GeeHashMap* paths;
+       GList* files;
+       gchar* xtype;
+};
+
+struct _ProjectProjectClass {
+       GTypeClass parent_class;
+       void (*finalize) (ProjectProject *self);
+};
+
+struct _JsRenderJsRender {
+       GObject parent_instance;
+       JsRenderJsRenderPrivate * priv;
+       GList* doubleStringProps;
+       gchar* id;
+       gchar* name;
+       gchar* fullname;
+       gchar* path;
+       gchar* parent;
+       gchar* title;
+       gchar* permname;
+       gchar* modOrder;
+       gchar* xtype;
+       ProjectProject* project;
+       JsRenderNode* tree;
+       GList* cn;
+       gboolean hasParent;
+};
+
+struct _JsRenderJsRenderClass {
+       GObjectClass parent_class;
+};
+
+struct _ProjectParamSpecProject {
+       GParamSpec parent_instance;
+};
+
+
+static gpointer project_project_parent_class = NULL;
+
+gpointer project_project_ref (gpointer instance);
+void project_project_unref (gpointer instance);
+GParamSpec* project_param_spec_project (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void project_value_set_project (GValue* value, gpointer v_object);
+void project_value_take_project (GValue* value, gpointer v_object);
+gpointer project_value_get_project (const GValue* value);
+GType project_project_get_type (void) G_GNUC_CONST;
+GType js_render_js_render_get_type (void) G_GNUC_CONST;
+enum  {
+       PROJECT_PROJECT_DUMMY_PROPERTY
+};
+static void _g_object_unref0_ (gpointer var);
+static void _g_list_free__g_object_unref0_ (GList* self);
+ProjectProject* project_project_new (const gchar* path);
+ProjectProject* project_project_construct (GType object_type, const gchar* path);
+void project_project_scanDirs (ProjectProject* self);
+void project_project_onChanged (ProjectProject* self);
+gchar* project_project_toJSON (ProjectProject* self);
+static void _vala_JsonNode_free (JsonNode* self);
+gchar* project_project_getName (ProjectProject* self);
+GList* project_project_toTree (ProjectProject* self);
+gpointer js_render_node_ref (gpointer instance);
+void js_render_node_unref (gpointer instance);
+GParamSpec* js_render_param_spec_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void js_render_value_set_node (GValue* value, gpointer v_object);
+void js_render_value_take_node (GValue* value, gpointer v_object);
+gpointer js_render_value_get_node (const GValue* value);
+GType js_render_node_get_type (void) G_GNUC_CONST;
+static gint __lambda6_ (JsRenderJsRender* a, JsRenderJsRender* b);
+static gint ___lambda6__gcompare_func (gconstpointer a, gconstpointer b);
+JsRenderJsRender* project_project_getById (ProjectProject* self, const gchar* id);
+JsRenderJsRender* project_project_loadFileOnly (ProjectProject* self, const gchar* path);
+JsRenderJsRender* js_render_js_render_factory (const gchar* xt, ProjectProject* project, const gchar* path);
+JsRenderJsRender* project_project_create (ProjectProject* self, const gchar* filename);
+void js_render_js_render_save (JsRenderJsRender* self);
+void project_project_addFile (ProjectProject* self, JsRenderJsRender* pfile);
+void project_project_add (ProjectProject* self, const gchar* path, const gchar* type);
+void project_project_scanDir (ProjectProject* self, const gchar* dir, gint dp);
+static void _g_free0_ (gpointer var);
+static void _g_list_free__g_free0_ (GList* self);
+static void project_project_finalize (ProjectProject* obj);
+
+
+static void _g_object_unref0_ (gpointer var) {
+       (var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
+}
+
+
+static void _g_list_free__g_object_unref0_ (GList* self) {
+       g_list_foreach (self, (GFunc) _g_object_unref0_, NULL);
+       g_list_free (self);
+}
+
+
+ProjectProject* project_project_construct (GType object_type, const gchar* path) {
+       ProjectProject* self = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       g_return_val_if_fail (path != NULL, NULL);
+       self = (ProjectProject*) g_type_create_instance (object_type);
+       _tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
+       _g_object_unref0 (self->paths);
+       self->paths = _tmp0_;
+       __g_list_free__g_object_unref0_0 (self->files);
+       self->files = NULL;
+       project_project_scanDirs (self);
+       return self;
+}
+
+
+ProjectProject* project_project_new (const gchar* path) {
+       return project_project_construct (PROJECT_TYPE_PROJECT, path);
+}
+
+
+void project_project_onChanged (ProjectProject* self) {
+       g_return_if_fail (self != NULL);
+}
+
+
+static void _vala_JsonNode_free (JsonNode* self) {
+       g_boxed_free (json_node_get_type (), self);
+}
+
+
+gchar* project_project_toJSON (ProjectProject* self) {
+       gchar* result = NULL;
+       JsonBuilder* builder = NULL;
+       JsonBuilder* _tmp0_ = NULL;
+       JsonBuilder* _tmp1_ = NULL;
+       JsonBuilder* _tmp2_ = NULL;
+       JsonBuilder* _tmp3_ = NULL;
+       const gchar* _tmp4_ = NULL;
+       JsonBuilder* _tmp5_ = NULL;
+       JsonBuilder* _tmp6_ = NULL;
+       const gchar* _tmp7_ = NULL;
+       JsonBuilder* _tmp8_ = NULL;
+       JsonBuilder* _tmp9_ = NULL;
+       const gchar* _tmp10_ = NULL;
+       JsonBuilder* _tmp11_ = NULL;
+       JsonBuilder* _tmp12_ = NULL;
+       GeeMapIterator* iter = NULL;
+       GeeHashMap* _tmp13_ = NULL;
+       GeeMapIterator* _tmp14_ = NULL;
+       JsonBuilder* _tmp21_ = NULL;
+       JsonGenerator* generator = NULL;
+       JsonGenerator* _tmp22_ = NULL;
+       JsonNode* root = NULL;
+       JsonBuilder* _tmp23_ = NULL;
+       JsonNode* _tmp24_ = NULL;
+       gchar* _tmp25_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = json_builder_new ();
+       builder = _tmp0_;
+       _tmp1_ = builder;
+       json_builder_begin_object (_tmp1_);
+       _tmp2_ = builder;
+       json_builder_set_member_name (_tmp2_, "name");
+       _tmp3_ = builder;
+       _tmp4_ = self->name;
+       json_builder_add_string_value (_tmp3_, _tmp4_);
+       _tmp5_ = builder;
+       json_builder_set_member_name (_tmp5_, "fn");
+       _tmp6_ = builder;
+       _tmp7_ = self->fn;
+       json_builder_add_string_value (_tmp6_, _tmp7_);
+       _tmp8_ = builder;
+       json_builder_set_member_name (_tmp8_, "xtype");
+       _tmp9_ = builder;
+       _tmp10_ = self->xtype;
+       json_builder_add_string_value (_tmp9_, _tmp10_);
+       _tmp11_ = builder;
+       json_builder_set_member_name (_tmp11_, "paths");
+       _tmp12_ = builder;
+       json_builder_begin_array (_tmp12_);
+       _tmp13_ = self->paths;
+       _tmp14_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp13_);
+       iter = _tmp14_;
+       while (TRUE) {
+               GeeMapIterator* _tmp15_ = NULL;
+               gboolean _tmp16_ = FALSE;
+               JsonBuilder* _tmp17_ = NULL;
+               GeeMapIterator* _tmp18_ = NULL;
+               gpointer _tmp19_ = NULL;
+               gchar* _tmp20_ = NULL;
+               _tmp15_ = iter;
+               _tmp16_ = gee_map_iterator_next (_tmp15_);
+               if (!_tmp16_) {
+                       break;
+               }
+               _tmp17_ = builder;
+               _tmp18_ = iter;
+               _tmp19_ = gee_map_iterator_get_key (_tmp18_);
+               _tmp20_ = (gchar*) _tmp19_;
+               json_builder_add_string_value (_tmp17_, _tmp20_);
+               _g_free0 (_tmp20_);
+       }
+       _tmp21_ = builder;
+       json_builder_end_array (_tmp21_);
+       _tmp22_ = json_generator_new ();
+       generator = _tmp22_;
+       _tmp23_ = builder;
+       _tmp24_ = json_builder_get_root (_tmp23_);
+       root = _tmp24_;
+       json_generator_set_root (generator, root);
+       _tmp25_ = json_generator_to_data (generator, NULL);
+       result = _tmp25_;
+       __vala_JsonNode_free0 (root);
+       _g_object_unref0 (generator);
+       _g_object_unref0 (iter);
+       _g_object_unref0 (builder);
+       return result;
+}
+
+
+gchar* project_project_getName (ProjectProject* self) {
+       gchar* result = NULL;
+       GeeMapIterator* iter = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       GeeMapIterator* _tmp1_ = NULL;
+       gchar* _tmp9_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = self->paths;
+       _tmp1_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp0_);
+       iter = _tmp1_;
+       while (TRUE) {
+               GeeMapIterator* _tmp2_ = NULL;
+               gboolean _tmp3_ = FALSE;
+               GeeMapIterator* _tmp4_ = NULL;
+               gpointer _tmp5_ = NULL;
+               gchar* _tmp6_ = NULL;
+               gchar* _tmp7_ = NULL;
+               gchar* _tmp8_ = NULL;
+               _tmp2_ = iter;
+               _tmp3_ = gee_map_iterator_next (_tmp2_);
+               if (!_tmp3_) {
+                       break;
+               }
+               _tmp4_ = iter;
+               _tmp5_ = gee_map_iterator_get_key (_tmp4_);
+               _tmp6_ = (gchar*) _tmp5_;
+               _tmp7_ = g_path_get_basename (_tmp6_);
+               _tmp8_ = _tmp7_;
+               _g_free0 (_tmp6_);
+               result = _tmp8_;
+               _g_object_unref0 (iter);
+               return result;
+       }
+       _tmp9_ = g_strdup ("");
+       result = _tmp9_;
+       _g_object_unref0 (iter);
+       return result;
+}
+
+
+/**
+     *
+     * to tree - > should
+     */
+static gpointer _g_object_ref0 (gpointer self) {
+       return self ? g_object_ref (self) : NULL;
+}
+
+
+static gint __lambda6_ (JsRenderJsRender* a, JsRenderJsRender* b) {
+       gint result = 0;
+       gint _tmp0_ = 0;
+       JsRenderJsRender* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       JsRenderJsRender* _tmp3_ = NULL;
+       const gchar* _tmp4_ = NULL;
+       g_return_val_if_fail (a != NULL, 0);
+       g_return_val_if_fail (b != NULL, 0);
+       _tmp1_ = a;
+       _tmp2_ = _tmp1_->path;
+       _tmp3_ = b;
+       _tmp4_ = _tmp3_->path;
+       if (g_strcmp0 (_tmp2_, _tmp4_) > 0) {
+               _tmp0_ = 1;
+       } else {
+               _tmp0_ = -1;
+       }
+       result = _tmp0_;
+       return result;
+}
+
+
+static gint ___lambda6__gcompare_func (gconstpointer a, gconstpointer b) {
+       gint result;
+       result = __lambda6_ ((JsRenderJsRender*) a, (JsRenderJsRender*) b);
+       return result;
+}
+
+
+GList* project_project_toTree (ProjectProject* self) {
+       GList* result = NULL;
+       GeeHashMap* files = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       GeeMapIterator* iter = NULL;
+       GeeHashMap* _tmp22_ = NULL;
+       GeeMapIterator* _tmp23_ = NULL;
+       GList* ret = NULL;
+       GeeHashMap* _tmp44_ = NULL;
+       GeeMapIterator* _tmp45_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, JS_RENDER_TYPE_JS_RENDER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+       files = _tmp0_;
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp1_ = FALSE;
+                       _tmp1_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp3_ = 0;
+                               GList* _tmp4_ = NULL;
+                               guint _tmp5_ = 0U;
+                               JsRenderJsRender* fo = NULL;
+                               GList* _tmp6_ = NULL;
+                               gint _tmp7_ = 0;
+                               gconstpointer _tmp8_ = NULL;
+                               JsRenderJsRender* _tmp9_ = NULL;
+                               JsRenderJsRender* _tmp10_ = NULL;
+                               JsRenderJsRender* _tmp11_ = NULL;
+                               GList* _tmp12_ = NULL;
+                               gint _tmp13_ = 0;
+                               gconstpointer _tmp14_ = NULL;
+                               const gchar* _tmp15_ = NULL;
+                               gint _tmp16_ = 0;
+                               gint _tmp17_ = 0;
+                               if (!_tmp1_) {
+                                       gint _tmp2_ = 0;
+                                       _tmp2_ = i;
+                                       i = _tmp2_ + 1;
+                               }
+                               _tmp1_ = FALSE;
+                               _tmp3_ = i;
+                               _tmp4_ = self->files;
+                               _tmp5_ = g_list_length (_tmp4_);
+                               if (!(((guint) _tmp3_) < _tmp5_)) {
+                                       break;
+                               }
+                               _tmp6_ = self->files;
+                               _tmp7_ = i;
+                               _tmp8_ = g_list_nth_data (_tmp6_, (guint) _tmp7_);
+                               _tmp9_ = _g_object_ref0 ((JsRenderJsRender*) _tmp8_);
+                               fo = _tmp9_;
+                               _tmp10_ = fo;
+                               _tmp10_->hasParent = FALSE;
+                               _tmp11_ = fo;
+                               __g_list_free__g_object_unref0_0 (_tmp11_->cn);
+                               _tmp11_->cn = NULL;
+                               _tmp12_ = self->files;
+                               _tmp13_ = i;
+                               _tmp14_ = g_list_nth_data (_tmp12_, (guint) _tmp13_);
+                               _tmp15_ = ((JsRenderJsRender*) _tmp14_)->fullname;
+                               _tmp16_ = strlen (_tmp15_);
+                               _tmp17_ = _tmp16_;
+                               if (_tmp17_ > 0) {
+                                       GeeHashMap* _tmp18_ = NULL;
+                                       JsRenderJsRender* _tmp19_ = NULL;
+                                       const gchar* _tmp20_ = NULL;
+                                       JsRenderJsRender* _tmp21_ = NULL;
+                                       _tmp18_ = files;
+                                       _tmp19_ = fo;
+                                       _tmp20_ = _tmp19_->fullname;
+                                       _tmp21_ = fo;
+                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp18_, _tmp20_, _tmp21_);
+                               }
+                               _g_object_unref0 (fo);
+                       }
+               }
+       }
+       _tmp22_ = files;
+       _tmp23_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp22_);
+       iter = _tmp23_;
+       while (TRUE) {
+               GeeMapIterator* _tmp24_ = NULL;
+               gboolean _tmp25_ = FALSE;
+               JsRenderJsRender* f = NULL;
+               GeeMapIterator* _tmp26_ = NULL;
+               gpointer _tmp27_ = NULL;
+               gchar* par = NULL;
+               JsRenderJsRender* _tmp28_ = NULL;
+               const gchar* _tmp29_ = NULL;
+               gchar* _tmp30_ = NULL;
+               const gchar* _tmp31_ = NULL;
+               gint _tmp32_ = 0;
+               gint _tmp33_ = 0;
+               GeeHashMap* _tmp34_ = NULL;
+               const gchar* _tmp35_ = NULL;
+               gboolean _tmp36_ = FALSE;
+               GeeHashMap* _tmp37_ = NULL;
+               const gchar* _tmp38_ = NULL;
+               gpointer _tmp39_ = NULL;
+               JsRenderJsRender* _tmp40_ = NULL;
+               JsRenderJsRender* _tmp41_ = NULL;
+               JsRenderJsRender* _tmp42_ = NULL;
+               JsRenderJsRender* _tmp43_ = NULL;
+               _tmp24_ = iter;
+               _tmp25_ = gee_map_iterator_next (_tmp24_);
+               if (!_tmp25_) {
+                       break;
+               }
+               _tmp26_ = iter;
+               _tmp27_ = gee_map_iterator_get_value (_tmp26_);
+               f = (JsRenderJsRender*) _tmp27_;
+               _tmp28_ = f;
+               _tmp29_ = _tmp28_->parent;
+               _tmp30_ = g_strdup (_tmp29_);
+               par = _tmp30_;
+               _tmp31_ = par;
+               _tmp32_ = strlen (_tmp31_);
+               _tmp33_ = _tmp32_;
+               if (_tmp33_ < 1) {
+                       _g_free0 (par);
+                       _g_object_unref0 (f);
+                       continue;
+               }
+               _tmp34_ = files;
+               _tmp35_ = par;
+               _tmp36_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp34_, _tmp35_);
+               if (!_tmp36_) {
+                       _g_free0 (par);
+                       _g_object_unref0 (f);
+                       continue;
+               }
+               _tmp37_ = files;
+               _tmp38_ = par;
+               _tmp39_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp37_, _tmp38_);
+               _tmp40_ = (JsRenderJsRender*) _tmp39_;
+               _tmp41_ = f;
+               _tmp42_ = _g_object_ref0 (_tmp41_);
+               _tmp40_->cn = g_list_append (_tmp40_->cn, _tmp42_);
+               _g_object_unref0 (_tmp40_);
+               _tmp43_ = f;
+               _tmp43_->hasParent = TRUE;
+               _g_free0 (par);
+               _g_object_unref0 (f);
+       }
+       ret = NULL;
+       _tmp44_ = files;
+       _tmp45_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp44_);
+       _g_object_unref0 (iter);
+       iter = _tmp45_;
+       while (TRUE) {
+               GeeMapIterator* _tmp46_ = NULL;
+               gboolean _tmp47_ = FALSE;
+               JsRenderJsRender* f = NULL;
+               GeeMapIterator* _tmp48_ = NULL;
+               gpointer _tmp49_ = NULL;
+               JsRenderJsRender* _tmp50_ = NULL;
+               gboolean _tmp51_ = FALSE;
+               GeeHashMap* _tmp52_ = NULL;
+               JsRenderJsRender* _tmp53_ = NULL;
+               const gchar* _tmp54_ = NULL;
+               gboolean _tmp55_ = FALSE;
+               _tmp46_ = iter;
+               _tmp47_ = gee_map_iterator_next (_tmp46_);
+               if (!_tmp47_) {
+                       break;
+               }
+               _tmp48_ = iter;
+               _tmp49_ = gee_map_iterator_get_value (_tmp48_);
+               f = (JsRenderJsRender*) _tmp49_;
+               _tmp50_ = f;
+               _tmp51_ = _tmp50_->hasParent;
+               if (_tmp51_) {
+                       _g_object_unref0 (f);
+                       continue;
+               }
+               _tmp52_ = files;
+               _tmp53_ = f;
+               _tmp54_ = _tmp53_->fullname;
+               _tmp55_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp52_, _tmp54_);
+               if (_tmp55_) {
+                       JsRenderJsRender* _tmp56_ = NULL;
+                       JsRenderJsRender* _tmp57_ = NULL;
+                       _tmp56_ = f;
+                       _tmp57_ = _g_object_ref0 (_tmp56_);
+                       ret = g_list_append (ret, _tmp57_);
+               }
+               _g_object_unref0 (f);
+       }
+       ret = g_list_sort (ret, ___lambda6__gcompare_func);
+       result = ret;
+       _g_object_unref0 (iter);
+       _g_object_unref0 (files);
+       return result;
+}
+
+
+JsRenderJsRender* project_project_getById (ProjectProject* self, const gchar* id) {
+       JsRenderJsRender* result = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (id != NULL, NULL);
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp0_ = FALSE;
+                       _tmp0_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp2_ = 0;
+                               GList* _tmp3_ = NULL;
+                               guint _tmp4_ = 0U;
+                               JsRenderJsRender* f = NULL;
+                               GList* _tmp5_ = NULL;
+                               gint _tmp6_ = 0;
+                               gconstpointer _tmp7_ = NULL;
+                               JsRenderJsRender* _tmp8_ = NULL;
+                               JsRenderJsRender* _tmp9_ = NULL;
+                               const gchar* _tmp10_ = NULL;
+                               const gchar* _tmp11_ = NULL;
+                               if (!_tmp0_) {
+                                       gint _tmp1_ = 0;
+                                       _tmp1_ = i;
+                                       i = _tmp1_ + 1;
+                               }
+                               _tmp0_ = FALSE;
+                               _tmp2_ = i;
+                               _tmp3_ = self->files;
+                               _tmp4_ = g_list_length (_tmp3_);
+                               if (!(((guint) _tmp2_) < _tmp4_)) {
+                                       break;
+                               }
+                               _tmp5_ = self->files;
+                               _tmp6_ = i;
+                               _tmp7_ = g_list_nth_data (_tmp5_, (guint) _tmp6_);
+                               _tmp8_ = _g_object_ref0 ((JsRenderJsRender*) _tmp7_);
+                               f = _tmp8_;
+                               _tmp9_ = f;
+                               _tmp10_ = _tmp9_->id;
+                               _tmp11_ = id;
+                               if (g_strcmp0 (_tmp10_, _tmp11_) == 0) {
+                                       result = f;
+                                       return result;
+                               }
+                               _g_object_unref0 (f);
+                       }
+               }
+       }
+       result = NULL;
+       return result;
+}
+
+
+JsRenderJsRender* project_project_loadFileOnly (ProjectProject* self, const gchar* path) {
+       JsRenderJsRender* result = NULL;
+       gchar* xt = NULL;
+       const gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       JsRenderJsRender* _tmp3_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (path != NULL, NULL);
+       _tmp0_ = self->xtype;
+       _tmp1_ = g_strdup (_tmp0_);
+       xt = _tmp1_;
+       _tmp2_ = path;
+       _tmp3_ = js_render_js_render_factory (xt, self, _tmp2_);
+       result = _tmp3_;
+       _g_free0 (xt);
+       return result;
+}
+
+
+JsRenderJsRender* project_project_create (ProjectProject* self, const gchar* filename) {
+       JsRenderJsRender* result = NULL;
+       JsRenderJsRender* ret = NULL;
+       const gchar* _tmp0_ = NULL;
+       JsRenderJsRender* _tmp1_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (filename != NULL, NULL);
+       _tmp0_ = filename;
+       _tmp1_ = project_project_loadFileOnly (self, _tmp0_);
+       ret = _tmp1_;
+       js_render_js_render_save (ret);
+       project_project_addFile (self, ret);
+       result = ret;
+       return result;
+}
+
+
+void project_project_addFile (ProjectProject* self, JsRenderJsRender* pfile) {
+       JsRenderJsRender* _tmp0_ = NULL;
+       JsRenderJsRender* _tmp1_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (pfile != NULL);
+       _tmp0_ = pfile;
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+       self->files = g_list_append (self->files, _tmp1_);
+       project_project_onChanged (self);
+}
+
+
+void project_project_add (ProjectProject* self, const gchar* path, const gchar* type) {
+       GeeHashMap* _tmp0_ = NULL;
+       const gchar* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
+       const gchar* _tmp3_ = NULL;
+       const gchar* _tmp5_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (path != NULL);
+       g_return_if_fail (type != NULL);
+       _tmp0_ = self->paths;
+       _tmp1_ = path;
+       _tmp2_ = type;
+       gee_abstract_map_set ((GeeAbstractMap*) _tmp0_, _tmp1_, _tmp2_);
+       _tmp3_ = type;
+       if (g_strcmp0 (_tmp3_, "dir") == 0) {
+               const gchar* _tmp4_ = NULL;
+               _tmp4_ = path;
+               project_project_scanDir (self, _tmp4_, 0);
+       }
+       _tmp5_ = type;
+       if (g_strcmp0 (_tmp5_, "file") == 0) {
+               const gchar* _tmp6_ = NULL;
+               JsRenderJsRender* _tmp7_ = NULL;
+               _tmp6_ = path;
+               _tmp7_ = project_project_loadFileOnly (self, _tmp6_);
+               self->files = g_list_append (self->files, _tmp7_);
+       }
+       project_project_onChanged (self);
+}
+
+
+void project_project_scanDirs (ProjectProject* self) {
+       GeeMapIterator* iter = NULL;
+       GeeHashMap* _tmp0_ = NULL;
+       GeeMapIterator* _tmp1_ = NULL;
+       g_return_if_fail (self != NULL);
+       _tmp0_ = self->paths;
+       _tmp1_ = gee_abstract_map_map_iterator ((GeeAbstractMap*) _tmp0_);
+       iter = _tmp1_;
+       while (TRUE) {
+               GeeMapIterator* _tmp2_ = NULL;
+               gboolean _tmp3_ = FALSE;
+               GeeMapIterator* _tmp4_ = NULL;
+               gpointer _tmp5_ = NULL;
+               gchar* _tmp6_ = NULL;
+               gboolean _tmp7_ = FALSE;
+               GeeMapIterator* _tmp8_ = NULL;
+               gpointer _tmp9_ = NULL;
+               gchar* _tmp10_ = NULL;
+               _tmp2_ = iter;
+               _tmp3_ = gee_map_iterator_next (_tmp2_);
+               if (!_tmp3_) {
+                       break;
+               }
+               _tmp4_ = iter;
+               _tmp5_ = gee_map_iterator_get_value (_tmp4_);
+               _tmp6_ = (gchar*) _tmp5_;
+               _tmp7_ = g_strcmp0 (_tmp6_, "dir") != 0;
+               _g_free0 (_tmp6_);
+               if (_tmp7_) {
+                       continue;
+               }
+               _tmp8_ = iter;
+               _tmp9_ = gee_map_iterator_get_key (_tmp8_);
+               _tmp10_ = (gchar*) _tmp9_;
+               project_project_scanDir (self, _tmp10_, 0);
+               _g_free0 (_tmp10_);
+       }
+       _g_object_unref0 (iter);
+}
+
+
+static gchar string_get (const gchar* self, glong index) {
+       gchar result = '\0';
+       glong _tmp0_ = 0L;
+       gchar _tmp1_ = '\0';
+       g_return_val_if_fail (self != NULL, '\0');
+       _tmp0_ = index;
+       _tmp1_ = ((gchar*) self)[_tmp0_];
+       result = _tmp1_;
+       return result;
+}
+
+
+static void _g_free0_ (gpointer var) {
+       var = (g_free (var), NULL);
+}
+
+
+static void _g_list_free__g_free0_ (GList* self) {
+       g_list_foreach (self, (GFunc) _g_free0_, NULL);
+       g_list_free (self);
+}
+
+
+void project_project_scanDir (ProjectProject* self, const gchar* dir, gint dp) {
+       gint _tmp0_ = 0;
+       GList* subs = NULL;
+       GFile* f = NULL;
+       const gchar* _tmp1_ = NULL;
+       GFile* _tmp2_ = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (dir != NULL);
+       _tmp0_ = dp;
+       if (_tmp0_ > 5) {
+               return;
+       }
+       subs = NULL;
+       _tmp1_ = dir;
+       _tmp2_ = g_file_new_for_path (_tmp1_);
+       f = _tmp2_;
+       {
+               GFileEnumerator* file_enum = NULL;
+               GFile* _tmp3_ = NULL;
+               GFileEnumerator* _tmp4_ = NULL;
+               GFileInfo* next_file = NULL;
+               _tmp3_ = f;
+               _tmp4_ = g_file_enumerate_children (_tmp3_, G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, G_FILE_QUERY_INFO_NONE, NULL, &_inner_error_);
+               file_enum = _tmp4_;
+               if (_inner_error_ != NULL) {
+                       goto __catch8_g_error;
+               }
+               while (TRUE) {
+                       GFileInfo* _tmp5_ = NULL;
+                       GFileEnumerator* _tmp6_ = NULL;
+                       GFileInfo* _tmp7_ = NULL;
+                       GFileInfo* _tmp8_ = NULL;
+                       GFileInfo* _tmp9_ = NULL;
+                       gchar* fn = NULL;
+                       GFileInfo* _tmp10_ = NULL;
+                       const gchar* _tmp11_ = NULL;
+                       gchar* _tmp12_ = NULL;
+                       const gchar* _tmp13_ = NULL;
+                       gchar _tmp14_ = '\0';
+                       const gchar* _tmp15_ = NULL;
+                       gchar* _tmp16_ = NULL;
+                       gchar* _tmp17_ = NULL;
+                       const gchar* _tmp18_ = NULL;
+                       gchar* _tmp19_ = NULL;
+                       gchar* _tmp20_ = NULL;
+                       gboolean _tmp21_ = FALSE;
+                       gboolean _tmp22_ = FALSE;
+                       const gchar* _tmp28_ = NULL;
+                       gboolean _tmp29_ = FALSE;
+                       gchar* xt = NULL;
+                       const gchar* _tmp30_ = NULL;
+                       gchar* _tmp31_ = NULL;
+                       const gchar* _tmp32_ = NULL;
+                       const gchar* _tmp33_ = NULL;
+                       gchar* _tmp34_ = NULL;
+                       gchar* _tmp35_ = NULL;
+                       const gchar* _tmp36_ = NULL;
+                       gchar* _tmp37_ = NULL;
+                       gchar* _tmp38_ = NULL;
+                       JsRenderJsRender* _tmp39_ = NULL;
+                       JsRenderJsRender* _tmp40_ = NULL;
+                       _tmp6_ = file_enum;
+                       _tmp7_ = g_file_enumerator_next_file (_tmp6_, NULL, &_inner_error_);
+                       _tmp5_ = _tmp7_;
+                       if (_inner_error_ != NULL) {
+                               _g_object_unref0 (next_file);
+                               _g_object_unref0 (file_enum);
+                               goto __catch8_g_error;
+                       }
+                       _tmp8_ = _tmp5_;
+                       _tmp5_ = NULL;
+                       _g_object_unref0 (next_file);
+                       next_file = _tmp8_;
+                       _tmp9_ = next_file;
+                       if (!(_tmp9_ != NULL)) {
+                               _g_object_unref0 (_tmp5_);
+                               break;
+                       }
+                       _tmp10_ = next_file;
+                       _tmp11_ = g_file_info_get_display_name (_tmp10_);
+                       _tmp12_ = g_strdup (_tmp11_);
+                       fn = _tmp12_;
+                       _tmp13_ = fn;
+                       _tmp14_ = string_get (_tmp13_, (glong) 0);
+                       if (_tmp14_ == '.') {
+                               _g_free0 (fn);
+                               _g_object_unref0 (_tmp5_);
+                               continue;
+                       }
+                       _tmp15_ = dir;
+                       _tmp16_ = g_strconcat (_tmp15_, "/", NULL);
+                       _tmp17_ = _tmp16_;
+                       _tmp18_ = fn;
+                       _tmp19_ = g_strconcat (_tmp17_, _tmp18_, NULL);
+                       _tmp20_ = _tmp19_;
+                       _tmp21_ = g_file_test (_tmp20_, G_FILE_TEST_IS_DIR);
+                       _tmp22_ = _tmp21_;
+                       _g_free0 (_tmp20_);
+                       _g_free0 (_tmp17_);
+                       if (_tmp22_) {
+                               const gchar* _tmp23_ = NULL;
+                               gchar* _tmp24_ = NULL;
+                               gchar* _tmp25_ = NULL;
+                               const gchar* _tmp26_ = NULL;
+                               gchar* _tmp27_ = NULL;
+                               _tmp23_ = dir;
+                               _tmp24_ = g_strconcat (_tmp23_, "/", NULL);
+                               _tmp25_ = _tmp24_;
+                               _tmp26_ = fn;
+                               _tmp27_ = g_strconcat (_tmp25_, _tmp26_, NULL);
+                               subs = g_list_append (subs, _tmp27_);
+                               _g_free0 (_tmp25_);
+                               _g_free0 (fn);
+                               _g_object_unref0 (_tmp5_);
+                               continue;
+                       }
+                       _tmp28_ = fn;
+                       _tmp29_ = g_regex_match_simple ("\\.bjs$", _tmp28_, 0, 0);
+                       if (!_tmp29_) {
+                               _g_free0 (fn);
+                               _g_object_unref0 (_tmp5_);
+                               continue;
+                       }
+                       _tmp30_ = self->xtype;
+                       _tmp31_ = g_strdup (_tmp30_);
+                       xt = _tmp31_;
+                       _tmp32_ = xt;
+                       _tmp33_ = dir;
+                       _tmp34_ = g_strconcat (_tmp33_, "/", NULL);
+                       _tmp35_ = _tmp34_;
+                       _tmp36_ = fn;
+                       _tmp37_ = g_strconcat (_tmp35_, _tmp36_, NULL);
+                       _tmp38_ = _tmp37_;
+                       _tmp39_ = js_render_js_render_factory (_tmp32_, self, _tmp38_);
+                       _tmp40_ = _tmp39_;
+                       _g_object_unref0 (_tmp40_);
+                       _g_free0 (_tmp38_);
+                       _g_free0 (_tmp35_);
+                       _g_free0 (xt);
+                       _g_free0 (fn);
+                       _g_object_unref0 (_tmp5_);
+               }
+               _g_object_unref0 (next_file);
+               _g_object_unref0 (file_enum);
+       }
+       goto __finally8;
+       __catch8_g_error:
+       {
+               GError* e = NULL;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               g_print ("Project::scanDirs failed");
+               _g_error_free0 (e);
+       }
+       __finally8:
+       if (_inner_error_ != NULL) {
+               _g_object_unref0 (f);
+               __g_list_free__g_free0_0 (subs);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return;
+       }
+       {
+               gint i = 0;
+               i = 0;
+               {
+                       gboolean _tmp41_ = FALSE;
+                       _tmp41_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp43_ = 0;
+                               GList* _tmp44_ = NULL;
+                               guint _tmp45_ = 0U;
+                               GList* _tmp46_ = NULL;
+                               gint _tmp47_ = 0;
+                               gconstpointer _tmp48_ = NULL;
+                               gint _tmp49_ = 0;
+                               if (!_tmp41_) {
+                                       gint _tmp42_ = 0;
+                                       _tmp42_ = i;
+                                       i = _tmp42_ + 1;
+                               }
+                               _tmp41_ = FALSE;
+                               _tmp43_ = i;
+                               _tmp44_ = subs;
+                               _tmp45_ = g_list_length (_tmp44_);
+                               if (!(((guint) _tmp43_) < _tmp45_)) {
+                                       break;
+                               }
+                               _tmp46_ = subs;
+                               _tmp47_ = i;
+                               _tmp48_ = g_list_nth_data (_tmp46_, (guint) _tmp47_);
+                               _tmp49_ = dp;
+                               project_project_scanDir (self, (const gchar*) _tmp48_, _tmp49_ + 1);
+                       }
+               }
+       }
+       _g_object_unref0 (f);
+       __g_list_free__g_free0_0 (subs);
+}
+
+
+static void project_value_project_init (GValue* value) {
+       value->data[0].v_pointer = NULL;
+}
+
+
+static void project_value_project_free_value (GValue* value) {
+       if (value->data[0].v_pointer) {
+               project_project_unref (value->data[0].v_pointer);
+       }
+}
+
+
+static void project_value_project_copy_value (const GValue* src_value, GValue* dest_value) {
+       if (src_value->data[0].v_pointer) {
+               dest_value->data[0].v_pointer = project_project_ref (src_value->data[0].v_pointer);
+       } else {
+               dest_value->data[0].v_pointer = NULL;
+       }
+}
+
+
+static gpointer project_value_project_peek_pointer (const GValue* value) {
+       return value->data[0].v_pointer;
+}
+
+
+static gchar* project_value_project_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+       if (collect_values[0].v_pointer) {
+               ProjectProject* object;
+               object = collect_values[0].v_pointer;
+               if (object->parent_instance.g_class == NULL) {
+                       return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+               } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
+                       return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+               }
+               value->data[0].v_pointer = project_project_ref (object);
+       } else {
+               value->data[0].v_pointer = NULL;
+       }
+       return NULL;
+}
+
+
+static gchar* project_value_project_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+       ProjectProject** object_p;
+       object_p = collect_values[0].v_pointer;
+       if (!object_p) {
+               return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
+       }
+       if (!value->data[0].v_pointer) {
+               *object_p = NULL;
+       } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
+               *object_p = value->data[0].v_pointer;
+       } else {
+               *object_p = project_project_ref (value->data[0].v_pointer);
+       }
+       return NULL;
+}
+
+
+GParamSpec* project_param_spec_project (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
+       ProjectParamSpecProject* spec;
+       g_return_val_if_fail (g_type_is_a (object_type, PROJECT_TYPE_PROJECT), NULL);
+       spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
+       G_PARAM_SPEC (spec)->value_type = object_type;
+       return G_PARAM_SPEC (spec);
+}
+
+
+gpointer project_value_get_project (const GValue* value) {
+       g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROJECT_TYPE_PROJECT), NULL);
+       return value->data[0].v_pointer;
+}
+
+
+void project_value_set_project (GValue* value, gpointer v_object) {
+       ProjectProject* old;
+       g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROJECT_TYPE_PROJECT));
+       old = value->data[0].v_pointer;
+       if (v_object) {
+               g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PROJECT_TYPE_PROJECT));
+               g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+               value->data[0].v_pointer = v_object;
+               project_project_ref (value->data[0].v_pointer);
+       } else {
+               value->data[0].v_pointer = NULL;
+       }
+       if (old) {
+               project_project_unref (old);
+       }
+}
+
+
+void project_value_take_project (GValue* value, gpointer v_object) {
+       ProjectProject* old;
+       g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROJECT_TYPE_PROJECT));
+       old = value->data[0].v_pointer;
+       if (v_object) {
+               g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PROJECT_TYPE_PROJECT));
+               g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+               value->data[0].v_pointer = v_object;
+       } else {
+               value->data[0].v_pointer = NULL;
+       }
+       if (old) {
+               project_project_unref (old);
+       }
+}
+
+
+static void project_project_class_init (ProjectProjectClass * klass) {
+       project_project_parent_class = g_type_class_peek_parent (klass);
+       PROJECT_PROJECT_CLASS (klass)->finalize = project_project_finalize;
+}
+
+
+static void project_project_instance_init (ProjectProject * self) {
+       gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       _tmp0_ = g_strdup ("");
+       self->id = _tmp0_;
+       _tmp1_ = g_strdup ("");
+       self->fn = _tmp1_;
+       _tmp2_ = g_strdup ("");
+       self->name = _tmp2_;
+       _tmp3_ = g_strdup ("");
+       self->xtype = _tmp3_;
+       self->ref_count = 1;
+}
+
+
+static void project_project_finalize (ProjectProject* obj) {
+       ProjectProject * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROJECT_TYPE_PROJECT, ProjectProject);
+       _g_free0 (self->id);
+       _g_free0 (self->fn);
+       _g_free0 (self->name);
+       _g_object_unref0 (self->paths);
+       __g_list_free__g_object_unref0_0 (self->files);
+       _g_free0 (self->xtype);
+}
+
+
+/**
+ * Project Object
+ * 
+ * Projects can only contain one directory... - it can import other projects..(later)
+ * 
+ * we need to sort out that - paths is currently a key/value array..
+ * 
+ * 
+ * 
+ */
+GType project_project_get_type (void) {
+       static volatile gsize project_project_type_id__volatile = 0;
+       if (g_once_init_enter (&project_project_type_id__volatile)) {
+               static const GTypeValueTable g_define_type_value_table = { project_value_project_init, project_value_project_free_value, project_value_project_copy_value, project_value_project_peek_pointer, "p", project_value_project_collect_value, "p", project_value_project_lcopy_value };
+               static const GTypeInfo g_define_type_info = { sizeof (ProjectProjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) project_project_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProjectProject), 0, (GInstanceInitFunc) project_project_instance_init, &g_define_type_value_table };
+               static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
+               GType project_project_type_id;
+               project_project_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ProjectProject", &g_define_type_info, &g_define_type_fundamental_info, 0);
+               g_once_init_leave (&project_project_type_id__volatile, project_project_type_id);
+       }
+       return project_project_type_id__volatile;
+}
+
+
+gpointer project_project_ref (gpointer instance) {
+       ProjectProject* self;
+       self = instance;
+       g_atomic_int_inc (&self->ref_count);
+       return instance;
+}
+
+
+void project_project_unref (gpointer instance) {
+       ProjectProject* self;
+       self = instance;
+       if (g_atomic_int_dec_and_test (&self->ref_count)) {
+               PROJECT_PROJECT_GET_CLASS (self)->finalize (self);
+               g_type_free_instance ((GTypeInstance *) self);
+       }
+}
+
+
+
diff --git a/Project/Roo.vala.c b/Project/Roo.vala.c
new file mode 100644 (file)
index 0000000..36c1ece
--- /dev/null
@@ -0,0 +1,141 @@
+/* Roo.vala.c generated by valac 0.24.0, the Vala compiler
+ * generated from Roo.vala, do not modify */
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+
+
+#define PROJECT_TYPE_PROJECT (project_project_get_type ())
+#define PROJECT_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROJECT_TYPE_PROJECT, ProjectProject))
+#define PROJECT_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+#define PROJECT_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROJECT_TYPE_PROJECT))
+#define PROJECT_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROJECT_TYPE_PROJECT))
+#define PROJECT_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROJECT_TYPE_PROJECT, ProjectProjectClass))
+
+typedef struct _ProjectProject ProjectProject;
+typedef struct _ProjectProjectClass ProjectProjectClass;
+typedef struct _ProjectProjectPrivate ProjectProjectPrivate;
+
+#define JS_RENDER_TYPE_JS_RENDER (js_render_js_render_get_type ())
+#define JS_RENDER_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRender))
+#define JS_RENDER_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+#define JS_RENDER_IS_JS_RENDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_IS_JS_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JS_RENDER_TYPE_JS_RENDER))
+#define JS_RENDER_JS_RENDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JS_RENDER_TYPE_JS_RENDER, JsRenderJsRenderClass))
+
+typedef struct _JsRenderJsRender JsRenderJsRender;
+typedef struct _JsRenderJsRenderClass JsRenderJsRenderClass;
+
+#define PROJECT_TYPE_ROO (project_roo_get_type ())
+#define PROJECT_ROO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROJECT_TYPE_ROO, ProjectRoo))
+#define PROJECT_ROO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROJECT_TYPE_ROO, ProjectRooClass))
+#define PROJECT_IS_ROO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROJECT_TYPE_ROO))
+#define PROJECT_IS_ROO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROJECT_TYPE_ROO))
+#define PROJECT_ROO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROJECT_TYPE_ROO, ProjectRooClass))
+
+typedef struct _ProjectRoo ProjectRoo;
+typedef struct _ProjectRooClass ProjectRooClass;
+typedef struct _ProjectRooPrivate ProjectRooPrivate;
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+struct _ProjectProject {
+       GTypeInstance parent_instance;
+       volatile int ref_count;
+       ProjectProjectPrivate * priv;
+       gchar* id;
+       gchar* fn;
+       gchar* name;
+       GeeHashMap* paths;
+       GList* files;
+       gchar* xtype;
+};
+
+struct _ProjectProjectClass {
+       GTypeClass parent_class;
+       void (*finalize) (ProjectProject *self);
+};
+
+struct _ProjectRoo {
+       ProjectProject parent_instance;
+       ProjectRooPrivate * priv;
+};
+
+struct _ProjectRooClass {
+       ProjectProjectClass parent_class;
+};
+
+
+extern gint rid;
+gint rid = 1;
+static gpointer project_roo_parent_class = NULL;
+
+gpointer project_project_ref (gpointer instance);
+void project_project_unref (gpointer instance);
+GParamSpec* project_param_spec_project (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void project_value_set_project (GValue* value, gpointer v_object);
+void project_value_take_project (GValue* value, gpointer v_object);
+gpointer project_value_get_project (const GValue* value);
+GType project_project_get_type (void) G_GNUC_CONST;
+GType js_render_js_render_get_type (void) G_GNUC_CONST;
+GType project_roo_get_type (void) G_GNUC_CONST;
+enum  {
+       PROJECT_ROO_DUMMY_PROPERTY
+};
+static ProjectRoo* project_roo_new (const gchar* path);
+static ProjectRoo* project_roo_construct (GType object_type, const gchar* path);
+ProjectProject* project_project_new (const gchar* path);
+ProjectProject* project_project_construct (GType object_type, const gchar* path);
+
+
+static ProjectRoo* project_roo_construct (GType object_type, const gchar* path) {
+       ProjectRoo* self = NULL;
+       const gchar* _tmp0_ = NULL;
+       gint _tmp1_ = 0;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       g_return_val_if_fail (path != NULL, NULL);
+       _tmp0_ = path;
+       self = (ProjectRoo*) project_project_construct (object_type, _tmp0_);
+       _tmp1_ = rid;
+       rid = _tmp1_ + 1;
+       _tmp2_ = g_strdup_printf ("project-roo-%d", _tmp1_);
+       _g_free0 (((ProjectProject*) self)->id);
+       ((ProjectProject*) self)->id = _tmp2_;
+       _tmp3_ = g_strdup ("Roo");
+       _g_free0 (((ProjectProject*) self)->xtype);
+       ((ProjectProject*) self)->xtype = _tmp3_;
+       return self;
+}
+
+
+static ProjectRoo* project_roo_new (const gchar* path) {
+       return project_roo_construct (PROJECT_TYPE_ROO, path);
+}
+
+
+static void project_roo_class_init (ProjectRooClass * klass) {
+       project_roo_parent_class = g_type_class_peek_parent (klass);
+}
+
+
+static void project_roo_instance_init (ProjectRoo * self) {
+}
+
+
+GType project_roo_get_type (void) {
+       static volatile gsize project_roo_type_id__volatile = 0;
+       if (g_once_init_enter (&project_roo_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (ProjectRooClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) project_roo_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProjectRoo), 0, (GInstanceInitFunc) project_roo_instance_init, NULL };
+               GType project_roo_type_id;
+               project_roo_type_id = g_type_register_static (PROJECT_TYPE_PROJECT, "ProjectRoo", &g_define_type_info, 0);
+               g_once_init_leave (&project_roo_type_id__volatile, project_roo_type_id);
+       }
+       return project_roo_type_id__volatile;
+}
+
+
+